githubにリポジトリをホスティングしている開発プロジェクトの場合のよくある開発手順
- masterからfeatureブランチを派生
git checkout -b feature/hoge
- featureブランチに空コミット
git commit --allow-empty -m "Make pull-request [ci skip]"
- githubにプッシュ
git push -u origin feature/hoge
- ブラウザでgithubを開く
- プルリク作成
これをコマンド1発で作成できるようにしました。
参考記事
GitHub の Pull Request の作成/終了に付随する作業を alias を使って楽にする | Developers.IO
hubのインストール
hubはgithubが提供しているコマンドラインツールです。
このツールを使ってコマンドラインからプルリクを作れるようにします。
インストールはbrewから
$ brew install hub
hubを使ってプルリクを作るには
$ hub pull-request
https://github.com/example/example/pull/23
これでプルリクが作られました。作成後に表示されるURLがプルリクのURLになります。
.gitconfigにエイリアス追加
gitconfigに手順をひとまとめにしたエイリアスmkpr
を作成します。
[alias]
ec = commit --allow-empty -m \"Make pull-request [ci skip]\"
mkpr = !"f() { git checkout -b $1; git ec; git push -u origin $1; open $(hub pull-request -m "$1"); }; f"
ec
は空コミットのエイリアスです。 \"Make pull-request [ci skip]\"
のコミットメッセージ部分は自由に変更してください。
mkpr
はブランチ作成, 空コミット, プッシュ, プルリク作成を順に実行しています。最後のopenはmacの標準ブラウザを開くコマンドで、hub pull-request
が返すプルリクのURLをブラウザで開きます。
$ git mkpr feature/hoge
Switched to a new branch 'feature/hoge'
[feature/hoge 47c410a] Make pull-request [ci skip]
Counting objects: 1, done.
Writing objects: 100% (1/1), 196 bytes | 196.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To github.com:example/example.git
* [new branch] feature/hoge -> feature/hoge
Branch feature/hoge set up to track remote branch feature/hoge from origin.
参考記事とはmkprのコマンドの中身を若干変えて、引数で渡した文字列feature/hoge
をタイトルにしてプルリクを作成し、ブラウザから開くようにしています。
作成後はサマリは空状態なので、適宜ブラウザからタイトルとサマリを編集しましょう。
もっと楽にしたい
GithubにはIssueとプルリクのテンプレート機能があるので、hubコマンドからプルリク作成した場合もこのテンプレートファイルを使ってサマリ部分を記述済みにしたい。