【问题标题】:"Proper" way to pull git "production branch" to production server将git“生产分支”拉到生产服务器的“正确”方式
【发布时间】:2012-10-19 14:12:53
【问题描述】:

我对 Git 很陌生,并且已经阅读了 Pro Git 书籍 @http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging。我的问题是我今天所做的是否是使用生产服务器和远程 Git 存储库的首选方式。

我将我的 repo 托管在 GitHub 上,使用三个远程分支:开发 -> 测试 -> 主控。

只要 'testing' 分支被验证可以工作,我就在本地 git merge'master' 和 'testing'(快进?),然后 git push'master' 到 GitHub。

在生产服务器(/opt/www/url.com/)上我已经完成了:

git init
git remote add origin https://github.com/.....
git pull origin master

现在每次我想更新主人我都会发出git pull

git pull origin master

生产永远不会将任何更改推送到远程。并且不会发生本地更改。我做对了吗?如果不是,将更新推送到生产环境的首选方式是什么?

编辑#1:我不想管理生产服务器上的任何冲突,这是我现在所面临的(不知何故我做错了)。我只是想拉下最新更新的 master 分支,然后切换到它。

【问题讨论】:

    标签: git github git-pull git-remote


    【解决方案1】:

    执行 'git pull' 对此非常普通,但还有一种更安全的方法。

    如果您不进行本地更改,不会有任何冲突。但是,如果您只想获取最新的树,并消除任何本地更改,那么有一种更好的方法,它可以忽略本地的任何内容:

    首先,您需要从服务器获取最新版本。为此,我们将使用:

    git fetch origin master
    

    这完成了“git pull”的前半部分。 (第二个是合并到您的本地 master 中,这是您遇到问题的地方)。

    Git 获取:

    1. 查找提交主机指向远程的内容
    2. 下载该提交以及它引用的所有您在本地没有的内容。
    3. 更新 origin/master ref 以指向该提交,以记住远程在其“master”版本上的位置。

    接下来,我们将简单地更新我们的本地“master”以指向同一个提交,并更新我们的工作树。

    为此,我们将使用:

    git reset --hard origin/master
    

    (这是假设您没有为远程仓库使用不同的名称,而不是默认的“来源”——如果您这样做了,请进行相应调整)。

    这实际上做了三件事:

    1. 更新您的本地 master 分支以指向您刚刚从远程获取的同一提交。
    2. 将该树加载到您的索引中
    3. 更新您的工作树以匹配索引。

    您现在有一个与远程匹配的本地主分支和树。

    但是还有一个步骤,就是清理剩下的任何东西,它不会被 git 跟踪。

    git clean -fdx
    

    将删除先前构建创建的所有文件并为您提供一个干净的环境。在任何情况下,您都应该将要保留的任何构建工件复制到其他位置。

    'git pull' 是针对开发人员协调他们的工作,所以它真的不是这个工作的理想工具。 'git fetch' 和 'git reset --hard' 更具体,没有防止意外覆盖本地工作的保护。

    但这正是你想要的。

    不过,如果您有时会进行更改以修复生产服务器上的问题,您可能希望继续使用“git pull”。合并和可能的冲突可能有益多于有害。

    但有时您只想将可靠更新作为自动化的一部分,而任何本地更改都是需要消除的问题。

    但即使使用 'git pull',你也可能想要那个 'git clean'。遗留文件可能会以神秘且难以识别的方式破坏构建和部署。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-07
      • 2012-03-26
      • 2019-05-08
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      相关资源
      最近更新 更多