在git中,我有一个分支A
。我创建另一个分支B
,在其中创建一些提交。然后我想将分支A
快进到分支B
。
我知道我可以签出A
,并快进到B
的最新提交。此操作需要对工作副本进行两次修改:首先返回到A
,然后将工作副本还原到B
。如果B
上的新提交包含很多更改,则操作可能会非常缓慢。
是否可以不更改工作副本而快进另一个分支? (换句话说,仅移动A
的指针)
Git为此提供了update-ref命令
git update-ref A B
注意:此命令是较低级别的Git命令之一,它不提供任何保护措施以防止您自己搞砸。如果B不是A的前移,它将仍然更新A,从而可能使提交不可访问并受到垃圾回收。
如果您想快进将另一个分支移至当前的HEAD,您还可以:
git fetch . HEAD:another-branch
不幸的是,这不适用于提交ID,例如:
git fetch . TARGET_ID:another-branch
但是它适用于分支或标签名称。因此,我的解决方案是创建一个临时目标分支:
git branch target <your-target-ref-id>
git fetch . target:another-branch
git branch -d target
您可以在一行中执行此操作:
git branch t <your-target-ref-id> && git fetch . t:another-branch && git branch -d t
最后,您可以将其放在脚本或git别名中。