删除推送的提交但保留本地更改

8 git bitbucket

我在分支上有一个推送提交(它不是主存储库分支)。这是我最后一次提交。我想从仓库中删除它。推送后我已经做了一些本地更改(在同一分支)。
我想将所有更改保留在本地。
我会去git revert <commit>,然后git add .-> git commit-> git push origin my-branch

mka*_*erg 5

如果我错了,请纠正我,但这是我对你的情况的理解:

  1. 您进行了一些更改,并使用git commit.
  2. 您将更改推送到远程存储库(Github?)git push
  3. 现在,您已经意识到刚刚推送的更改存在问题,并且您想要更正它。您在本地进行了这些更改,但尚未提交。

如果这是正确的,那么从现在开始,您有两个选择。您可以:

  • 只需进行一个新的提交,然后将其推送即可。这是最简单的选项,但它确实会将您的错误留在 git 历史记录中。要做到这一点,您只需git add像以前一样 、git commit和。git push
  • 或者,您可以修改您所做的提交,然后推送修改后的提交(本质上删除您推送的第一个(不正确的)提交)。此选项重写历史记录,只要没有其他人基于此分支完成工作就可以。这个选项将从历史记录中完全删除你的错误提交。

如果您想执行选项 2,您需要:

  1. git add暂存您的文件,就像创建新提交时通常所做的那样。
  2. git commit --amend使用当前的本地更改修改先前的提交。之后,它将有一个全新的提交哈希(就 git 而言,它与之前的错误提交没有关系)。
  3. git push -f origin 强制推动您的更改。需要强制,因为您要更改分支历史记录。


Ami*_*era 1

以下是您可以执行此操作的步骤。

  1. 备份您当地的分支机构。假设您的分支是 master 并且您的后分支名称类似于 master_backup。您可以使用下面的 git 命令。

    git branch master-backup如果你们在同一个分支。或者你也可以使用

    git分支master-备份master

  2. git revert <your commit id>

如有冲突请解决。

  1. git push origin master (恢复后推送您的更改)

  2. git reset --hard master-backup (将您的更改返回到本地主控)