Git Branch管理


オペレーションブランチ
ブランチリストのチェック、作成、名前変更、削除(branch)
git branch
git branch -a

git branch dev

git branch -m dev develope

git branch -d dev
git branch -D dev
-a(--all)オプション:リモートブランチのリストも表示されます.
-mオプション:ブランチの名前を変更します.(既存の名前は、変更する名前順に記入)
-dオプション:消去するブランチに他のブランチとして適用されていないコミットがある場合は、このオプションを使用して強制的に削除する必要があります.
ブランチの移動(switch)
git switch dev

git switch -c dev

git switch -t origin/from-remote
-cオプション:ブランチを作成し、同時に移動します.
-tオプション:リモートブランチと同じ名前のブランチをローカルで作成および移動
HEADの移動(チェックアウト)
HEADを移動すると、変更履歴が保持され、コミットファイルのステータスがローカルから移動先にインポートされます.
これは匿名ブランチ(この時点のコミット情報)に移動し、変更やコミットを行っても新しいブランチが作成されない場合、HEADを再度移動すると、この匿名ブランチは自動的に削除されます.
^と~を使用して、現在のHEAD位置に従って移動するか、特定のコミットに直接移動するか、-を使用して移動を1つのステップ前に戻します.
git checkout HEAD^^^
git checkout HEAD~~~~~
git checkout HEAD~5

git chekcout f3925c07...

git checkout -
HEADを移動する場合、新しいブランチを作成し、ブランチを伸ばすことができます.
特定のラベルに移動することもできます.
ブランチのマージ
特定のコミットのみを他のブランチからインポート(cherry-pick)
cherry-pickは,ブランチを統合するのではなく,特定のコミットをコピーすることによってブランチの概念を整理する.
git cherry-pick cadfd026...
Gitの2つの合併戦略
  • Fast forward:共通のコミットを祖先とする2つのブランチがあり、1つだけ後続のコミットがある場合は、新しいコミットを作成する必要はなく、ヘッダのみを移行するポリシーです.
  • 3-way merge:新しいコミットを作成し、このコミットにマージします.
  • Fast Forwardの欠点:どのブランチを使用したのか、いつ合併したのか分からない.
    ブランチ履歴を保持してマージ(merge)
    ブランチと作業の履歴は、ブランチをマージしても保持されます.
    (featureブランチをdevブランチにマージする場合はdevブランチに移動します)
    git merge feature
    git merge --no-ff feature
    git merge --abort
    --no-ff:Fast forwardポリシーではなく、3ウェイmergeポリシーを使用します.
    --abortオプション:mergeが競合したときにmergeをキャンセルするために使用します(rebaseでも使用できます).
    他のブランチのコミットを1つのブランチにマージ
    --squashオプションを使用してマージすると、そのブランチのすべての変更が現在のブランチコミットの停止領域に入ります.
    コミットにマージできます.
    git merge --squash feature
    ブランチはそのままで、個別に削除する必要があります.
    ブランチ履歴の削除とマージ(rebase)
    ブランチを作成した履歴を削除した後、最近コミットした履歴をまとめます.
    (featureブランチをdevブランチにマージする場合は、featureブランチに移動します)
    git rebase dev
    rebaseはfeatureブランチをdevブランチの末尾に接続する役割のみを果たします.
    devブランチにマージするには、devブランチに移動した後に接続するfeatureブランチとmergeを追加する必要があります.
    チームメンバーと共有されているコミットでは、rebaseは使用しないほうがいいです.(衝突リスク)
    別のブランチから派生したブランチのみを移動
    特定のブランチから派生したブランチのみを他のブランチに接続できます.
    次にFast Forward戦略で統合すれば、mainにスムーズに接続できます.
    git rebase --onto main dev feature
    上のコマンドを説明します:devブランチのfeatureブランチをmainブランチに移動することを示します
    ブランチのマージ時に競合が発生した場合の解決方法

  • merge:競合コードを表示して整理し、コミットするとマージされます.

  • rebase:競合するファイルをクリーンアップして追加し、rebaseの「continue」オプションを使用して、コミット後に次のファイルに繰り返しクリーンアップします.
  • git rebase --continue
    合併後の分岐はすぐに消したほうがいいです.そうすれば、後で混同されません.