强制推送单个文件的git命令

3

我的存储库有两个文件:G.txt和I.txt。其他用户编辑G.txt,而只有我修改I.txt,并且我不修改G.txt。 我通常的工作流程如下:

  1. git pull
  2. 编辑I.txt
  3. git add I.txt; git commit -m "message"; git push

我经常会遇到麻烦,因为在第1步和第3步之间,其他人已经编辑了G.txt,所以我的推送失败了。人们经常向G.txt推送,所以很难在别人编辑之前完成我的拉取和推送。 有没有一种方法可以强制推送接受我的对I.txt的更改,但不覆盖存储库的G.txt,因为自从上次拉取后,其他人已经进行了更改?


什么是错误? - Sajib Khan
我不确定是否存在问题,这会阻止我们执行普通的合并或变基来解决这个问题。 - Tim Biegeleisen
2个回答

3
你可以使用 git pull --rebase 命令:这将在远程端进行的任何其他提交之上重放你本地(带有 l.txt 修改)的提交。然后再次推送,此时不需要强制推送。

我的问题是人们不断地向G.txt推送 - 所以即使我拉取,它通常几乎立即过时。 - James
@James 不要使用 pull 命令,而是使用 pull --rebase 命令,然后立即使用 git push 命令。这样就可以了。 - VonC
好的 - 我会尝试的。 - James
@PankajSinghal 这可以工作,但会引入一个不必要的合并提交。 - VonC

1

不需要进行强制推送。由于您没有在远程存储库中拥有最后一个推送的提交,因此无法推送您的更改。

执行 git pull 将从存储库中获取最新的更改并将其合并到您的本地存储库中。然后您可以进行正常的推送操作。

如果您想避免合并提交并将您的更改应用于远程存储库中的最新更改,请执行 git pull --rebase


我可以进行git pull,但通常在我再次进行push之前,有人已经更改了G.txt,因此我从未拥有最后一个推送的提交。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接