我们的代码在 Github 上,我们使用 Pull Requests 来审查代码。作为审查的结果,提交可能会被还原或更改。这可能会使提交历史变得混乱。不鼓励使用该rebase
命令,因为提交已经“公开可用”。
如果您以类似的方式执行代码审查:您如何处理?你如何保持你的历史干净?
我们的代码在 Github 上,我们使用 Pull Requests 来审查代码。作为审查的结果,提交可能会被还原或更改。这可能会使提交历史变得混乱。不鼓励使用该rebase
命令,因为提交已经“公开可用”。
如果您以类似的方式执行代码审查:您如何处理?你如何保持你的历史干净?
重新定位非主(maint*,next)分支是可以的,即使它们已发布。只需使用主题分支发布要审查的新内容。然后在它们合并到 master 或 pull request 被拒绝后无论如何都要删除它们。看
man gitworkflows
我建议简单地克服混乱的提交历史。
请记住,当您查看历史时,您通常会查看当前提交的祖先。如果您的代码审查过程为被拒绝或作为不同提交重新提交的代码创建了死胡同,那么这些将不会出现在任何此类祖先中,并且通常不会被看到。
这是一个冗长但完整的示例,git log
用作历史查看器:
$ git init example
Initialized empty Git repository in /private/tmp/example/.git/
$ cd example/
$ date >date
$ git add date
$ git commit -am base
[master (root-commit) 5108762] base
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 date
$ date >date
$ git commit -am bad
[master 440c3b6] bad
1 files changed, 1 insertions(+), 1 deletions(-)
$ git log
commit 440c3b61b279e8b7cd5f5f656984b63ba18e518b
Author: Tom Anderson <twic@urchin.earth.li>
Date: Sat Mar 10 09:15:48 2012 +0000
bad
commit 5108762ba7011464fe3c57cf762d0d18f337f68c
Author: Tom Anderson <twic@urchin.earth.li>
Date: Sat Mar 10 09:15:28 2012 +0000
base
$ git branch postreview 5108762ba7011464fe3c57cf762d0d18f337f68c
$ git checkout postreview
Switched to branch 'postreview'
$ date >date
$ git commit -am good
[postreview 42e5257] good
1 files changed, 1 insertions(+), 1 deletions(-)
$ git log
commit 42e5257addf73b516676d24e7092b0e4768d3564
Author: Tom Anderson <twic@urchin.earth.li>
Date: Sat Mar 10 09:17:30 2012 +0000
good
commit 5108762ba7011464fe3c57cf762d0d18f337f68c
Author: Tom Anderson <twic@urchin.earth.li>
Date: Sat Mar 10 09:15:28 2012 +0000
base
即使错误的提交在存储库中,它也不会显示在 git log 输出中。在这种情况下,我创建了一个新分支来完成我的后期审查工作,但在实践中,您可能希望将 master 转移到新工作中,而将旧工作留在死分支上。