当我不小心将文件提交到错误的分支时,我通常会使用git reset --hard HEAD~1.但是,使用此方法我通常会丢失所有提交的文件.有没有办法重置提交,而不会丢失已编辑的文件?
虽然Alex非常正确,但我可能会尝试不同的顺序:
如果我想在一个尚未出生的分支上提交:
git branch newbranch
git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)
如果我想在现有分支上提交:
git checkout otherbranch
git cherry-pick firstbranch
git checkout firstbranch
git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)
亚历克斯答案的完整例子
git reset --soft HEAD^
git checkout otherbranch
git commit -am "Message"
Run Code Online (Sandbox Code Playgroud)
请注意,如果由于冲突而将更改"浮动"到另一个分支的尝试失败,则最后一个示例将失败.然后,您需要存储/结帐/申请以解决冲突.