git 如何在从子分支的子分支到父分支的重定基提交后恢复到上一次提交?

pcww981p  于 2023-01-11  发布在  Git
关注(0)|答案(1)|浏览(195)

我有三个分支(本地),分别称为devbugfixfix_1。我从master分支创建了dev分支,然后执行了3次提交,并 checkout 到名为bugfix的新分支。然后我在bugfix分支中执行了3次提交,并 checkout 到名为fix_1的新分支,并在其中执行了1次提交。
我想从fix_1分支到dev分支tip重定基fixcommit,但是在重定基之后,从bugfix分支的所有提交也重定基dev分支。
下面是我的分支在重定基础之前的状态。

    • 国家****1**:
dev --A--B--C  
             |
             |
bugfix       x--y--z
                   |
                   |
fix_1               fixcommit

下面是我的分支在重定基后的状态。

    • 国家*2
dev --A--B--C--x--y--z--fixcommit
             |
             |
bugfix       x--y--z
                   |
                   |
fix_1               fixcommit

我想回到

    • 本*
dev --A--B--C--fixcommit 
             |
             |
bugfix       x--y--z
                   |
                   |
fix_1               fixcommit

然后,

    • 本*
dev --A--B--C--fixcommit 
                       |
                       |
bugfix                 x--y--z
dgsult0t

dgsult0t1#

假设您处于状态2

dev --A--B--C--x--y--z--fixcommit
             |
             |
bugfix       x--y--z
                   |
                   |
fix_1               fixcommit

可以使用git checkout dev; git reset --hard C返回到初始状态。在下一步中,使用

git rebase --onto dev bugfix fix_1
git checkout dev
git merge --ff-only fix_1

为了达到:

dev --A--B--C--fixcommit 
             |
             |
bugfix       x--y--z

最后,执行git checkout bugfix; git rebase dev以获得所需的状态

dev --A--B--C--fixcommit 
                       |
                       |
bugfix                 x--y--z

相关问题