【发布时间】:2012-07-13 23:52:06
【问题描述】:
当我不小心将文件提交到错误的分支时,我通常使用git reset --hard HEAD~1。但是,使用这种方法我通常会丢失所有提交的文件。有没有办法在不丢失编辑文件的情况下重置提交?
【问题讨论】:
当我不小心将文件提交到错误的分支时,我通常使用git reset --hard HEAD~1。但是,使用这种方法我通常会丢失所有提交的文件。有没有办法在不丢失编辑文件的情况下重置提交?
【问题讨论】:
就我而言,在找到this simple explanation 之后,我更喜欢使用--mixed
git reset --mixed HEAD^
【讨论】:
不要使用--hard,而是使用--soft。
因此,如果您想删除最新的提交,您会这样做:
git reset --soft HEAD^
【讨论】:
git reset --soft HEAD~1
虽然 Alex 非常正确,但我可能会想尝试不同的顺序:
如果我想在尚未诞生的分支上提交:
git branch newbranch
git reset --hard HEAD^
如果我想在现有分支上提交:
git checkout otherbranch
git cherry-pick firstbranch
git checkout firstbranch
git reset --hard HEAD^
亚历克斯回答的完整示例
git reset --soft HEAD^
git checkout otherbranch
git commit -am "Message"
请注意,如果尝试将更改“浮动”到另一个分支的尝试由于冲突而失败,则最后一个示例将失败。然后,您将需要存储/结帐/申请以解决冲突。
【讨论】:
git add --interactive 也可能有用!