2014-02-28 37 views
2

我想在项目中做一些CR。 bitbucket允许我一次检查一个提交。所以我想将提交合并为一个提交(压扁 - >Collapsing a Group of Commits into One on Git),然后在一次提交中查看所有更改。替代重新编写代码审查?

但是,当挤压我失去了所有的提交历史,我真的不想要它。

有没有其他的选择(我知道我总是可以克隆和重新绑定)?另外,一个简单的CR工具(不是Web平台)就好了。

回答

1

如果进行审查的目的是限制一个承诺,你想壁球审查提交的清单,你应该分支,然后壁球(通过重订),审查在一个单独的专用分支。这将是最简单的方法,并且您不会更改大概已经被推送和发布的主线历史。


但我也想解决您的评论,

然而,挤压时,我失去所有的提交历史,我真的不希望它。

一般来说,你不能用git失去提交历史。 rebase会发生什么情况,历史会分裂并且您的分支提示会指向新的分支,但您的旧提交仍然存在 - 只是它们无法通过分支名称方便地访问,并且必须通过一个提交哈希。

示例。

比方说,你想壁球B,C,d,E为审查的目的,作为一个单一的提交。

   A--B--C--D--E topic 
      /
H---I---F---G master 

垫底完成和B,C,d,E被压扁进入S后,原来的提交是可用的,但没有与其相关联的分支:

   B--C--D--E 
      /
       A--S topic 
      /
H---I---F---G master 

所以,如果你检出E你将在一个分离的头状态,但你完全可以让topic点回E

git update-ref refs/heads/topic E 

,树看起来就像这样:

   B--C--D--E topic 
      /
       A--S 
      /
H---I---F---G master 

对于上面的你要记住的E提交哈希能够引用它在主题分支底垫后。这有点不方便,但是您可以将git标签应用于E,然后将git reset应用于标签。