如何将一个分支的末端回退3个提交?

5 浏览
0 Comments

如何将一个分支的末端回退3个提交?

这个问题已经有答案了:

将本地版本库的分支重置为与远程版本库 HEAD 一致

我想将我的工作拆分为两个分支, 所以我想给当前最新的提交分配一个新的分支名称, 并将当前的分支名称退回 3 个提交. 这 3 个新的提交尚未推送.

我当前有这个:

branch1                     F - G - H  
                           /
origin/branch1    C - D - E
                 /
master      A - B 

我想要这个:

branch2                              F - G - H  
                                    /
branch1, origin/branch1    C - D - E
                          /
master               A - B 

我已经创建了branch2:

git checkout -b cleanup_exchanges

请问下一步该怎么做, 将branch1退回几个提交, 而不移动branch2?

admin 更改状态以发布 2023年5月24日
0
0 Comments

从这个来源:https://opensource.com/article/18/6/git-reset-revert-rebase-commands

让我们从Git命令重置开始。实际上,您可以将其视为“回滚”--它会将您的本地环境指向以前的提交。通过“本地环境”,我们指的是您的本地存储库,暂存区和工作目录。

$ git log --oneline
b764644 File with three lines
7c709f0 File with two lines
9ef9173 File with one line

重置命令:

$ git reset 9ef9173 (using an absolute commit SHA1 value 9ef9173)

或者

$ git reset current~2 (using a relative value -2 before the "current" tag)

然后您可以再次检查日志

$ git log --oneline
9ef9173 File with one line

在您的情况下,您拥有origin/branch1作为参考点,您可以这样做:

git checkout branch1
git reset --hard origin/branch1

总之,您有不同的方法可以回到分支的历史记录,甚至使用非传统的方法如:

git checkout -b 9ef9173 (using an absolute commit SHA1 value 9ef9173)

这将创建一个新分支,然后

git checkout branch1
git merge 9ef9173

0
0 Comments

分支仅仅是一个指向提交的指针,因此你可以自由地将 branch1 指针移动到任何其他的提交。

这应该可以工作。

git checkout branch1
git reset --hard origin/branch1

或者回退到一些 N 次提交:

git checkout branch1
git reset --hard branch1~3

0