【问题标题】:Pushing files to origin repo将文件推送到原始仓库
【发布时间】:2016-02-04 19:34:34
【问题描述】:

我今天刚开始使用 Git,如果这是一个超级基本的问题,我很抱歉。我似乎无法完全理解所有这些新术语来设置我的配置。 我有 2 台服务器:远程和本地。远程是我正在处理的站点需要驻留的网络位置;它也与同事共享。 local 是我机器的 iis 网络服务器上的一个文件夹。

我已经在我的远程服务器上创建了一个 repo。这是文件需要“生存”的地方,所以我没有使用init --bare。我提交了初始配置。然后,我在本地机器上创建了该 repo 的克隆,我将用作本地工作区。我添加了一个新文件 (test.html),将其提交给 master,然后尝试推送到克隆的源 (git push origin master)。推送时未显示错误(我已签入原始存储库上的虚拟分支,因此不会发生冲突),但文件未显示在远程服务器上。

这里的目的是进行设置,以便我在本地完成大部分工作,然后将更改推送到可以作为 UAT 的服务器的远程位置,之后它们将再次被推送到生产环境中。但我似乎无法通过这个初始配置。

非常感谢您在此提供的任何帮助。干杯!

【问题讨论】:

  • git-scm.com/book/en/v2 是一本免费的在线书籍。我会向任何人推荐至少前 3 章。那么,您想将您的项目推送到两个不同的服务器吗?我会看一下书中关于添加遥控器的第 2.5 节:git-scm.com/book/ch2-5.html
  • 谢谢@jlents 我实际上已经通读过了(这就是我能够做到的。)不幸的是,这并不能帮助我理解为什么我的文件没有复制过来当我从本地推送到远程时。
  • 我认为答案就在这里:scm.com/book/ch2-5.html#Adding-Remote-Repositories。您只能拥有一个别名为“origin”的远程位置。您需要添加另一个遥控器(命名为您想要的任何名称)并将其推送到该遥控器。至少,这就是我从你的情况中解释的(你希望有 2 个远程位置来推送东西)。

标签: git server development-environment


【解决方案1】:

我添加了一个新文件 (test.html),将其提交给 master,然后尝试推送到克隆的源 (git push origin master)。推送时未显示错误(我已签入原始存储库上的虚拟分支,因此不会发生冲突),但文件未显示在远程服务器上。

既然您在服务器上签入了一个虚拟分支,并且您将 test.html 添加到 master,那么您当然不会在服务器上看到 test.html:该文件不存在于虚拟分支中,仅存在于 master 上。如果您在服务器上键入git checkout master,您应该会看到该文件。

但是,您似乎想要做的是让服务器上工作目录中的文件在您推送到它时自动更新。不幸的是,这是不可能的。工作目录仅作为显式检出或拉取服务器的结果而更新。

您可能想要做的是调查构建服务器软件,该软件会侦听 git 存储库,并在推送时执行操作(例如将文件复制到 Web 服务器)。或者您可能想查看 git hooks,它也可以响应推送。

在任何情况下,您都希望您推送/拉入/提取的“主”git 存储库成为一个裸存储库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2020-01-03
    • 2018-09-13
    • 2017-07-19
    相关资源
    最近更新 更多