読者です 読者をやめる 読者になる 読者になる

$ service ssh0 start

from everything import *

git関連の設定【自分のPCで使用しているソフトウェア,設定の紹介 #9】

2016環境紹介

自分のPCで設定しているソフトウェア,設定の紹介

今回はgit関連の設定の紹介をしたいと思います。

gitの使い方としては,大きく分ければ自分自身がかかわる(コミットする)リポジトリの管理を行う,ということと,他の人の便利なプロジェクトをローカルに持ってくる,という使い方です。

ghqは使っていない

よく流行っているコマンドラインツールでghqがありますが,僕はこちらは使っていません。 というのも,一元管理するほどたくさんのリポジトリをクローンしていませんし,Vimzshプラグイン管理はすべてプラグインマネージャに任せているからです。

という意味で,よくコミットするプロジェクトは限られていますし,そこでの手間を減らして生産性を上げたいというのがモチベーションになっているかと思います。

tig便利

外部ツールとして僕が使っているのはtigです。

TUIでのグラフィカルな表示は見やすいですし,コミットするときに1のショートカットで1行ずつコミットに含めるよう指定していけるというのは,かなり直観的でかつおもしろい機能だと思います。

f:id:ssh0:20160601011807p:plain

こちらに自分の設定ファイルtigrcが置いてあります。 ほとんどデフォルトから変更していませんが,色の設定と,コマンドの追加をすこし行っています。

メイン画面でYを押すと,カーソル下のコミットのハッシュ値クリップボードにコピーすることができるようにしたり:

bind main Y !@bash -c "echo -n %(commit) | xsel -i; xsel -o | xsel -i -b"

ステータス画面(ステージの管理などする画面)でPを押すとgit pushできるようにしたり:

bind status P ?git push origin

しています。(後者は機能としては危険なので注意)

後は^f,^bでスクロールできるようにしたり。

bind generic <C-f> scroll-page-down
bind generic <C-b> scroll-page-up

それから

bind status C !git commit -v

でコミット画面を冗長にしておくと安心できます。

gitconfigの設定には注意

gitconfigにいくつかエイリアスを指定すると,よく使う機能がストレスなく使えていいですね。

注意すべき点として,gitconfigの中でメールアドレス,GitHubでのユーザー名などを指定することができますが,これらの内容をgitconfigに書いたままdotfilesなどにあげていると,他の人が確認せずに自分のdotfilesを使うようなことがあったときに,その人が行ったコミットが,自分がやったかのように置き換えられてしまいます。

自分はそのような(光栄な)ことは起きていないですが,そういうことが起きるのも嫌なので,

[include]
    path = ~/Dropbox/conf/gitconfig.local

のようにして,ユーザー情報などは別ファイルにして管理しています。 (ファイルが存在しないときもエラーメッセージを吐かなかったと思うので,共有用の設定はこれでいいです。)

コミットを書くときに使うものたち

コミットメッセージを編集するときに,よくtypoして恥ずかしいので,~/.vim/ftplugin/gitcommit.vim

setlocal spell

と書いておくことによって,スペルチェックが有効になるようにしています。(それでもよくtypoしたままのコミットがあるのですが...)

vimではプラグインとして

  • lambdalisue/vim-gita
  • lambdalisue/vim-gista

を使っています。vim-gitaはあまりその機能を活用できていない気がしますが,vim-gistaの方はまだ使っている方かなと思います。ブラウザを立ち上げずに,自分の過去のgistが見れる&編集できるので便利です。

その他のソフトウェア,ツール

細かいところで言えばzshのプロンプトや,vimのlightlineの機能で情報を表示したり,というところです。 ここらへん,コピペしてほとんどいじっていないので,興味がある方は自分で調べてみるといいと思います。

あと個人的に使っているのはREADME自動生成のスクリプトです。 あるディレクトリでこのコマンドを実行すると,各ファイルの#=#=#=#=#=で挟まれたコメント部分をドキュメントとして認識して,切り出して一つのテキストにまとめるというスクリプトです。 このとき各ファイル名を見出しにし,ファイルへのリンクも張ります。

汎用性をもたせようと思えば,ヘッダー部分とフッタ−部分をテンプレート形式にしたり,あるいはpandocなどのドキュメント生成ツールを組み合わせることで,他の形式での出力を行うようにしたりできると思います。

が,自分のモチベーションとしてはdotfiles/bindotfiles/zshfiles/functionsのREADMEを簡単に作りたかったということで,それは達成されているので,時間があれば取り組もうかと思っている段階です。

まとめ

これくらいでまとめますが,自分がまだまだgitの機能を活用しきれていないなぁと感じました。 branchなども,細かい単位で分けていくほうがいいのでしょうが,どうしてもmasterだけでどんどん進めてしまったり,コミットの単位が大きくなってしまったりと,改善することはたくさんあるように感じています。

修論もgitで管理しているのですが,あまりうまく管理できていなくて(コミットの単位が大きすぎる,破壊的変更多い等),今後うまく管理する練習をしていけたらと思います。

遅くなりましたが,最後まで見てくださった方,ありがとうございました。

明日(今日)はVim関連の設定について書きます。 たぶん長くなると思うので,定番はさらっと流してオリジナル性の高いものを中心に。