如何将几个Git提交回滚到新分支



如果我有一个标记为v0.3.1的提交和从那时起的一堆提交(都在main上(,我如何回滚v0.3.1以来的所有提交并将它们放在新的分支feature中,然后从main中删除原始提交?

切换到主分支,为该功能创建一个新分支,并在主分支上执行git reset --hard commit_you_want_to_reset_to

现在,您的主分支应该在您选择的提交处,而现在您有一个分支,它仍然包含该功能的所有代码。

有很多方法可以做到这一点,但为了好玩,这里可能是最有效的方法,使用两行代码,将您留在分支feature上,您最初希望在那里:

# switch to a new branch feature which is identical to the current main
git switch -c feature main
# re-point main to tag v0.3.1
git branch -f main v0.3.1

请注意,如果您已经推送了main,则需要强制推送main来更新它,但在这种情况下,您还需要决定强制推送main是否是此回购的好主意,因为它通常不受欢迎。

最新更新