什么时候`git pull --rebase`让我陷入困境?

时间:2010-04-07 05:46:25

标签: git rebase pull

据我所知,当我使用git pull --rebase时,git会重新编写历史记录,并在我刚从中提取的分支中的所有提交之后移动我的本地提交。

我不明白这是多么糟糕的事情。人们谈到了与git pull --rebase陷入困境的问题,在那里你可以得到一个别人无法忍受的分支。但是我不明白这是怎么回事,因为你所做的就是在你所从的分支上重播你当地的,尚未公开的提交。那么,那里的问题是什么?

4 个答案:

答案 0 :(得分:25)

如果您只发布(推送)了一些提交,这只是一个问题,因为它们将更难合并到已经提交过的其他repos。由于他们的SHA1已经改变,Git会尝试在这些回购中重播

如果你没有(再次推送任何提交),任何rebase应该是安全的。

所以这里的问题是:你是否确定所有你正在改变的本地提交仍然是......本地的?
在'git pull --rebase'之后你确定'git pull --rebase'吗?

如果你正在开发一个'私人分支'(一个你从未推动过的分支,但只在公共分支上合并或变基,你将推送一个分支),那么你可以随时重新定义该私有分支想。

最后,这一切都取决于您选择的workflow of merge to establish

答案 1 :(得分:5)

致力于分支机构。推。合并到另一个分支(假设您正在维护两个基线,一个补丁分支和一个新开发分支)。实现其他提交已被推送到您正在跟踪的服务器分支。拉 - 基地。突然之间,你已经针对新哈希重新提交了每个提交 - 并破坏了合并提交。

答案 2 :(得分:3)

如果没有人撤离你,并且你没有在其他任何地方推动你的提交(在rebase之前),那么理论上你没关系。但是,Git旨在很好地处理合并,如果你拉动和合并而不是拉动和反转,你可能会发现整体工作量较少。

答案 3 :(得分:2)

请记住,Git是一个分布式源代码控制系统。人们不必从您正在推动的中央存储库中提取 - 在某些工作流程中,他们可以直接从您那里获取更改。在这些情况下,重写您的历史肯定会导致您正在谈论的问题

相关问题