我想跑 git difftool HEAD~3.. path/to/file
并让git为这三个提交中的每个提交打开difftool,以便我可以看到每个提交的并排视图。
我怎样才能获得git-difftool来做到这一点?
我想跑 git difftool HEAD~3.. path/to/file
并让git为这三个提交中的每个提交打开difftool,以便我可以看到每个提交的并排视图。
我怎样才能获得git-difftool来做到这一点?
这将完成你描述的内容:
git difftool HEAD~3 HEAD~2 path/to/file
git difftool HEAD~2 HEAD~1 path/to/file
git difftool HEAD~1 HEAD path/to/file
想要自动化这个过程吗?这总是三次提交吗?你想要一个三方合并吗?
更新:
如果答案是肯定的 - 是 - 否,解决方案将是:
for i in {3..1}; do
git difftool HEAD~$i HEAD~$((i-1)) path/to/file
done
更新:
如果答案是肯定的 - 不是,那基本上就是@ruffin所要求的 这里。看那里的答案。
或者你可以跑 git log -p
- 它与您想要的几乎完全相同
这将完成你描述的内容:
git difftool HEAD~3 HEAD~2 path/to/file
git difftool HEAD~2 HEAD~1 path/to/file
git difftool HEAD~1 HEAD path/to/file
想要自动化这个过程吗?这总是三次提交吗?你想要一个三方合并吗?
更新:
如果答案是肯定的 - 是 - 否,解决方案将是:
for i in {3..1}; do
git difftool HEAD~$i HEAD~$((i-1)) path/to/file
done
更新:
如果答案是肯定的 - 不是,那基本上就是@ruffin所要求的 这里。看那里的答案。
或者你可以跑 git log -p
- 它与您想要的几乎完全相同
更新:
Matthieu Moy提出了更好的变体:
for rev in $(git rev-list <committish>.. ); do
git difftool ${rev} ${rev}~1;
done
OLD版的答案:
我会说你做的事情如下:
git rev-list <commitish>.. | wc -l
要么
git log --oneline <commitish>.. | wc -l
这将计算您之间的修订数量 <commitish>
和HEAD。
然后使用此数字,您可以自动运行提交以查看差异
c=`git log --online <commitish>.. | wc -l`
while ! ${c} eq 0 ; do
git difftool HEAD~${c} HEAD~${($c-1)}
c=${c}-1
done
for i in 1 2 3
do
((j=${i}-1))
git difftool HEAD~${i}..HEAD~${j} path/to/file &
done
略有不同的方法:
1)执行交互式rebase
git rebase -i <commitish>
2)标记所有提交以进行编辑
3)对于每次提交运行
git difftool HEAD~1
4)转到下一个提交并重复步骤3
git rebase --continue
另外一个好处是,如果您在审核中发现问题,则表示您已经检出了要修复的提交。