Git作業の効率化!gitconfigのaliasとzshrcのおすすめ設定

2018.11.19

Git操作は前職がコマンドで完結させる会社だったため、今もプライベート含め開発時は基本的にSourceTreeのようなGUIツールを使わずにgitコマンドかtigを使っています。

そんな時に一々git checkout ~~のように入力するのは手間なのでgitconfigにaliasを、ものによってはzshrcにaliasを設定して効率化しています。

gitのaliasを設定する方法については以下の記事を参照して下さい
【初心者でもOK!】gitコマンドのaliasを設定して楽をする方法 | Yuuの悠々自適Blog

gitconfigのalias

以下が私めの~/.gitconfigのalias部分になります

色々な人の記事を参考にしながら自分なりアレンジをしこのような状態になっています。

私の上記の設定のうちseeprlistを再現するためにはhubコマンドが使える必要があるため、未インストールの人はHomebrewなどを使って導入してから使って下さい。

hubコマンドの導入には以下の記事が参考になりそう
Github hubコマンドを使ってみる - Qiita

いくつかこだわっていたり気に入っているものをご紹介

git bra

bra = branch -a -vv

追跡ブランチも含めて全てのブランチを表示。

-vvとする事でコミットタイトルも見えるようにしています

git bra

以前何かの記事では-vvvとなっていた気がしてそういう風に設定したんですが、違いが分からないので-vvに。

git l・git la

l = log --graph --date=short --pretty=\"format:%C(yellow)%h %C(cyan)%ad %C(green)%an%Creset%x09%s %C(red)%d%Creset\"
la = log --oneline --decorate --graph --branches --tags --remotes

ログを見るためのもの。

git lはカレントブランチを表示

git l

git laは全てのブランチを表示

git la

tig使っている人には伝わるかもというところで書くと、
git lgit latigtig --allの関係です。

後に紹介するzshrcにgit laggというaliasとして登録しているのですが、私はしょっちゅうログの確認をするので使用頻度はかなり高いです。

前職ではリリース作業の際に、ローカルでゴニョゴニョしてからGitHubに上げてうんぬん。
という流れが多く、その際にログの確認大切!と思ってからgit laを使うようになりました。

ログ見ながら作業をすると今自分が何をしていてどのコミットにいるか分かりやすいので、
今はrebaserebase -icherry-pickなどどんなコマンドでもgit laを挟んで確認するようにしています。

git see(hub see)

see = browse

hub browseでGitHubの該当するリポジトリのページが見られますが、browseがとにかく打ちづらい・・
という事で登録しています。

browseとタイプして2回ぐらい間違えそうになりました、危険

git save

save = stash save -u

これは git save "stashのメッセージ"とする事で未追跡(untracked)のファイルも一緒にstashしつつ、stashのメッセージを付けられます

「untrackedも含めてstashしたいんだけどどうやるんだっけ?」となる事が多く、前職の先輩がこの設定をしていたのでありがたくマネさせてもらいました。

git aliases

aliases = !git config --get-regexp alias | sed 's/^alias.//g' | sed 's/ / = /1'

コメントアウトしている参考ページほぼまんまです。笑

あまり使わないgitのaliasは忘れてしまう事が多いため、
(特にgit pr(hub pr)git list(hub list)
このコマンドを使って思い出せるようにしています。

忘れやすいalias以外も含め内容の確認が出来るのでありがたいです。

zshrcのalias

続いて~/.zshrcのgit関係のalias設定

zshrcに設定する事で例えばgit pullpullだけに出来たり、そもそもgitというコマンド自体をgと短縮する事も出来ます。

こちらでもいくつかご紹介

g

alias g="git"

これは設定されてる人結構いるのかな、というイメージ。

  • git st => g st
  • git ch . => g ch .

のようにgitというコマンド自体を短縮する事が出来ます。
gitて打つのめんどさい!」という人はぜひ。笑

これだけでも意外と時短になるので。

gg

alias gg="git la"

個人的に1番気に入ってるのがコレ

ggの上に設定してるgl="git l"gla="git la"は意味伝わるかと思いますが、ggて意味不明ですよねw

ログの確認を頻繁にする人間なので「g」を2回入力してすぐ確認出来るようにしています。
さっき貼った画像と同じですが、以下のような確認がすぐ出来るのはかなり助かります(自分的に)

git la

tig --allより表示速度が速く、使用頻度はかなり高めです。
(前述したように色々なコマンドの合間合間に挟んで使ってます)

ge

alias ge="gg --color | emojify | less -r"

絵文字コミットにハマっていた際によく使用していたのがコレ。
絵文字を表示しつつ、ログを確認できます。

ge

emojifyが必要になるので注意
mrowa44/emojify: Emoji on the command line

push

alias push="git push origin HEAD"

現在のブランチをpushします。そのまんまですね。笑

取り上げた理由としては--force-with-leaseの事を軽く書きたいなと思ったからです。

これも会社の先輩に教わった事なんですが、私は普段pushする際に--forceではなく--force-with-leaseという、pushするブランチが最後にfetchしたタイミングとリモートが違う状態の場合pushに失敗するオプションを使っています。

--forceではなく--force-with-leaseを推奨する人も多いイメージなので、
以下のようなaliasを設定している人も多いかなと思うのですが、

ここのオプションはきちんと選択したいな、と思ってるので(怖いからw)いつも以下のように打っています。

若干面倒ではあるのですが、「zsh-autosuggestions」というのを使用しているのでそこまで手間なく出来ています。
zsh-users/zsh-autosuggestions: Fish-like autosuggestions for zsh

pull

alias pull="git fetch -p && git pull"

これは前職の先輩がgit pullをする際にこのように設定していたためaliasとして登録しました。

git fetch -pはpruneオプションを指定する事でリモートで削除されているブランチをローカルの追跡ブランチからも削除してくれる、
その後にgit pullで追跡ブランチの状態を最新にしています。

以下のようにすれば prune をgit fetchgit pullをする際のデフォルトに出来るのですが、

git fetchのタイミングで以下のような事もあり得るのでは...とチキン過ぎて踏み出せない^^;
git fetch に、 --prune がオプションなのは何故? - スタック・オーバーフロー

wipe

alias wipe="git checkout . && git clean -fd"

indexにaddしていないファイルを全てなかった事にします。
色々実験的に試した後addしたファイル以外全部なかった事にしたい、と思う事が結構あったため登録したコマンド。

中途半端な感じですが意外と使う機会があるんです。(自分だけ??w)
しかし、wipeていう名前はセンスのなさが...うーむ、いい名前がないか悩み中です。笑

実際に使うと以下のような感じ

wipe

これを導入した1番の理由がgit clean -fdが覚えられなくて、毎回git cleanのヘルプを見ないといけないめんどい!から始まっています。

t・ta

alias t="tig"alias ta="tig --all"

tig関係のコマンド、gitgと同じで1文字で使えるように出来るので便利です。

あとがき

皆さんのaliasに少しでも貢献出来るといいな、と思いつつ書いたのですがいかがでしょう?
人によりけりなところもあるとは思いますが、きっと使いやすいものもあるはず..!!

余談

aliasを設定した時のデメリットとして

  • 他の人の環境を触った時にそのクセが出てしまう
  • その場合にaliasがない状況でもある程度実行できないといけない

という事があります。

僕はデザイナーさんのhelpで入る立場だった事があり、良くtと打ってcommand not foundてなり「恥ずかしい...///」となる場面が多々ありました。笑

この記事が気に入ったらいいね!
して最新情報をチェックしよう!

スポンサーリンク