Git - 何时使用强制推动

raj*_*viv 7 git

GIT - FORCE PUSH

谁能告诉我何时使用git push以及何时git push -f举例?

Von*_*onC 10

push --force即使对于初学者也有这样的情况:当您更新请求请求时。

拉取请求意味着

  • 您在GitHub上存储了一个仓库(例如)
  • 在本地克隆
  • 进行分支并添加一些补丁/新提交
  • 将该分支推到您的叉子(您拥有)
  • 触发“拉取请求”,以通知原始存储库的所有者您要合并您的PR分支。

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

git remote add upstream /url/original/repo
git checkout my_pr_branch
git rebase upstream/master
# test everything is still working
Run Code Online (Sandbox Code Playgroud)

通过重新基准化,您正在更改新提交的SHA1:您需要用重新创建的提交替换PR分支的已发布(推送)提交:

git push --force
Run Code Online (Sandbox Code Playgroud)

这将更新现有的请求请求,该请求将考虑这些提交的新版本。
由于您被迫推送到自己的仓库(分支)和自己的分支(PR分支),因此您可以使用任意--force多的时间。


在2013年提出了“ 强制租赁”,以检测您要强制推送的远程仓库是否发生了任何事情。
请注意,最近随着Git 2.13变得更加强大