はじめに
多くの開発現場,昨今では大学の研究室などにおいてもgit
の利用が拡大しているそうです.
git
を用いることで,多数のソースコードを管理するだけでなく,論文などの添削にも活用できることが知られています.
OSSの世界ではGitHubなどで公開すれば,多くの人に使ってもらえたり,
あるいは,GitLabサーバなどを自前で構築し完全にクローズドな環境でバックアップ・共同作業をすることも可能です.
しかしながら,git
は出来ることが多いことの代償として,覚えることも多いです.
そのため,いざ研究室などに導入しようと思い立っても学習コストの面で進まなかったりします.
公式のドキュメントを参照しようにも全てが詳細に書かれており,
ある程度git
に慣れた人でなければしりすごみしてしまうでしょう.
そこで,今回はClick
というPython
のライブラリを用いて簡単にgit
を体験できるツールを作成しました.
本稿はそのツール,GCH (Git Commit Handler)1の紹介になります.
ソースコード
ソースは全てGitHubのこのレポジトリで公開しています.
Pull RequestやIssue大歓迎です.
使い方
詳しくはドキュメントをみてください.
また,コマンドのどの段階でもCtrl-C
で抜け出せます.
インストール
$ brew tap scstechr/gch
$ brew install gch
オプション
$ gch --help
Usage: gch [OPTIONS]
Options:
-i, --init Run initializer >Default:False
-v, --verbose Verbose option. >Default:False
-l, --log Git log with option. >Default:False
-r, --remote TEXT Choose which remote repo.to push. >Default:origin
-g, --gitpath PATH Path of dir that contains `.git`. >Default:.
-f, --filepath TEXT Path/Regex of staging file/dir. >Default:.
-b, --branch TEXT Commiting branch. >Default:master
-c, --commit Commit
-p, --push Push.
-s, --save Save settings >Default:False
-d, --diff Open diff tool >Default:False
--version Check version of gch >Default:False
--reset Reset all changes since last commit. >Default:False
--pull Fetch + Merge from <origin> <master>. >Default:False
--help Show this message and exit.
基本的なコマンド
コミットするにはgch -c
あるいは gch --commit
と実行します.
このとき,全てのファイルがステージングされ (git add .
と同様の処理),メッセージを入力するとコミットします.
短縮系
また,gch -c
/gch --commit
のように引数によっては短縮系が存在します.
そのほかにもログを確認する(git log
)にはgch -l
, プッシュする(git push
)にはgch -p
と入力します.
デフォルトの場合,エディタが立ち上がる場合はVim
ですので,必要に応じてq
で抜け出してください.
もしターミナルがおかしくなった場合はshellでreset
コマンドを実行してください.
複合コマンド
コマンドは複合して実行することができます.
例えば,コミットしてそのままプッシュしたい場合はgch -cp
とすれば良いです.
同じようにコミットする際に前回のコミットとの差分を見たい場合はgch -cd
とすることも可能です.
(差分確認後にコミット,プッシュするならgch -cdp
とすればよい)
この辺りはClick
で実装してる恩恵ですね.
以下に複数のコマンド例を示します.
例1. リモートレポジトリlocalhost
のtest
ブランチにコミットしてプッシュしたい
$ gch -cp -r localhost -b test
例2. 親ディレクトリの.git
ディレクトリを用いてA.txt
をコミットをしたい
$ gch -c -g .. -f A.txt
設定の保存
例示したようなコマンドを毎回入力するのは面倒なので,設定を保存できるコマンドがあります.
$ gch -c -g .. -f A.txt -s
このように-s
/--save
をつけることで,その次からは上記のコマンドを実行するには下記で済みます.
$ gch -c
ISSUE!
が発生した時
多くの場合,任意のオプションを選択してもらえればよいです.
ただ,merge
する際にはコンフリクトする可能性があるので気をつけてください2.
これから
少しいじっていただくとわかる通り,git
に精通すればするほど物足りなくなるツールです.
git rebase
であったり,よく使うけど実装されていない機能も多数あります.
なのでぜひ手を加えてください!
(あわよくばプルリクしてくれると嬉しいなって)