假设我有来自 origin/master 的本地分支 A。我不断地对分支 A 进行更改,获取远程主机并重新设置基础。
然后我在 A 中建立了本地分支 B。我不断地对分支 B 进行更改并重新设置基础。
我是唯一一个在分支 A 和 B 工作的人。
这是一个糟糕的设置,因为 A 的提交 ID(哈希)可能会经常更改?这是否会以任何方式破坏分支 B 的稳定性或使冲突更有可能发生?
事实上,Git 是如何实现这个设置的呢?如果 A 的提交 ID 不断变化,那么 B 的 HEAD 是什么?
假设我有来自 origin/master 的本地分支 A。我不断地对分支 A 进行更改,获取远程主机并重新设置基础。
然后我在 A 中建立了本地分支 B。我不断地对分支 B 进行更改并重新设置基础。
我是唯一一个在分支 A 和 B 工作的人。
这是一个糟糕的设置,因为 A 的提交 ID(哈希)可能会经常更改?这是否会以任何方式破坏分支 B 的稳定性或使冲突更有可能发生?
事实上,Git 是如何实现这个设置的呢?如果 A 的提交 ID 不断变化,那么 B 的 HEAD 是什么?
如果您处于这种类型的循环(获取/变基)并且一遍又一遍地看到相同的冲突,您可以激活该git rerere
功能。
这将避免必须为每个变基执行相同的冲突解决方案。
另请参阅“启用有什么缺点git rerere
吗? ”、“有趣的 rerere ”和“ Rerere Your Boat... ”了解更多信息。
这可能会导致冲突每次都继续导致冲突。
除非主题 B 依赖于主题 A,否则不要将 B 从 A 中变基。
否则,避免引起 A 和 B 之间的冲突。
git 实现是 B 上的提交将依赖于旧 A 分支上的提交,直到您重新设置基准。
基本上,当你变基时,git 不会删除旧的提交,它只是通过变基创建新的提交,并将分支 A 头指针设置为新的最终提交。
分支只是指向提交的指针。