据我所知,当我使用git pull --rebase
时,git会重新编写历史记录,并在我刚从中提取的分支中的所有提交之后移动我的本地提交。
我不明白这是多么糟糕的事情。人们谈到了与git pull --rebase
陷入困境的问题,在那里你可以得到一个别人无法忍受的分支。但是我不明白这是怎么回事,因为你所做的就是在你所从的分支上重播你当地的,尚未公开的提交。那么,那里的问题是什么?
答案 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是一个分布式源代码控制系统。人们不必从您正在推动的中央存储库中提取 - 在某些工作流程中,他们可以直接从您那里获取更改。在这些情况下,重写您的历史肯定会导致您正在谈论的问题