git関連の設定【自分のPCで使用しているソフトウェア,設定の紹介 #9】
今回はgit関連の設定の紹介をしたいと思います。
gitの使い方としては,大きく分ければ自分自身がかかわる(コミットする)リポジトリの管理を行う,ということと,他の人の便利なプロジェクトをローカルに持ってくる,という使い方です。
ghqは使っていない
よく流行っているコマンドラインツールでghqがありますが,僕はこちらは使っていません。 というのも,一元管理するほどたくさんのリポジトリをクローンしていませんし,Vimやzshのプラグイン管理はすべてプラグインマネージャに任せているからです。
という意味で,よくコミットするプロジェクトは限られていますし,そこでの手間を減らして生産性を上げたいというのがモチベーションになっているかと思います。
tig便利
外部ツールとして僕が使っているのはtigです。
TUIでのグラフィカルな表示は見やすいですし,コミットするときに1
のショートカットで1行ずつコミットに含めるよう指定していけるというのは,かなり直観的でかつおもしろい機能だと思います。
こちらに自分の設定ファイル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-gitaはあまりその機能を活用できていない気がしますが,vim-gistaの方はまだ使っている方かなと思います。ブラウザを立ち上げずに,自分の過去のgistが見れる&編集できるので便利です。
その他のソフトウェア,ツール
細かいところで言えばzshのプロンプトや,vimのlightlineの機能で情報を表示したり,というところです。 ここらへん,コピペしてほとんどいじっていないので,興味がある方は自分で調べてみるといいと思います。
あと個人的に使っているのはREADME自動生成のスクリプトです。
あるディレクトリでこのコマンドを実行すると,各ファイルの#=#=#=
と#=#=
で挟まれたコメント部分をドキュメントとして認識して,切り出して一つのテキストにまとめるというスクリプトです。
このとき各ファイル名を見出しにし,ファイルへのリンクも張ります。
汎用性をもたせようと思えば,ヘッダー部分とフッタ−部分をテンプレート形式にしたり,あるいはpandocなどのドキュメント生成ツールを組み合わせることで,他の形式での出力を行うようにしたりできると思います。
が,自分のモチベーションとしてはdotfiles/binやdotfiles/zshfiles/functionsのREADMEを簡単に作りたかったということで,それは達成されているので,時間があれば取り組もうかと思っている段階です。
まとめ
これくらいでまとめますが,自分がまだまだgitの機能を活用しきれていないなぁと感じました。 branchなども,細かい単位で分けていくほうがいいのでしょうが,どうしてもmasterだけでどんどん進めてしまったり,コミットの単位が大きくなってしまったりと,改善することはたくさんあるように感じています。
修論もgitで管理しているのですが,あまりうまく管理できていなくて(コミットの単位が大きすぎる,破壊的変更多い等),今後うまく管理する練習をしていけたらと思います。
遅くなりましたが,最後まで見てくださった方,ありがとうございました。
明日(今日)はVim関連の設定について書きます。 たぶん長くなると思うので,定番はさらっと流してオリジナル性の高いものを中心に。