繁体   English   中英

在 git push 之后撤消 2 个不同分支(开发和功能)中的 git 提交消息

[英]Undo git commit message in 2 different branches (develop and feature) after git push

不想破坏主分支中的任何内容。

  1. 我通过以下命令创建了一个开发分支 git checkout develop git pull upstream develop # 根据 git push origin develop 在本地拉取更新 # 同步你的本地开发分支

  2. 不小心在该开发分支中进行了很少的提交,然后通过以下提交恢复了 d3b229f9 (develop) 将 github.com:ROCmSoftwarePlatform/bench 的分支“开发”合并到开发 16daa203 恢复“内核转换器工具以从 lib 97e834cb 内核转换器工具创建 yaml 文件从 lib 创建 yaml 文件”

  3. 在开发的工作分支下创建,
    git checkout -b 内核

  4. 我在“内核”分支中所做的所有更改,推送,创建 PR,现在需要完成 PR。 即合并所有内核分支更改以开发,但我不想看到 d3b229f9,16daa203,97e834cb 提交消息,只想从下面的列表中看到 5a555e7a。 如何无缝地从“开发”分支和“内核”分支中删除 3 条提交消息?

注意:我为内核分支做了 squash 合并,但我无法摆脱我在开发分支中所做的提交

“内核”分支有以下提交,合并后我只想要 5a555e7a 消息

5a555e7a (HEAD -> kernel, origin/kernel) 新工具 yaml 文件

d3b229f9 (develop) 将 github.com:softwarePlatform/Benchmark 的“develop”分支合并到 develop

16daa203 还原“从 lib 逻辑创建 yaml 文件的内核转换器工具”

97e834cb 内核转换器工具,用于从 lib 逻辑创建 yaml 文件

f4af1648 (upstream/develop) 合并来自 xxxxx/develop 的 pull request #1244

b1a07da2 更新版本为新版本

您不应该恢复您对开发的提交,而只是执行

git reset origin --hard

来解决这一切。

# update status
git fetch

# reset develop branch to match origin
git checkout develop
git reset origin --hard

# clean kernel history
git checkout kernel
git log
    commit 0080 (HEAD -> kernel, origin/kernel)
      Work 2

    commit 0070
      Work 1

    commit 0060
      Revert bad stuff

    commit 0050
      Bad stuff

    commit 0040 (develop, origin/develop)
      Good work before all this mess

# commit 0040 may not be (develop, origin/develop) if work have
# been done on this branch by someone else. It's not important but
# it makes it harder to find the last good commit.

# at this point keep a copy of the first and last sha of your work
# here 0070..0080
# then reset kernel to the last good commit
git reset --hard 0040

# apply your work
git cherry-pick 0070..0080

# update the PR
git push --force

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM