Git - 何时使用强制推送

标签 git

<分区>

GIT - 强制推送

任何人都可以通过示例告诉我何时使用 git push 以及何时使用 git push -f 吗?

最佳答案

push --force 有一个用例,即使对于初学者也是如此:当您更新 pull 请求时。

pull 请求意味着

  • 你在 GitHub 上 fork 一个 repo(例如)
  • 本地克隆
  • 创建一个分支并添加一些补丁/新提交
  • 将该分支推送到你的分支(你拥有的)
  • 触发 pull 请求,通知原始存储库的所有者您希望 merge PR 分支。

但是:如果原始 repo 做出了自己的新提交,您需要在更新的“上游” repo 之上重新设置(重放您的提交)

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

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

git push --force

这将更新现有的 merge 请求,这将考虑到这些提交的新版本。
由于您正在强制推送到您自己的 repo ( fork )和您自己的分支(PR 分支),您可以根据需要多次使用 --force


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

关于Git - 何时使用强制推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44671286/

相关文章:

Git 外壳 : git-shell-commands should exist rather than "What do you think I am? A shell?"

Github 贡献未显示在 Repository Graph 上

python - 如何从 gitpython 中的存储库路径获取变量中的 Ostream 或 Oinfo 列表?

git - 问题推送到使用 "Initialize repo with a README"选项创建的 GitHub 存储库

windows - Windows 命令行 merge 工具

git - 如何使用 grep 查看大多数提交发生在一周中的哪一天?

git 错误 : There are still logs under

git - 如何将 Swift Package Manager 与私有(private)仓库一起使用?

git - 每次更新通过 git 可用的包时,我是否需要发布到 npm?

git - git 版本 1.7.1 中 git clone -c 的旧命令是什么