Git 乱七八糟!犯了错误的错误
我只是在Git回购上做了一些糟糕的事情,我不知道如何处理这个问题。我甚至不知道我是怎么把它弄得这么乱的 在回购协议(托管在GitHub上)上,我感兴趣的分支有三个:master、brancheA、brancheB。brancheA和brancheB是不相关的(接触不同的文件) 以下是目前的情况:Git 乱七八糟!犯了错误的错误,git,branch,commit,Git,Branch,Commit,我只是在Git回购上做了一些糟糕的事情,我不知道如何处理这个问题。我甚至不知道我是怎么把它弄得这么乱的 在回购协议(托管在GitHub上)上,我感兴趣的分支有三个:master、brancheA、brancheB。brancheA和brancheB是不相关的(接触不同的文件) 以下是目前的情况: A -- B -- C -- D -- master \ \ change_from_B_1..4 -- change_from_A_1+2 -- brancheA
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
我想哭:>是的,从A改变意味着“应该在A分支中的改变”!最糟糕的是,在branche A中,在我将master合并到brancheB之前,brancheB中有4个提交(将_从_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
你有什么建议吗?谢谢 你总能解决这类问题
谢谢对于步骤8,如何推回遥控器?我尝试了git push origin branchA,但我遇到了一个被拒绝的快进问题。“我应该强制还是意味着我在步骤上犯了错误?”安德斯,我谨慎地补充道。谢谢!我完成了所有步骤,回购似乎恢复正常!唯一的缺点是我丢失了查看代码的人对github的所有评论(cherry pick似乎重新生成了新的哈希)。我在邮件里有一份,所以没有什么大损失。@Enders,恭喜你!顺便说一句,如果您更改提交历史记录,则无法保留旧哈希。这是故意的。
A -- B -- C -- D -- master
\ \ -- change_from_A_1+2 -- brancheA
\ change_from_B_1..4 -- merge_from_master -- brancheB