有没有办法让meld
+ git
显示2次git提交之间发生的更改,但排除第3次提交中引入的更改?用例是看当前提交的数量与3向合并之前完成的一些提交有多大。
答案 0 :(得分:0)
我有一种愚蠢的方法来做到这一点。
警告:在使用下面的单行之前,最好提交/备份所有未提交的更改。这个单线程试图隐藏和恢复您的更改。但它仍然可能在repo中引入一些混乱(新文件)或者可能包含一些bug
下面的代码显示了FIRST_COMMIT
和SECOND_COMMIT
之间的差异,但对MERGE_COMMIT
中另一个分支引入的其他文件的更改除外。您应该将变量FIRST_COMMIT
,SECOND_COMMIT
和MERGE_COMMIT
设置为适当的值。
FIRST_COMMIT=866dfa2a7
MERGE_COMMIT=94b195989
SECOND_COMMIT=0fc856fd9
git stash ; \
git checkout $FIRST_COMMIT ; \
git ls $MERGE_COMMIT..$SECOND_COMMIT | sort | \
uniq | \
xargs -L 1 git checkout $SECOND_COMMIT -- ; \
git difftool -d $FIRST_COMMIT ; \
git stash && git stash drop ; \
git stash apply
这个单班轮的作用是什么:
stash
FIRST_COMMIT
MERGE_COMMIT
和SECOND_COMMIT
处的所有文件以及它们之间的所有修订SECOND_COMMIT
FIRST_COMMIT
和SECOND_COMMIT
之间,但对MERGE_COMMIT
中另一个分支引入的其他文件的更改除外。前一句话表示如果在SECOND_COMMIT
和MERGE_COMMIT
中修改了某个文件,则所有更改都将出现在diff中。这很难避免。根据您首选的git工作流程,您可能决定从上面的单个线路中删除git stash调用