gpt4 book ai didi

困惑!提交到错误的分支

转载 作者:太空狗 更新时间:2023-10-29 14:20:46 31 4
gpt4 key购买 nike

我刚刚在 Git 存储库上做了一些糟糕的事情,我不知道如何解决这个问题。我什至不知道我是怎么把它弄成这样的……!

在存储库(托管在 git hub 上)上,有 3 个我感兴趣的分支:master、brancheA、brancheB。 brancheA 和 brancheB 不相关(涉及不同的文件)。

这是它现在的样子:

A -- B -- C -- D -- master
\ \ change_from_B_1..4 -- change_from_A_1+2 -- brancheA
\ -- merge_from_master -- change_from_A_1 -- change_from_A_2 -- brancheB

我想哭:> 是的,change_from_A 的意思是“应该在 Branche A 中的更改”!最糟糕的是,在分支 A 中,在我将 master merge 到分支 B 之前,有 4 个提交曾经在分支 B (change_from_B_1..4) 中。现在,这 4 个提交在 brancheA 中(如何??)而不再在 brancheB 中。

我不知道我做了什么来解决这个问题,如果有帮助的话,这里是我的 git reflog 的一些摘录:

    b8b5db7 HEAD@{0}: checkout: moving from brancheA to brancheB
015fdc1 HEAD@{1}: checkout: moving from brancheB to brancheA
b8b5db7 HEAD@{2}: checkout: moving from brancheA to brancheB
015fdc1 HEAD@{3}: checkout: moving from master to brancheA
3830ccb HEAD@{4}: checkout: moving from brancheB_tmp to master
2a9ba60 HEAD@{5}: cherry-pick: change_from_B_1
3830ccb HEAD@{6}: checkout: moving from 3830cc to brancheB_tmp
3830ccb HEAD@{7}: pull origin master: Fast-forward
8ef3368 HEAD@{8}: checkout: moving from brancheB to master
b8b5db7 HEAD@{9}: pull origin brancheA: Merge made by recursive.
cc17c2e HEAD@{10}: pull origin brancheB: Fast-forward
d867eff HEAD@{11}: HEAD^^: updating HEAD
cc17c2e HEAD@{12}: checkout: moving from brancheA to brancheB
015fdc1 HEAD@{13}: commit: change_from_B_6?? (lost :<)
2f650f6 HEAD@{14}: commit: change_from_B_5?? (lost :<)
9098bfa HEAD@{15}: commit: change_from_A_1+2
01c7a5e HEAD@{16}: HEAD^^^: updating HEAD
cc17c2e HEAD@{17}: checkout: moving from brancheB to brancheA
cc17c2e HEAD@{18}: merge brancheA: Fast-forward
d867eff HEAD@{19}: checkout: moving from brancheA to brancheB
cc17c2e HEAD@{20}: commit: change_from_A_2
3bee54e HEAD@{21}: checkout: moving from brancheB to brancheA
d867eff HEAD@{22}: checkout: moving from brancheA to brancheB
3bee54e HEAD@{23}: commit: change_from_A_1
d867eff HEAD@{24}: checkout: moving from d867eff to brancheA
d867eff HEAD@{25}: checkout: moving from brancheB to another_branch
d867eff HEAD@{26}: checkout: moving from another_branch to brancheB
d867eff HEAD@{27}: checkout: moving from d867eff to another_branch
d867eff HEAD@{28}: commit (merge): Merge branch 'master' of super_github
01c7a5e HEAD@{29}: commit: change_from_B_4
1dbc4e1 HEAD@{30}: commit: change_from_B_3
52417fa HEAD@{31}: commit: change_from_B_2
8e5d258 HEAD@{32}: commit: change_from_B_1
8ef3368 HEAD@{33}: checkout: moving from master to brancheB

对我来说,一切看起来都很正常,直到我开始引入 brancheA(d867eff HEAD@{24}: checkout :从 d867eff 移动到 brancheA)。当时,我只是在写代码,并不真正关心 git……大错特错。无论如何,我不确定是什么造成了困惑,是 cc17c2e HEAD@{18}: merge brancheA: Fast-forward?我不记得问过那个......!剩下的可能是让困惑变得更糟的原因,我很惭愧把它放在这里,但在这一点上,我真的很无助。

我考虑过从头开始并重新生成来自 master 的所有提交,但是我会丢失代码审查者在 github 上的所有评论,这将是一个巨大的损失。

我想做什么:

  • 删除brancheB中的change_from_A_1/change_from_A_2
  • 从master merge 之前,将brancheA中应该在brancheB中的提交移回

要达到这样的目的:

A -- B -- C -- D -- master
\ \ -- change_from_A_1+2 -- brancheA
\ change_from_B_1..4 -- merge_from_master -- brancheB

您有什么建议吗?谢谢!!

最佳答案

你总能解决这类问题。

  1. 分别在branchA和branchB创建oldBranchA和oldBranchB。
  2. 将 branchA 重置为 master,将 branchB 重置为 B
  3. checkout 分行A
  4. 精挑细选 change_from_A_1+2
  5. checkout 分行B
  6. 精心挑选 change_from_B_1..4,然后 merge_from_master
  7. 删除旧分支A和旧分支B
  8. 要返回原点,请执行 git push -f branchA:branchA。但在这样做之前请三思,因为您要做的是覆盖已发布的历史记录!!

关于困惑!提交到错误的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018447/

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