新的分支而不是推动

时间:2013-10-21 11:42:15

标签: git

我在我的主分支中进行了一些本地更改并提交,但没有推送。现在,我改变了想法,我想创建一个新的测试分支,接受推送的所有更改,将它们提交到新分支并从主分支中删除。

所以(不是真正的输出,手写的):

# get the code
git clone ...

# I am in the main branch
git branch
* main

# ...do some changes...
# and commit them
git commit --all

# I am ahead by 1 commit
git status
Your branch is ahead of 'origin/main' by 1 commit

# I changed my mind, I don't want to
# git push
# I want to move those changes to a new branch

git checkout -b test

# WHAT NOW?
# - move the changes that are "ahead" to the "test" branch
# - restore the main branch to the state before the commits

1 个答案:

答案 0 :(得分:5)

“提前”的更改只是origin/mainmain之间的更改。因此,要将main重置为旧状态,您只需要git reset --hard origin/main。现在的全部设置是:

git checkout main
git reset --hard origin/main

......就是这样。请注意,“现在是什么”的第一步已由git checkout -b test完成,因此剩下的唯一步骤是将main还原为origin/main

注意:这假定更改已经已提交,如问题中所述。在结帐时使用未提交的更改运行git reset --hard会使您丢失更改。如果您不确定是否已提交更改,请运行git status;成功提交后,它会告诉您有nothing to commit