如何删除我在本地git存储库中的最后一次提交

mic*_*ael 31 git

当我做'git pull'时,我与头部提交有冲突.所以我做了'git rebase --abort'

我可以"保存"我对"补丁"的承诺然后做一个git pull吗?

我想模仿的是:

  • 我没有承诺,但我做了一个'git stash'
  • 做一个git pull以避免任何合并错误

所以我需要以某种方式'扭转时钟'.用git可能吗?

Ale*_*roß 70

你的7826b2补丁仍然会引起冲突时,它的拉力后应用,但你可以做到以下几点:

git reset --soft HEAD^
git stash
git pull
git stash pop # Will cause a conflict
git commit    # Re-commit 7826b2
Run Code Online (Sandbox Code Playgroud)

另一种工作流程也是可行的

git reset --hard HEAD^
git pull
git cherry-pick 7826b2 # Will cause a conflict
Run Code Online (Sandbox Code Playgroud)

第二个工作流程依赖于Git将7826b2提交保留在reflog中的事实(您可以将其视为回收站),即使您重置了第一行引入的更改.


Jam*_*cks 6

如果您确实在本地存储库中提交了更改,则可以直接进行rebase:

git fetch origin

git rebase origin/master

这将从本地主服务器中解除您的本地提交,从origin/master应用新提交,然后重放您的本地提交.

在您的情况下,这将导致冲突,git将告诉您需要编辑哪些文件来解决冲突.执行此操作后,git add这些文件然后git commit没有参数重新发送更改.