LoginSignup
1
1

More than 3 years have passed since last update.

Clickで実装したGit関連コマンドを実行するツールの紹介

Last updated at Posted at 2018-10-14

はじめに

多くの開発現場,昨今では大学の研究室などにおいても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. リモートレポジトリlocalhosttestブランチにコミットしてプッシュしたい
$ 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であったり,よく使うけど実装されていない機能も多数あります.
なのでぜひ手を加えてください!

(あわよくばプルリクしてくれると嬉しいなって)


  1. Haskell界隈で著名なghcに似てるなって命名した後に気づきました. 

  2. 一応コンフリクト回避してくれるように書いたはずが機能せず... 

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1