最近我启用了diff3,现在解决冲突要容易得多.
以前在某些情况下,我必须检查日志,看看人们为什么这样做以及合并.但是使用diff3,信息会在一个地方显示出来
<<<<<<< HEAD
THIS IS USEFUL
||||||| merged common ancestors
This is useful
=======
This is really useful
>>>>>>> c2392943.....
Run Code Online (Sandbox Code Playgroud)
由此我们可以很容易地看到结果应该是"这真的很有用"
我想知道diff3是否有任何缺点?为什么它不是git的默认行为?
为了找到 2 个 git 分支的共同祖先,需要执行以下操作:
git merge-base branch another_branch
Run Code Online (Sandbox Code Playgroud)
好的。但是...如果两个分支已经合并怎么办?当我在这种情况下使用时merge-base,我得到的提交是合并之前的最新提交,我想知道两个分支“合并之前”出现的共同祖先。
换句话说:
Z - A - B - C - D - E - F
\ /
G - H - I
Run Code Online (Sandbox Code Playgroud)
HEAD如果我在这里执行 a git merge-base,我得到的提交是I,而我正在寻找的提交是 A ,或者也许是 Z 。是否有任何 git 指令可以找到它?
比方说我有:
A - B - C - D - E - F master
\
\- G - H new feature branch
Run Code Online (Sandbox Code Playgroud)
现在我意识到提交B和C实际上属于新功能,所以我想将它们移动到"新功能分支".换句话说,我希望"新功能分支"从A开始,包括提交B和C:
A - D - E - F master
\
\- B - C - G - H new feature branch
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?从我所看到的,似乎这rebase是我正在寻找的功能,但我想确定在我搞砸我的存储库之前.
(我搜索并发现了许多非常相似的问题和例子,但没有一个与我所描述的场景完全相同,所以我要求确定(回购是一件珍贵的事情,毕竟毁了)).