GIT - 强制推送
请问有人能够举例说明何时使用 git push
和何时使用 git push -f
吗?
对于初学者来说,有时候使用 push --force
是有道理的,尤其是当你更新一个拉取请求时。
所谓拉取请求:
但是:如果原始 repo 自己也已经有了新的提交,你就需要在最新的“上游”repo上进行变基(rebase)操作,将你的提交重新应用到最新的版本上。
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
这将更新现有拉取请求,考虑到这些提交的新版本。
由于您正在向自己的仓库(分叉)和自己的分支(PR分支)进行强制推送,因此可以随意使用--force
。
我在2013年介绍了force-with-lease,作为检测要强制推送的远程仓库是否发生任何变化的方法。
请注意,它最近与Git 2.13一起变得更加健壮。
git push -f
。例如,当您将本地分支与另一个分支进行变基时,您必须强制推送。当您的本地分支具有与远程分支相同的历史记录(即本地分支与远程分支+新提交相同)时,请使用git push
。 - Dat Nguyen