18
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ターミナルからprコマンドで、Githubに[WIP]PullRequestを一瞬で出そう!

Last updated at Posted at 2018-09-16

実装前に、[WIP]でプルリクはあげておきたい🤗
実装目的や方法を記述しておきたいし、開発メンバーに進捗状況を可視化したいため。

でもいくつかコマンド叩くのも、Github上で緑のボタンポチるのも面倒くさい😭

そこで、一瞬でどのブランチにいても最新のmasterからブランチを切ってくれて、
[WIP]でプルリクを出してくれる prコマンド を紹介します。

要は

PullRequestを出すprコマンドなんてものは存在しないので、
$ vi ~/.bashrc などに関数として下記を定義して、
$ source ~/.bashrc を叩いてください。

alias openpr='hub browse -- pull/$(git symbolic-ref --short HEAD)'
function pr() {
  if [ $1 ]; then
    git checkout master;
    git pull origin master;
    git checkout -b `date "+%Y%m%d"`_$1;
    git commit --allow-empty -m "feat:create pull request";
    git push origin `git rev-parse --abbrev-ref HEAD`;
    hub pull-request -m "[WIP]$2";
    openpr;
  else
    echo "第1引数でブランチ名、第2引数でPRタイトルがほしーの!"
  fi
}

これで準備完了。
$ pr ブランチ名 プルリクタイトル を叩くだけ!

$ pr fix_hogefuga hogefugaのバグ修正

はい!プルリク作れました。終了。

image.png

hubコマンドないよと言われたら、下記コマンドでインストールしてください。
最初は、Githubのユーザー名とパスワードを求められます。二段階認証設定してるならそれも。

$ brew install hub

解説・補足

① masterブランチに切り替える
$ git checkout master
② 最新のmasterリモートブランチを取得する
$ git pull origin master
③ 日付_引数をブランチ名としてブランチを作成して、切り替える
$ git checkout -b `date "+%Y%m%d"`_$1

今回はブランチ名をユニークにしたいので、先頭に本日の日付を付与しています。

④ コミット対象がない場合でもコミットする
$ git commit --allow-empty -m "feat:create pull request"
⑤ 現在のブランチでpushする
$ git push origin `git rev-parse --abbrev-ref HEAD`
⑥ PullRequestを出す
$ hub pull-request -m "[WIP]$1"
⑦ ブラウザで該当リポジトリのGithubを開く
$ openpr
alias openpr='hub browse -- pull/$(git symbolic-ref --short HEAD)'

わざわざこれだけエイリアスとして切り出して関数内で読んでいる。それはなぜか関数からhub browse -- pull/$(git symbolic-ref --short HEAD)を呼ぶと、以下のように本来 pull になるものが tree になってしまい、プルリクではなくリポジトリのトップページに遷移してしまうためである。
https://github.com/OWNER/REPOSITORY/tree/BRANCH

(応用)テンプレート利用の場合

テンプレートを利用している場合は、 hub pull-request -m "[WIP]$2"; の部分だけ変更すれば大丈夫です。利用しているテンプレートのマークダウンをコピペしてください。改行は\nで。

alias openpr='hub browse -- pull/$(git symbolic-ref --short HEAD)'
function pr() {
  if [ $1 ]; then
    git checkout master;
    git pull origin master;
    git checkout -b `date "+%Y%m%d"`_$1;
    git commit --allow-empty -m "feat:create pull request";
    git push origin `git symbolic-ref --short HEAD`;
        echo -e "[WIP]$2`\n\n# 目的・背景\n\n# テスト(こんな感じでコピペ。)" | hub pull-request -F -;
    openpr;
  else
    echo "第1引数でブランチ名、第2引数でPRタイトルがほしーの!"
  fi
}
テンプレートの作り方

対象リポジトリに .github ディレクトリと、その配下に ISSUE_TEMPLATE.md PULL_REQUEST_TEMPLATE.md を作れば良いです。そうすると、issueやPullRequest作成する際に、こんな感じで、テンプレートを呼んでくれます。

image.png

備考

調べたら prコマンド って、あるんですね。印刷用にファイルを整形するコマンドだそう。
特に問題ないと思いますが気になるようでしたら、よしなに変更してください。

18
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?