0

假设我有一个看起来像这样的 Git 历史,从最新到最旧:

* C: WIP: Latest change
* B: WIP: Older changer
* A: Groundwork/housekeeping - review ready
* (origin/master) Existing master commit
* ...

提交 B 和 C 正在进行中,我还没有准备好发送审查,但是我有一些内务/基础工作,我已经拆分为提交 A 并在 B 和 C 前面重新设置。我准备发送这供审查。

我知道我可以在提交 A 处创建一个新分支并对其进行审核,或者重置/结帐、审核并返回,但是是否有一个简单的衬里git-review可以用来仅发送这一个提交进行审核?

4

2 回答 2

0

我认为 git-review 是不可能的,但是你可以在没有 git-review 的情况下使用 raw push 命令来做到这一点。

例如,通常没有 git-review 你会使用这样的命令:

git push origin HEAD:refs/for/master

A如果你只想推送一个(只有在之前的所有提交都已经在的情况下才会推送一个master)特定的提交,例如 commit A,你可以使用它的哈希而不是HEAD

git push origin A:refs/for/master

但是哈希的使用不是很好,因为您应该知道它,并且您可以使用这样的构造以更简单的方式执行此操作HEAD~2,这将告诉 git 使用第三次提交从开始HEAD,在您的情况下它将是A

git push origin HEAD~2:refs/for/master

但是像这样的构造git push origin HEAD~2:refs/for/master太长了,你可以创建几个这样的git 别名(下面的示例别名将始终master用作目标分支,因此如果在您的工作流程中使用多个目标分支masterdevelopment那么您将需要为每个分支都喜欢review-master-2review-development-2):

git config --global alias.review-1 'push origin HEAD~1:refs/for/master'
git config --global alias.review-2 'push origin HEAD~2:refs/for/master'
git config --global alias.review-3 'push origin HEAD~3:refs/for/master'
git config --global alias.review-4 'push origin HEAD~4:refs/for/master'
git config --global alias.review-5 'push origin HEAD~5:refs/for/master'

A使用别名,您可以使用如下短命令推送提交:

git review-2
于 2016-01-06T14:14:42.263 回答
0

git branch您可以使用任何您想要的目标提交来创建一个新分支。在你的情况下,如果你想创建一个指向 的新分支A,你可以这样做:

git branch newbranch A

您还可以使用checkout -b语法立即检查它:

git checkout -b newbranch A

然后,您可以提交该分支及其提交 A 以供审核。合并后,您可以重新设置基准BC因此它们以新的origin/master.

于 2016-01-05T11:54:04.250 回答