1

我反复看到“锤击”的事情是永远不 git push --force应该,尽管肯定有合适的时候吗?

--force 打算在什么时候使用?

我目前的例子:

  1. 创建分支并进行一些更改。
  2. 推送分支“实时”以显示代码。
  3. 以原点为基础,在此过程中进行更改/重写历史记录。
  4. 我的代码现在已经偏离了我自己的远程代码。

push --force 是适当的解决方案吗?

4

4 回答 4

2

在那种情况下,是的,假设您是唯一在该分支上工作的人,或者其他人理解其中的含义,当您执行强制推送并重写该功能分支的历史时。

于 2012-09-14T20:31:48.523 回答
2

push -f如果您需要从错误推送的存储库中删除一些敏感数据,则变得非常有必要。在这种情况下,您需要执行git filter-branchand git push -f这篇文章解释了这个过程。

push -f此外,当初级开发人员对 repo 做了一些愚蠢的事情时,我遇到过你需要做的事情。无论如何,一开始就不应该给他们权利或给他们足够的培训。

于 2012-09-15T04:15:21.143 回答
1

对于那些拉取你的仓库并根据你的分支进行自己的更改的人来说,重写历史将是一件令人头疼的事情。当你重写你的远程历史并且下游的人把它拉出来时,他们的改变最终会在茫茫荒野中摇摇欲坠。(查看文档的从上游变基部分恢复。)git rebase

这就是为什么如果其他人正在使用您的存储库,通常最好将更改从源合并到live并推送合并。它不像 rebase 那样干净,但是下游不需要做一些时髦的事情来跟上你的重写:

git checkout live
git merge --no-ff origin/whatever
git push origin live

当您准备好将更改live拉回主分支时,您始终可以重新设置基准。

另一方面,如果你是唯一一个使用你的仓库的人,或者下游的人可以修复远程历史重写,那就--force走开。

于 2012-09-14T21:28:50.417 回答
-1

我通常push -f在最初的推送之后,当我知道还没有人获取我的更改时,或者当我是唯一一个在项目中工作的人时。
否则,只要重写历史,就应该避免强制推送。

于 2012-09-14T20:54:06.137 回答