Git Rebase - 将共享远程重新托管到本地,避免合并提交?

时间:2015-05-26 21:15:58

标签: git rebase git-rebase

我有点难以理解(克服?)Git Rebase中的恐惧,因为它与共享分支有关,但还有尚未推送的本地提交。

假设我有一个本地分支my-feature,它在跟踪的远程origin/my-feature之前提交2次。此分支也由其他开发人员共享和处理。

我很确定如果我拉,我会有冲突,并可能最终会有一个非常讨厌的合并提交,我想避免。我的想法是,如果我可以在我的本地分支上重新设置远程(并且仅为我的2次新提交重写提交历史记录),我可以在本地修复合并冲突并避免讨厌的合并提交。但是,我不确定这种情况下rebase的工作原理是什么。

一般的建议似乎是“避免重新分配共享分支”,但是有人可以启发我如何在我的场景中发挥作用吗?有没有更好的方法来完成我想要做的事情?

1 个答案:

答案 0 :(得分:2)

不要将遥控器重新绑定到本地分支 - 这将修改远程分支的历史记录(并且需要本地分支来跟踪该rebase)。相反,请将您的本地my-feature变为origin/my-feature

git checkout my-feature

# git add and git commit lots of stuff

git fetch origin
git rebase origin/my-feature

自上次提取my-feature以来,您添加到origin/my-feature的所有提交都将应用于origin/my-feature的最新顶部。这样,您就不会重写origin/my-feature的历史记录。也就是说,从其他用户的角度来看,您只是向其添加提交。

我给很多人一般的提示 - 从你的字典中删除pull。忘记这个概念甚至存在。首先执行fetch,然后使用gitk --all或等效内容查看所有分支,并确定您希望如何进展(合并,变换,等等)。