gpt4 book ai didi

git - 从存储库中删除不正确的 merge

转载 作者:太空狗 更新时间:2023-10-29 13:25:52 24 4
gpt4 key购买 nike

我对标题不满意,但我认为我的解释过于复杂,但最终还是像上面一样简单。

我们正在使用一个分支模型,它有一个中央源代码库,一个“开发”分支,这个分支有功能分支。

我在 develop 分支上开发了一组本地更改,例如:

develop (A)- (D1) - (D2)
\ - (F1) - (F2) - (F3) - (F4)

在这一点上,我在我的 git gui 中滑倒了,我没有将我的功能分支作为远程分支推送到 origin,而是以某种方式将它推回了 origin/develop。所以,我们现在有:

develop (A)- (D1) - (D2) -      -      (M1)
\ - (F1) - (F2) - (F3) - (F4) /

我们还不想要。由于在这一天只有我自己和另一个开发人员,我登录到原始主机并将开发头操作回 D2 提交,将我的功能分支操作回 F4。我让我的同事在我这样做之前不要 pull ,因此认为一切都很好。

(实际上,我克隆了原始仓库,在本地更改了头部,然后将它们强制推回到上游。我实际上不记得确切的命令,但据我所知,结果是所需的仓库可以看到)。

我忘记的是,我们的持续集成系统正在定期 pull 并设法获得 merge 头部的副本。一周后,我注意到 cruisecontrol 在原始主机上进行了一些提交,并有一种不好的感觉。果然,它正在将 origin develop head merge 到其本地“feature branch merged”repo。

所以我们现在的情况有点像这样:

巡航控制 repo :

      (from origin/develop)            (C1) - (C2) - (C3)
develop (A)- (D1) - (D2) - - (M1) \ (M2) \ (M3)
\ - (F1) - (F2) - (F3) - (F4) /

来源 repo :

develop (A)- (D1) - (D2) - (C1) - (C2) - (C3) 
\ - (F1) - (F2) - (F3) - (F4)

其中 C1 和 C2 是由我们这些拥有“更正” repo 的开发人员提交到原始 repo 中的(即在我的头脑操作以撤消我最初的错误之后),而 M2 和 M3 是 cruisecontrol repo 现在的 merge 提交不得不做。

现在我做了一些真的蠢事。我在 cruisecontrol 源代码库中“git push”。因此,我们的“原始”存储库现在具有 M1 merge 以及中间的 M2 和 M3 merge 。

我又一次让我的同事暂时不要 pull 。但是,我的 git-foo 不够强大,无法在原始存储库中将 Mx 和 Cx 提交相互分离并将事情恢复到应有的状态。

认为我需要用 HEAD^(x) 和 HEAD~(y) 做一些聪明的事情,但这是一个很难简洁解释的情况,因此很难用谷歌搜索。

欢迎所有建议;我有一个正在运行的存储库的每晚备份,可能可以从中恢复并让每个人从今天开始重新推送他们的提交,但我想知道这种类型的分支梳理是否完全可行。

我想我应该能够像上面的源图一样以源 repo 结束,cruisecontrol repo 被删除并重新克隆,并且 M 系列提交准备好在源 repo 中被垃圾收集。

谢谢!

最佳答案

git 中具有相同散列的所有提交都是相同的(历史也是如此),因此您应该能够在源和 CI 存储库中使用相同的命令(假设 develop已 checkout :

# on the current branch:
git reset --hard C3
# on your feature branch:
git branch -f feature F4

git push 默认情况下不应强制推送,并且您没有在问题中说明 CI -> origin 推送发生的位置,所以我假设这是一个快进推送(默认)

对于 future 我建议你的 CI 存储库做一个 git fetch + git reset --hard origin/develp,除非你想你的分支 merge 在一起(可能与提交仅存在于 CI 仓库中)

关于git - 从存储库中删除不正确的 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com