是否可以快速转发另一个分支而不检查它?

时间:2014-11-04 14:29:56

标签: git

在git中,我有一个分支A。我创建了另一个分支B,我创建了一些提交。然后我想将分支A快进到分支B

我知道我可以结帐A并快进到B的最新提交。此操作需要对工作副本进行两次修改:第一次返回A,然后将工作副本还原为B。如果B上的新提交包含大量更改,则操作可能会非常慢。

是否可以在不更改工作副本的情况下快速转发另一个分支? (换句话说,只移动A

的指针

2 个答案:

答案 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

可以是提交ID,标记或分支名称。

最后,您可以将其放在脚本或git别名中。