Git - 何时使用强制推动

时间:2017-06-21 08:54:52

标签: git

GIT - FORCE PUSH

有人可以通过示例告诉我何时使用git push以及何时使用git push -f

1 个答案:

答案 0 :(得分:7)

push --force有一种情况,即使对于初学者也是如此:当您更新拉取请求时。

拉取请求意味着

  • 你在GitHub上分叉一个回购(例如)
  • 在本地克隆
  • 制作分支并添加一些补丁/新提交
  • 将该分支推送到您的分支(您拥有)
  • 触发一个Pull Request,它通知原始仓库的所有者您希望合并PR分支。

但是:如果该原始仓库已经进行了自己的新提交,则需要在更新的"上游"之上重新设置(重播您的提交)。回购

git remote add upstream /url/original/repo
git checkout my_pr_branch
git rebase upstream/master
# test everything is still working

通过重新定位,您正在更改新提交的SHA1:您需要通过重新提交的提交替换PR分支的已发布(推送)提交:

git push --force

这将更新现有的Pull Request,它将考虑这些提交的新版本 由于您强行推送到自己的仓库(分叉)和您自己的分支(PR分支),您可以根据需要使用--force

我提出了force-with-lease in 2013,作为检测您想要强制推送的远程仓库是否发生任何事情的方法。
请注意,它变为more robust recently with Git 2.13