Gitリポジトリで何かひどいことをしただけで、この問題にどのように取り組むかわかりません。どうやってこんなに散らかったのかわからない…!
リポジトリ(gitハブでホストされている)には、master、brancheA、brancheBの3つのブランチがあります。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は「ブランチAにあるべき変更」を意味します!最悪のことは、branche Aに、masterをbrancheBにマージする前に、brancheB(change_from_B_1..4)に使用される4つのコミットがあることです。現在、これらの4つのコミットはbrancheA(how ??)にあり、brancheBにはありません。
この状況に到達するために私が何をしたのかわかりません。それが役立つ場合は、gitreflogからの抜粋を次に示します。
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}:チェックアウト:d867effからbrancheAへの移動)の導入を開始するまで、すべてが正常に見えます。当時、私はコーディングをしているだけで、gitについてはあまり気にしていませんでした...大きな間違いです。とにかく、何が混乱を引き起こしたのかわかりません。それはcc17c2e HEAD @ {18}:マージbrancheA:早送りですか?私はそれを求めたのを覚えていません...!残りはおそらく混乱をさらに悪化させたものであり、私はそれをここに置くことを非常に恥ずかしく思いますが、この時点で、私は本当に無力だと感じています。
ゼロから再起動し、マスターからすべてのコミットを再生成することを検討しましたが、コードレビューアーからのgithubに関するすべてのコメントが失われ、大きな損失になります。
私がしたいこと:
- brancheBのchange_from_A_1/change_from_A_2を削除します
- マスターからマージする前にbrancheBにあるはずのbrancheAのコミットを元に戻します
そのようなものに到達するには:
A -- B -- C -- D -- master
\ \ -- change_from_A_1+2 -- brancheA
\ change_from_B_1..4 -- merge_from_master -- brancheB
何か提案はありますか?ありがとうございました!!