我在GitHub上有我经常从我的本地计算机上提交的存储库.另一方面,我从存储库中取出服务器.Web服务器只是执行a git pull以从GitHub存储库获取最新的更改.这是完全自动化的,应该保持这种方式(像Ruby Tool Capistrano这样的解决方案已经出局).
一个简单的git pull通常工作得很好.但是,有时我将最后一次commit(git commit --amend)和git push更改两次更改为GitHub.如果服务器在两次推送到GitHub之间自动更新它的代码,则下一个服务器端git pull失败,因为存在合并冲突.
要解决此问题,我需要以下行为:服务器应继续git pull(或等效)GitHub存储库,但如果发生合并冲突,GitHub存储库应优先于服务器上的本地存储库.所以,我想要一个行为类似的git命令git clone,但不会每次都复制整个存储库.
如果你不在那里进行任何本地修改,你当然可以进行强制git checkout,但正确的答案是永远不要修改已离开本地存储库的提交.
JB是对的,但我会对他的答案进行一些扩展.
git pull您应该让它运行,而不是让服务器自动运行git fetch origin; git checkout origin/master.当然,这假设您已经设置了"原点"遥控器来引用您本地计算机的存储库.
如果您需要直接修改服务器源(快速修复或其他)并希望提交这些更改,则可以git branch -f master origin/master在执行提交之前将服务器的主分支设置为与本地计算机分支相同的提交.