ブランチで作業していると、計画していたよりも多くの成果が得られる場合があり、これまでに行ったことの一部を別のブランチに分割する価値があることに気付くことがあります。
たとえば、邪魔になったバグを修正したり、ドキュメントを追加したり、途中で気付いた小さな機能を修正したりする場合などです。
行った作業の一部を新しいブランチに分割する最も簡単な方法は何ですか?
を使用checkout -i
して、新しいブランチに入れたいビットを対話的に選択し、それをコミットしてからgit revert
、大きなブランチで を使用して、分割したものを削除します。
例えば
---A - @{upstream}
\
\--B--C - LargeBranch
SplitBranch
LargeBranch が基づいているのと同じ上流ブランチから新しいブランチを作成し、そこに必要な変更をインタラクティブに選択します。
git checkout -b SplitBranch @{upstream}
git checkout -i LargeBranch
git commit
その結果:
---A - @{upstream}
|\
| \--B--C - LargeBranch
\
\--D - SplitBranch
SplitBranch
次に、次を使用して、分割したものを簡単に削除しますgit revert
。
git checkout LargeBranch
git revert halfFoo
---A - @{upstream}
|\
| \--B--C--E - LargeBranch, E is inverse of D.
\
\--D - SplitBranch
LargeBranch
に移動したコンテンツはもうありませんSplitBranch
。
新しいブランチを作成して、混乱の前の都合の良い時点で「多すぎる」変更を受け取り、git cherry-pick
オリジナルからそれにコミットしてから、オリジナルからgit rebase -i
それらをコミットします。チェリーピッキングの前に、いくつかのコミットを分割することがあります。
何も失われないようにするgit branch save
には、HEAD から始めます。そうすれば、既存のブランチをいじることができます。すべてを吹き飛ばしてやり直します。