Git重新设置错误提交的基础
我将一个提交(Helm图表)推到了错误的分支,然后CI自动创建了Helm包,并在此分支上进行了另一个提交。然后另一个用户在同一个分支上推送了他的提交。所以git日志说:Git重新设置错误提交的基础,git,rebase,Git,Rebase,我将一个提交(Helm图表)推到了错误的分支,然后CI自动创建了Helm包,并在此分支上进行了另一个提交。然后另一个用户在同一个分支上推送了他的提交。所以git日志说: 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 Mer
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
因此,在commit 100d13中,我从origin/release/1.2.3.4创建了一个新分支,这是我将更改推送到的分支。我想要的是将63fac96和4a1ea73的基础重新设置为origin/MyNewBranch。我怎样才能正确地做到这一点
编辑:
我希望将发布版/1.2.3.4中的两个提交63fac96和4a1ea73重新设置为origin/MyNewBranch,并仅在那里保留它们。我理解问题如下: 您意外地将两个提交合并到了release/1.2.3.4中,这两个提交是针对另一个分支的。在此之后,其他人也加入了同一分支 您希望将这些提交从发布版/1.2.3.4分支中删除,并移动到它们所属的新分支
我的假设:
- 你不在乎保留那些承诺中的SHA1(即,我提议的是cherry pick)
- 您确实希望保留发布分支上的历史记录
- 你不在乎在现有的MyNewBranch上保留这个州。在它的位置创建一个新的对你来说是可以的
- 删除MyNewBranch分支。您将创建一个同名的新名称:
- 检查26bd737(事故发生前的SHA1):
- 从此处创建新分支:
- 请按照正确的顺序选择两个提交:
- 推动这一分支:
- 签出发布分支:
- 将不应该存在的两个提交按相反顺序还原为它们在其中提交的内容:
- 推动该分支:
就这样。你完了。Helm可能会创建一个新的软件包。我不能仅仅基于模糊的描述和屏幕转储来理解你的问题。如果可能,请包括分支图。现在清楚了吗?这是我以前尝试过的。这给了我:自动合并repo/index.yaml冲突(内容):在repo/index.yaml中合并冲突错误:无法应用af30075。。。[ci skip]build 94:手动解决所有冲突,使用“git add/rm”将其标记为已解决,然后运行“git rebase--continue”。您可以跳过这个提交:运行“git-rebase--skip”。要中止并返回到“git-rebase”之前的状态,请运行“git-rebase--abort”。无法应用af30075。。。[ci skip]build 94:如果您在LinkedIn上与我联系,并向我展示您执行上述每个步骤时的具体情况,我可能会有所帮助。谢谢Alex,但我最终删除了我的提交并再次推送了它们。
/--- origin/MyNewBranch ---
--- origin/release/1.2.3.4 ---/
git branch -D MyNewBranch
git checkout 26bd737
git checkout -b MyNewBranch
git cherry-pick 63fac96
git cherry-pick 4a1ea73
git push origin MyNewBranch --force
git checkout release/1.2.3.4
git revert 4a1ea73
git revert 63fac96
git push origin release/1.2.3.4