删除远程提交

时间:2018-06-24 18:54:31

标签: git

我已经完成提交并推送到远程分支而没有意识到它,现在我想远程撤消该提交而不丢失更改。我正在寻找StackOverflow和Google,但是根据谁写的信息,我发现的信息是不同的。

我想还原远程的最后一次提交,并保持本地的更改而不跟踪,以便能够将那些更改带到本地的另一个分支。

现在,如我所读,我将不得不做:

The DELETE statement conflicted with the REFERENCE constraint "FKqjpga9w6wp3qk26ox9pg252d9". The conflict occurred in database "MDHIS", table "dbo.tblOutboundMessage", column 'id_patient'.

我还读到我可以选择去提交另一个分支,这将使事情变成这样:

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

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

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

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

根据上述说明进行基础调整或精心挑选后,您可以选择从主用户删除提交:

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

然后,在other-branch上处理代码,并在完成本地工作后合并到master并推送