在git中,我有一个分支A
。我创建了另一个分支B
,我创建了一些提交。然后我想将分支A
快进到分支B
。
我知道我可以结帐A
并快进到B
的最新提交。此操作需要对工作副本进行两次修改:第一次返回A
,然后将工作副本还原为B
。如果B
上的新提交包含大量更改,则操作可能会非常慢。
是否可以在不更改工作副本的情况下快速转发另一个分支? (换句话说,只移动A
)
答案 0 :(得分:4)
Git为此目的提供了update-ref命令
git update-ref A B
注意:此命令是较低级别的Git命令之一,并不提供任何保护措施,以防止自己搞砸。如果B不是A的快进,它仍然会更新A,可能使提交无法访问并受垃圾回收。
答案 1 :(得分:1)
如果您想快进将另一个分支移至当前的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别名中。