ブランチ作成時
新しいブランチを作成してリモートに紐づけてpushする基本の流れです。
-u を付けることで、以降は git pull だけで動くようになります。
git checkout -b <branch>
git push -u origin <branch>
追跡設定(既存ブランチ)
-u なしでpushしたブランチに後から追跡設定を行う方法です。
# 現在のブランチに追跡を設定
git branch --set-upstream-to=origin/<branch> <branch>
# 追跡未設定のブランチを一覧確認
git branch -vv | grep -v '\[origin'
# ※ `: gone]` と表示されているものはリモート削除済みを示す
mainの変更を他ブランチに反映
mainブランチで行った変更を他のブランチに取り込む方法です。
# merge(シンプル)
git checkout <branch>
git merge main
# rebase(履歴をきれいに保ちたい場合)
git checkout <branch>
git rebase main
# article/ ブランチをまとめてmerge(競合が出た場合はそこで停止)
git branch | grep 'article/' | xargs -I{} sh -c 'git checkout {} && git merge main'
リモート削除済みブランチの掃除
リモートで削除されたブランチをローカルからも整理する方法です。
# リモートの削除情報を取得(origin/xxx の参照が消える。ローカルブランチは残る)
git fetch --prune
# リモート削除済みのブランチを一覧確認
git branch -vv | grep ': gone]'
# リモート削除済みのブランチを一括削除
git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d
# マージ済みブランチを一括削除
git branch --merged main | grep -v '^\*\|main\|master' | xargs git branch -d
ローカルのみのブランチ削除
リモートに存在しない、ローカルだけのブランチを削除する方法です。
# マージ済みを削除
git branch -d <branch>
# 未マージでも強制削除
git branch -D <branch>
worktreeの管理
git worktreeの一覧確認・削除・掃除の方法です。
# 一覧確認
git worktree list
# 特定のworktreeを削除
git worktree remove <path>
# 存在しないworktreeの参照を掃除
git worktree prune
# main以外を一括削除(未コミットがある場合は --force が必要。変更は消えるので注意)
git worktree list | grep -v 'bare\|main\|master' | awk '{print $1}' | xargs -I{} git worktree remove {}