@k_bigwheelが使い倒しているgit/ghコマンドのイデオム一覧
社内で共有したいと思ったので僕が普段良く使っているコマンドを書き出しました。
リモートブランチから最新情報を取ってきてrebaseするコマンド
git fetch origin --prune --tags -f && git rebase origin/HEAD
開発中は10分に1回ぐらいの頻度でやります。
完成したブランチをpushしてPRを作るコマンド
git push origin HEAD && gh pr create --assignee @me --fill -w
めちゃ便利。コマンドからPRを作れるようになったおかげで修正開始からPR作成までが5分以下になりました。
ヒストリーをいい感じに出すコマンド
git history
のオプションは各々好みがあると思いますが、僕はこれをデフォルトにしています。
git log --stat=300,300 --stat-graph-width=20
ヒストリーをいい感じに出しつつ変更内容も表示するコマンド
git log --stat=300,300 --stat-graph-width=20 --patch
安全にforce pushする方法
git push origin HEAD -f --force-with-lease --force-if-includes
たしかここで教わりました。
git push -f が更に安全になる --force-if-includes - id:onk のはてなブログ
rebaseを使う場合、force pushする機会は多いです。
そんなときもこのオプションのおかげで知らないcommitが混ざっていないか不安になったりチェックに時間を割いたりせずに安心してpushできるようになりました。
直前のコミットに追加し忘れたファイルを追加する方法
git commit --amend --verbose
amendオプションは良い解説がたくさんあるので詳細はそちらに譲ります。
修正を一時的に退避・保存させる方法
git stash save
こちらもamendと同じく。
リモートmainにマージ済みのローカルブランチを安全に削除する方法
git checkout 削除したいブランチ
set target_branch HEAD && set current_branch (git branch --show-current) && git fetch origin --prune --tags -f && git checkout origin/$target_branch && git branch -d $current_branch
※ setコマンドや()による評価はfishシェル用なので、zshやbashの場合は書き換えてください
ローカルブランチを削除するとき、このブランチってすべてマージ済みだっけ?と迷うことがあると思うんですが、このコマンドを使うとマージ済みのブランチは削除、マージしていないブランチは残す、ということが自動でできます。
補足
上記コマンドではdetached HEAD状態になりますが、僕はdetached HEADを活用する開発を行っているため、これで問題ありません(もう5年以上このスタイルでやっています)。そうでない人は自分向けに少し修正したほうが使いやすいと思います。
detached HEADを活用する開発について: gitのローカルリポジトリでmasterやdevelopは使うな!
スポンサー
この記事はSpeeeでの業務中に書きました。
Discussion