首页 > 解决方案 > 删除远程提交

问题描述

我已经完成了提交并推送到远程分支而没有意识到,现在我想远程撤消该提交而不会丢失更改。我正在寻找 StackOverflow 和 Google,但我找到的信息因作者而异。

我想恢复远程中的最后一次提交并继续在本地维护更改而不跟踪能够将这些更改带到本地的另一个分支。

现在,当我阅读时,我必须这样做:

git revert HEAD
git stash -m "message"
git checkout branch
git stash apply
git add.
git commit -m "message"
git push

我还读到我可以挑选提交到另一个分支,这将是这样的:

git revert HEAD
git checkout branch
git cherry-pick id_commit
git push

在此处输入图像描述

标签: git

解决方案


你是对的,在这里挑选樱桃会很好,但我会建议我认为更简单的方法:

只需运行git rebase --onto other-branch master~1 master(这表示“重新调整最后一次之前的主节点和主节点(您的最新提交)之间的提交范围并将其重新播放到其他分支”

或者,如果您更喜欢樱桃采摘,我相信过程如下:

  1. git checkout master
  2. git rev-parse HEAD从 master 看到最后一个提交哈希,我们会假装它是1234567......
  3. git checkout other-branch
  4. git cherry-pick -x 1234567将提交应用1234567到当前分支。

在您从上述说明中重新定位或挑选后,您可以选择删除 master 的提交:

  1. git checkout master
  2. git reset HEAD --hard(删除 master 上的最后一次提交)
  3. git push --force(用该分支的新历史强制更新远程同步分支

然后,在您other-branch完成本地工作时处理您的代码并合并到 master 和 push


推荐阅读