皆様、hub使ってますか?
以前少しだけ使って結局使うのをやめてしまったのですが、最近また使い始めたのでこの機会に共有させてください。
本記事の対象者
- GitHubを使っている人
- 特にWIP手法で開発している人
- すこし楽したい人
hub?
GitHubが提供しているコマンドラインツールです。
issue書いたり、PRを作ったりがコマンドでできます。
インストール
こちらにありますが、Macユーザーの場合は以下で完了します。
brew install hub
WIPなPRを新しく作る
これまでのやり方(嶋生の場合)
※参考までに()内に個人的なエイリアスを使った場合を記載。
- 新しいブランチを作成。
git checkout -b hoge
(git co -b hoge
) - 空コミット作成。
git commit --allow-empty -m '[WIP][ci skip]〇〇をやる'
(git cme -m '[WIP][ci skip]〇〇をやる'
) - リモートリポジトリにpushする。
git push -u origin hoge
(git pc
) - GitHubに移動し、ポチポチPRを作る。
hubを使う場合
- 前提として、
~/.gitconfig
に以下のエイリアスを設定しておく
[alias]
mkpr = !"f() { git commit --allow-empty -m \"$1\" && git push -u origin HEAD && hub pull-request --draft; }; f"
- 新しいブランチを作成。
git checkout -b hoge
(git co -b
) - 新しいPRを作成。
git mkpr '[ci skip]〇〇をやる'
- 空コミット作成してpushしてPR作成を一度にやってます。
- 前提としてpushしたいブランチにチェックアウト済の必要があります。(いまいるブランチをpushする)
- PRをDraftで作成するようにしているのでタイトルから
[WIP]
は削除しています。
実際に↓のような感じで使ってます!
気になる方はぜひ使ってみてください!!
その他:gitconfigをさらす
以下、自分の設定です。「こんな設定もいいよ!」というのがあったら教えてください。
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
lga = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
st = status
cm = commit
br = branch
co = checkout
# 行ごとの差分じゃなくて,単語レベルでの差分を色付きで表示する
difff = diff --word-diff
diffc = diff --cached
cme = commit --allow-empty
pc = push -u origin HEAD
# use hub command
see = browse
mkpr = !"f() { git commit --allow-empty -m \"$1\" && git push -u origin HEAD && hub pull-request --draft; }; f"
[color]
ui = true
[url "git@github.com:"]
...
[user]
...
[core]
editor = vim
pager = nkf -w | LESSCHARSET=utf-8 less
[commit]
template = ~/.commit_template
特筆することはあまりない感じですが、1つ紹介すると git diffc(git diff --cached)
はよく使います。
通常のgit diff
が Untrackedなファイルのdiffを表示してくれるものですが、git diff --cached
はgit add
したファイルのdiffを表示してくれます。
複数ファイルを編集している状態で一部ファイルだけcommitしたいときなどに「どれaddしたっけなぁ」の確認のためなどに使ってます。あとは(言葉では説明しづらいのですが…)完成した部分から順にaddしていくみたいな使い方のときに使ってます。