重置而不会丢失已提交的文件

che*_*run 18 git git-reset

当我不小心将文件提交到错误的分支时,我通常会使用git reset --hard HEAD~1.但是,使用此方法我通常会丢失所有提交的文件.有没有办法重置提交,而不会丢失已编辑的文件?

Ale*_*lex 37

不要使用--harduse --soft.

因此,如果您要删除最新的提交,请执行以下操作:

git reset --soft HEAD^


Set*_*son 5

虽然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)

请注意,如果由于冲突而将更改"浮动"到另一个分支的尝试失败,则最后一个示例将失败.然后,您需要存储/结帐/申请以解决冲突.