我在我的主分支中进行了一些本地更改并提交,但没有推送。现在,我改变了想法,我想创建一个新的测试分支,接受将推送的所有更改,将它们提交到新分支并从主分支中删除。
所以(不是真正的输出,手写的):
# 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
答案 0 :(得分:5)
“提前”的更改只是origin/main
和main
之间的更改。因此,要将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
。