我对 git 中的所有 merge/ rebase war 有点困惑。
假设我为我的功能检查了一个新分支。我犯了几次。但是后来有人将一些更改推送给 master,我希望对我当前的工作进行更改。我希望将所有新更改 pull 到我的分支,并在这些新更改之上重放我的提交。
我应该怎么做才能在这些更改之上重播我的本地更改,而不重写服务器上已有内容的历史记录?
最佳答案
这完全取决于您的新分支是否也已推送到远程。
如果不是,您可以在您的分支上执行git rebase master
。这会搁置您在分支上的所有提交,应用来自 master 的新提交,然后尝试一个接一个地应用您的提交。如果您的提交导致冲突,git 会让您修复提交,以便更改有意义。 (如果您更改了在之前的提交中已经更改的行并且 git 不确定您到底打算发生什么,则会发生这种情况)。
如果您的分支在远程,执行 git rebase
不是一个好主意。您将更改分支的历史记录,并且任何 pull 该分支的人都将难以获得新的提交。在这种情况下,最好只执行 git merge master
以避免更改远程历史记录。
http://www.git-scm.com/book/en/Git-Branching-Rebasing#The-Perils-of-Rebasing
关于git - pull 另一个分支的更改并重播我的本地更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22664247/