我有一个git工作流场景问题,并提供了“当前”和“所需”分支结构,但我不知道正确的命令来达到所需的状态。
当前:
a -- b --> Branch1 (there are no commits after b)
\
\
c -- d -- e --> Branch2
我想重定基或重置head(不是合并,因为我想在日志中使用直线历史),使分支1看起来像这样:
期望:
a -- b -- c -- d -- e --> Branch1
\
\
c -- d -- e --> Branch2 (this branch may be removed)
我意识到Branch 2的头现在必须是Branch 1的头,但不知道下面的命令是否会确保更改c和d也会成为Branch 1的一部分,或者新的提交历史是否看起来像a -- b -- e
:
git checkout Branch1
git reset Branch2
谢谢你的时间!
2条答案
按热度按时间o8x7eapl1#
分支只是附加到某个提交的字符串名称,您可以操作分支名称附加到哪个提交。
所以你的提法基本上是对的。你说:
或者,您可以使用第一个分支名称替换第二个分支名称:
pgx2nnw82#
由于
Branch1
在b
之后没有提交,因此您可以简单地将其快进到Branch2
:--ff-only
强制快进并禁止合并提交。请参见man git-merge#ff。快进之后,你的树看起来像这样:
Branch2
可以安全地删除。整个操作严格等同于删除Branch1
并将Branch2
重命名为Branch1
。记住,对于git来说,分支只是一个指向提交的别名/指针。