Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git重新设置错误提交的基础_Git_Rebase - Fatal编程技术网

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

我将一个提交(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

    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):
  • 从此处创建新分支:
  • 请按照正确的顺序选择两个提交:
  • 推动这一分支:
这个分支完成了

发布/1.2.3.4
  • 签出发布分支:
  • 将不应该存在的两个提交按相反顺序还原为它们在其中提交的内容:
  • 推动该分支:

就这样。你完了。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