假设我的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
我可以用来发送这一个提交审查?
答案 0 :(得分:0)
您可以使用git branch
为所需的任何目标提交创建新分支。在您的情况下,如果您想创建一个指向A
的新分支,您可以这样做:
git branch newbranch A
您还可以使用checkout -b
语法立即查看:
git checkout -b newbranch A
然后,您可以提交该分支及其提交A以供审核。合并后,您可以重新定位B
和C
,以便他们以新origin/master
为基础。
答案 1 :(得分:0)
我认为使用git-review是不可能的,但你可以使用raw push命令在没有git-review的情况下执行此操作。
例如,通常没有git-review,您将使用如下命令:
git push origin HEAD:refs/for/master
如果你只想推送一个(只有在A
之前的所有提交已经在master
)特定提交的情况下才会推送它,例如提交A
,你可以使用其哈希而不是HEAD
:
git push origin A:refs/for/master
但是hash的使用并不是很好,因为你应该知道它并且你可以使用像HEAD~2
之类的构造更容易地做到这一点,这将告诉git使用从HEAD
开始的第三次提交在您的情况下,它将是A
:
git push origin HEAD~2:refs/for/master
但像git push origin HEAD~2:refs/for/master
这样的构造太长了,而不是它,你可以像这样创建几个git aliases(示例别名下面将始终使用master
作为目标分支,因此如果在你的工作流程中您正在使用master
和development
之类的多个目标分支,那么您需要为review-master-2
和review-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