从多个提交中检查更改

3
我正在使用git-svn与一个SVN仓库进行工作。其中我想要做的事情之一是使用git diff及其所有优点来审查更改。
有时候,"work-in-progress"的更改被提交到SVN,而我希望在审核之前等待工作完成。我想知道是否有一种调用git diff的方法可以让我看到所有相关的更改,而不涉及任何中间提交。
从视觉上来看,我有:
* e00 yet more irrelevant stuff
* a04 finish work
* a03 more wip
* d00 irrelevant stuff
* a02 more wip
* c00 other irrelevant stuff
* a01 more wip
* a00 start wip
* b00 state of tree before wip starts

我希望能够看到在b00之上的所有a**提交的累计效果,但是不包括c00d00e00。使用git diff b00 a04会有无关的更改。使用git show a0{0,1,2,3,4}会产生太多中间噪音。
我希望能够在不创建一次性分支的情况下实现这一点,因为我的当前方法需要创建一次性分支。
类似问题可以在这里这里找到。
2个回答

2

您确实需要一个临时的地方来聚合更改,因此您当前的方法是可以的。但是,您可以使用一个未命名的分支(“游离HEAD”)使其自动消失:

$ git checkout --detach b00

使用 --detach 或不使用 --detacha00^:无论哪种方式,都要与 b00 同步,但也要分离 HEAD。然后像之前一样操作:

$ git cherry-pick a0{0,1,2,3,4}
$ git diff master...
$ git checkout master

完成后,您就完成了:没有要删除的分支。

0
到目前为止,我想到的最好的方案是这个:
git checkout -b review-temp a00^
git cherry-pick a0{0,1,2,3,4}
git diff master...
git checkout master
git branch -D review-temp

(我已将此作为答案发布,以便在没有其他选择的情况下接受它。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接