Git 没有远程分支的合并
Git merge without remote branch
在完成从分支 A 到分支 B 的 GIT 合并之后,我通常通过比较(合并的)本地分支和(未合并的)远程分支来区分合并:
git checkout mybranch
git pull mybranch
<do merge>
git difftool --dir-diff origin/mybranch mybranch
这很好用。但是如果我有一个没有远程分支的本地分支,我就不能这样做。
在这种情况下,执行干净差异的最佳方法是什么?
换句话说:您想比较合并前的最后一次提交与当前提交。
git difftool -d HEAD^..
^
指的是合并提交的第一个父级,在本例中为 HEAD
(^
是 ^1
的缩写)。 ..
用于指定一个范围,如果任一侧为空Git将使用HEAD
,所以上面的范围相当于HEAD^..HEAD
.
除了alfunx的回答,你可以使用reflog命名方案来获取HEAD的先前版本(即合并前HEAD曾经是什么):
git difftool -d HEAD@{1}..HEAD
您可以检查 git reflog
以确认与预期的提交匹配。它没有 HEAD^
语法那么直接,但避免了关于您要区分的多父合并的哪个父级的任何可能的歧义。
在完成从分支 A 到分支 B 的 GIT 合并之后,我通常通过比较(合并的)本地分支和(未合并的)远程分支来区分合并:
git checkout mybranch
git pull mybranch
<do merge>
git difftool --dir-diff origin/mybranch mybranch
这很好用。但是如果我有一个没有远程分支的本地分支,我就不能这样做。
在这种情况下,执行干净差异的最佳方法是什么?
换句话说:您想比较合并前的最后一次提交与当前提交。
git difftool -d HEAD^..
^
指的是合并提交的第一个父级,在本例中为 HEAD
(^
是 ^1
的缩写)。 ..
用于指定一个范围,如果任一侧为空Git将使用HEAD
,所以上面的范围相当于HEAD^..HEAD
.
除了alfunx的回答,你可以使用reflog命名方案来获取HEAD的先前版本(即合并前HEAD曾经是什么):
git difftool -d HEAD@{1}..HEAD
您可以检查 git reflog
以确认与预期的提交匹配。它没有 HEAD^
语法那么直接,但避免了关于您要区分的多父合并的哪个父级的任何可能的歧义。