我反复看到“锤击”的事情是永远不 git push --force
应该,尽管肯定有合适的时候吗?
--force 打算在什么时候使用?
我目前的例子:
- 创建分支并进行一些更改。
- 推送分支“实时”以显示代码。
- 以原点为基础,在此过程中进行更改/重写历史记录。
- 我的代码现在已经偏离了我自己的远程代码。
push --force 是适当的解决方案吗?
我反复看到“锤击”的事情是永远不 git push --force
应该,尽管肯定有合适的时候吗?
--force 打算在什么时候使用?
我目前的例子:
push --force 是适当的解决方案吗?
在那种情况下,是的,假设您是唯一在该分支上工作的人,或者其他人理解其中的含义,当您执行强制推送并重写该功能分支的历史时。
push -f
如果您需要从错误推送的存储库中删除一些敏感数据,则变得非常有必要。在这种情况下,您需要执行git filter-branch
and git push -f
。这篇文章解释了这个过程。
push -f
此外,当初级开发人员对 repo 做了一些愚蠢的事情时,我遇到过你需要做的事情。无论如何,一开始就不应该给他们权利或给他们足够的培训。
对于那些拉取你的仓库并根据你的分支进行自己的更改的人来说,重写历史将是一件令人头疼的事情。当你重写你的远程历史并且下游的人把它拉出来时,他们的改变最终会在茫茫荒野中摇摇欲坠。(查看文档的从上游变基部分恢复。)git rebase
这就是为什么如果其他人正在使用您的存储库,通常最好将更改从源合并到live
并推送合并。它不像 rebase 那样干净,但是下游不需要做一些时髦的事情来跟上你的重写:
git checkout live
git merge --no-ff origin/whatever
git push origin live
当您准备好将更改live
拉回主分支时,您始终可以重新设置基准。
另一方面,如果你是唯一一个使用你的仓库的人,或者下游的人可以修复远程历史重写,那就--force
走开。
我通常push -f
在最初的推送之后,当我知道还没有人获取我的更改时,或者当我是唯一一个在项目中工作的人时。
否则,只要重写历史,就应该避免强制推送。