我有点难以理解(克服?)Git Rebase中的恐惧,因为它与共享分支有关,但还有尚未推送的本地提交。
假设我有一个本地分支my-feature
,它在跟踪的远程origin/my-feature
之前提交2次。此分支也由其他开发人员共享和处理。
我很确定如果我拉,我会有冲突,并可能最终会有一个非常讨厌的合并提交,我想避免。我的想法是,如果我可以在我的本地分支上重新设置远程(并且仅为我的2次新提交重写提交历史记录),我可以在本地修复合并冲突并避免讨厌的合并提交。但是,我不确定这种情况下rebase的工作原理是什么。
一般的建议似乎是“避免重新分配共享分支”,但是有人可以启发我如何在我的场景中发挥作用吗?有没有更好的方法来完成我想要做的事情?
答案 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
或等效内容查看所有分支,并确定您希望如何进展(合并,变换,等等)。