要进行代码审核,我经常会创建一个功能分支git difftool hash_of_parent_of_first_commit_in_branch last_commit_in_branch
。 feature_branch是从它的源代码创建的(让我们称之为master分支),并在其上完成工作。但是在这段时间中,master分支收到了一些提交,这些提交在feature_branch中合并。
为了澄清,如果我使用git log,这个命令很简单:git log feature_branch ^master
(可能有--no-merges或不合并,具体取决于具体情况)。有了这个,我会将主提交过滤掉feature_branch。
我做了一些研究,但无法弄清楚我怎么能实现这一目标。也许使用樱桃挑选?关于如何在diff / difftool命令上实现类似功能的任何想法?
答案 0 :(得分:2)
首先,您可以获得一个合适的提交列表,如下所示:
git rev-list --reverse --no-merges feature_branch ^master
这将获得无法从master访问的feature_branch上的每个非合并提交。 reverse 按时间顺序排列,适合应用。
其次,你可以把它们挑选到一个临时分支:
git branch review $(git merge-base feature_branch master)
git checkout review
git rev-list --reverse --no-merges feature_branch ^master | xargs git cherry-pick
然后您的评论将在
git diff $(git merge-base feature_branch master)..review
请注意,xargs
可能会难以以交互方式解决cherry-pick
个问题。您可以使用for
循环而不是xargs编写一个包装器脚本来完成所有这些操作,以便将所有内容连接到终端。