GitHub の Pull Request の作成/終了に付随する作業を alias を使って楽にする
Pull Request に付随する「ちょっとめんどい」作業
GitHub で Pull Request (プルリクエスト) を作成するとき、次のようなコマンドを毎回打っていませんか?
$ git checkout -b feature/hoge $ git commit --allow-empty -m 'Make PR' $ git push origin feature/hoge $ hub pull-request
※ 最終行のコマンドは git のコマンドライン支援ツール「hub」のインストールが必要
または Pull Request (プルリクエスト) がマージされた後に、次のようなコマンドを毎回打っていませんか?
$ git checkout master $ git pull origin master $ git branch -D feature/hoge
簡単なコマンドではありますが、冷静に考えると ちょっと面倒くさい ですよね。これらは git に備わっている alias (エイリアス) という機能を使うと、ひとまとめにできます。
検証環境
- macOS Sierra 10.12.3
- git 2.8.4
- hub 2.2.3
git のコマンドライン支援ツール「hub」のインストールが行われている前提で進めます。導入されていない方は、下記の記事を参考にインストールしておきましょう。
ブランチを作って空コミットしてプッシュして Pull Request を作成する
Pull Request を作成するときには、通常では以下の作業を行います。
- ブランチを作成する
- ブランチに対して空コミットする
- リモートリポジトリに push する
- 作成したブランチの Pull Request を作成する
これを一発で行うようにするには .gitconfig
に以下を登録します。
[alias] ec = !git commit --allow-empty -m \"Make PR\" mkpr = !"f() { git checkout -b $1; git ec; git push -u origin $1; hub pull-request; }; f"
※ ec
は「empty commit」の略、mkpr
は「make pull request」の略
これで、ベースとなるブランチで以下のコマンドを実行すると Pull Request が作成できます。
$ git mkpr feature/hoge
Pull Request がマージされた後に master を pull してブランチ消す
Pull Request がマージされた後には、通常では以下の作業を行います。
- master (または develop) を checkout する
- master (または develop) の最新コミットを pull する
- master と develop 以外のマージ済みのローカルブランチを全て削除する
git-flow を使っている場合は git flow feature finish hoge
で行えますが、git-flow を使わない場合でも同様のことは簡単に行えます。
.gitconfig
に以下を登録します。
[alias] d = !git branch --merged | grep -vE '^\\*|master$|develop$' | xargs -I % git branch -d % end = !"f() { git checkout $1; git pull origin $1; git d; }; f"
これで、マージ後のブランチ内で以下のコマンドを実行するだけで完了します。
$ git end master
まとめ
ちょっとした作業も、積み重なると大きなタイムロスになりかねません。作業を常に最適化し、本当に価値のある作業により注力できるようにしましょう。