我曾经看到过“重复敲打”的一件事情,那就是永远不会 git push --force
,但肯定有时候它是合适的?
什么时候使用--force?
我目前的例子:
推出 - 强制适当的解决方案吗?
答案 0 :(得分:2)
在这种情况下,假设您是唯一一个在该分支上工作的人,或者当您强行推送并重写该功能分支的历史记录时,其他人理解其含义。
答案 1 :(得分:2)
push -f
变得非常必要。在这种情况下,您需要执行git filter-branch
和git push -f
。 This article解释了这个过程。
另外,当一个初级开发人员对回购做了一些愚蠢的事情时,我遇到了你需要做push -f
的情况。无论如何,一个人不应该首先给予他们权利或给予他们足够的培训。
答案 2 :(得分:1)
对于那些根据您的分支撤回您的回购并进行自己更改的人来说,重写历史将是一件令人头疼的事。当您重写远程历史记录并且下游人员将其拉出时,他们的更改将最终在不知名的地方徘徊。 (查看git rebase
文档中的从上游rebase恢复部分。)
这就是为什么如果其他人使用你的回购,通常最好将来自origin的更改合并到live
并推送合并。它不像rebase那么干净,但下游没有人需要做一些时髦的事情来跟上你的重写:
git checkout live
git merge --no-ff origin/whatever
git push origin live
当您准备好将live
中的更改提取回主分支时,您可以随时进行变基。
另一方面,如果您是唯一一个使用您的仓库的人,或者下游人员可以通过修复远程历史记录重写,--force
远离。
答案 3 :(得分:-1)
我通常push -f
在最初推动之后,当我知道还没有人提取我的更改,或者当我是唯一一个参与该项目的人时。
否则,只要您重写历史记录,就应该避免强制推送。