私が持っているもの:
---A----B-----C-----D--------*-----E-------> (master)
\ /
1----2 (foo)
必要なもの:
---A---------------D--------*-----E-------> (master)
\ /
1----2 (foo)
少し前に、自分の git リポジトリから削除したい 2 つのコミットを行いました。さまざまなリベース「チュートリアル」を試しましたが、それらはすべて奇妙な git 履歴で終わったので、サンプル リポジトリを作成しましたが、結果は期待したものではありません。私が欠けているものを理解するのを手伝ってくれる人はいますか?
2 つのブランチがmaster
ありfoo
ます。削除したい単一のファイルでコミットBを作成し、このファイルを変更した場所でコミットCを作成しました。他のコミットに沿って、私はこのファイルに二度と触れませんでした。
コミット ID:
A: f0e0796
B: 5ccb371
C: a46df1c
D: 8eb025b
E: b763a46
1: f5b0116
2: 175e01f
だから私はBとCrebase -i f0e0796
を使用して削除しますよね?結果を正しく解釈すると、これが私のレポに表示されるものですが、2番目のブランチがまだリストされています。 5ccb371
a46df1c
gitk
git branches
---A-----1----2---E------> (master)
ここで何が起こったのか誰か教えてくれませんか?
編集: これは、最初のグラフからレポを再作成する方法です。
git init foo
cd foo
touch A
git add A
git commit -m "add A"
touch B
git add B
git commit -m "add B"
echo "modify" > B
git add B
git commit -m "modify B"
touch C
git add C
git commit -m "add C"
git checkout -b foo
touch 1
git add 1
git commit -m "add 1"
touch 2
git add 2
git commit -m "add 2"
git switch master
git merge foo --no-ff
touch E
git add E
git commit -m "add E"