Git -更改分支提示以包含来自另一个分支的提交

ccgok5k5  于 2023-05-05  发布在  Git
关注(0)|答案(2)|浏览(135)

我有一个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

谢谢你的时间!

o8x7eapl

o8x7eapl1#

分支只是附加到某个提交的字符串名称,您可以操作分支名称附加到哪个提交。
所以你的提法基本上是对的。你说:

git switch Branch1 
git reset --hard Branch2
git branch -D Branch2

或者,您可以使用第一个分支名称替换第二个分支名称:

git switch Branch2
git branch -M Branch1
pgx2nnw8

pgx2nnw82#

由于Branch1b之后没有提交,因此您可以简单地将其快进到Branch2

git checkout Branch1
git merge --ff-only Branch2

--ff-only强制快进并禁止合并提交。请参见man git-merge#ff。
快进之后,你的树看起来像这样:

a -- b -- c -- d -- e --> Branch1, Branch2

Branch2可以安全地删除。整个操作严格等同于删除Branch1并将Branch2重命名为Branch1。记住,对于git来说,分支只是一个指向提交的别名/指针。

相关问题