git - Git rebase 错误的提交
问题描述
我已经将一个提交(Helm 图表)推送到了错误的分支,然后 CI 自动创建了 Helm 包并在该分支上进行了另一个提交。然后另一个用户将他的提交推送到同一个分支上。所以 git log 说:
commit 100d13 (HEAD -> MyNewBranch, origin/release/1.2.3.4, origin/MyNewBranch)
Merge: 4a1ea73 af30075
Author: xyz
Date: Wed Feb 20 17:22:41 2019 +0000
Merge pull request #14 from Repo/branch-1
commit message
commit af30075 (origin/branch-1)
Author: Build Bot
Date: Wed Feb 20 17:20:45 2019 +0000
[ci skip] build 94:
commit 67d5135
Author: abc
Date: Wed Feb 20 17:09:41 2019 +0000
commit message
commit 4a1ea73
Author: Build Bot
Date: Tue Feb 19 10:21:28 2019 +0000
[ci skip] build 88: Added prometheus-0.2.0.tgz to repo.
commit 63fac96
Author: Me
Date: Tue Feb 19 10:17:40 2019 +0000
My wrong commit message
commit 26bd737
Merge: 1059c5f 25c082a
Author: xyz
Date: Thu Feb 14 09:08:25 2019 +0000
Merge pull request #8 from Repo/branch-2
commit message
因此,在提交 100d13 中,我从 origin/release/1.2.3.4 创建了新分支,这是我将更改推送到的分支。我想要的只是将 63fac96 和 4a1ea73 重新设置为 origin/MyNewBranch。我怎样才能正确地做到这一点?
编辑:
/--- origin/MyNewBranch ---
--- origin/release/1.2.3.4 ---/
我想将两个提交 63fac96 和 4a1ea73 从 release/1.2.3.4 重新设置为 origin/MyNewBranch 并仅将它们放在那里。
解决方案
我将这个问题理解为:
您不小心将两个提交合并到 release/1.2.3.4 中,这些提交打算用于另一个分支。在此之后,其他人致力于同一分支。
您希望将这些提交从 release/1.2.3.4 分支中删除并移至它们所属的新分支。
我的假设:
- 您不关心保留这些提交的 SHA1(即我建议挑选樱桃)。
- 您确实想保留发布分支上的历史记录。
- 您不关心在现有的 MyNewBranch 上保留状态。在它的位置创建一个新的对你来说是可以的。
解决方案:
我的新分支
- 删除分支 MyNewBranch。您将创建一个具有相同名称的新名称:
git branch -D MyNewBranch
- 结帐26bd737(事故发生前的SHA1):
git checkout 26bd737
- 从那里创建新分支:
git checkout -b MyNewBranch
- 樱桃以正确的顺序挑选两个提交:
git cherry-pick 63fac96
git cherry-pick 4a1ea73
- 推这个分支:
git push origin MyNewBranch --force
这个分支完成了。
发布/1.2.3.4
- 签出发布分支:
git checkout release/1.2.3.4
- 将不应该存在的两个提交以相反的顺序恢复到它们提交的内容:
git revert 4a1ea73
git revert 63fac96
- 推那个分支:
git push origin release/1.2.3.4
而已。你完了。Helm 大概会创建一个新包。
推荐阅读
- c# - 读取输出c#的特定部分
- c# - Azure Functions - 表存储绑定不起作用
- java - 当我尝试在数组的帮助下替换单词时,我得到了 NullPointerException
- c# - 可以直接从 Razor 类库发布吗?
- reactjs - 为什么错误“操作必须是普通对象。使用自定义中间件进行异步操作。” 出现,当没有异步操作时?
- c - Why this program need more than 45 input to occur buffer overflow(segmentaion fault)?
- java - IllegalStateException:任务尚未完成:将数据从 Firebase 添加到 google maps Android Studio 中的 pin
- python-3.x - python3 - 使用脚本从父级到子级共享变量的最简单方法
- docker - postgres部署中的环境变量不起作用
- php - MYSQL基于CASE查询多个字段