如何强制从远程服务器检出最新版本?

时间:2009-09-03 13:06:06

标签: git

我在GitHub上有我经常从本地计算机上提交的存储库。另一方面,我从存储库中取出服务器。 Web服务器只执行git pull以从GitHub存储库获取最新更改。这是完全自动化的,应该保持这种方式(像Ruby Tool Capistrano这样的解决方案已经出局)。

一个简单的git pull通常效果很好。但是,有时我将最后一次提交(git commit --amend)和git push更改两次更改为GitHub。如果服务器在两次推送到GitHub之间自动更新它的代码,则下一个服务器端git pull失败,因为存在合并冲突。

要解决此问题,我需要以下行为:服务器应该继续{GooHub存储库git pull(或类似的东西)但是如果发生合并冲突,GitHub存储库应该优先于本地存储库在服务器上。所以,我想要一个行为类似于git clone的git命令,但不会每次都复制整个存储库。

3 个答案:

答案 0 :(得分:7)

如果您不在那里进行任何本地修改,您当然可以执行强制git checkout,但正确的答案是永远不会修改已离开本地存储库的提交

答案 1 :(得分:6)

JB是对的,但我会对他的答案进行一些扩展。

您应该让它运行git pull,而不是让服务器自动运行git fetch origin; git checkout origin/master。当然,这假设您已经设置了“原点”遥控器来引用您当地计算机的回购。

如果您需要直接修改服务器源(用于快速修复或其他)并且想要提交这些更改,您可以在提交之前git branch -f master origin/master将服务器的主分支设置为与本地计算机分支相同的提交。

答案 2 :(得分:4)

我永远不会修改您pull的来源,您可能想做的只是fetch然后是checkout