BETA

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

投稿日:2018-10-15
最終更新:2018-10-24
※この記事は外部サイト(https://qiita.com/Scstechr/items/53e3e326c...)からのクロス投稿です

はじめに

多くの開発現場,昨今では大学の研究室などにおいてもgitの利用が拡大しているそうです.
gitを用いることで,多数のソースコードを管理するだけでなく,論文などの添削にも活用できることが知られています.
OSSの世界ではGitHubなどで公開すれば,多くの人に使ってもらえたり,
あるいは,GitLabサーバなどを自前で構築し完全にクローズドな環境でバックアップ・共同作業をすることも可能です.

しかしながら,gitは出来ることが多いことの代償として,覚えることも多いです.
そのため,いざ研究室などに導入しようと思い立っても学習コストの面で進まなかったりします.
公式のドキュメントを参照しようにも全てが詳細に書かれており,
ある程度gitに慣れた人でなければしりすごみしてしまうでしょう.

そこで,今回はClickというPythonのライブラリを用いて簡単にgitを体験できるツールを作成しました.
本稿はそのツール,GCH (Git Commit Handler)の紹介になります.

ソースコード

ソースは全てGitHubのこのレポジトリで公開しています.
Pull RequestやIssue大歓迎です.

使い方

詳しくはドキュメントをみてください.
また,コマンドのどの段階でもCtrl-Cで抜け出せます.

インストール

$ git clone https://github.com/Scstechr/gch.git ~/.gch
$ cd ~/.gch
$ chmod u+x gch.py
$ pip install -r requirements.txt

また,パスを追加してどのディレクトリからも実行できるようにしておくと有用です.
以下の二行を~/.bash_profileに追記したあと,source ~/.bash_profileを実行します.

export "PATH=${HOME}/.gch:$PATH"
alias gch='gch.py'

オプション

Usage: gch.py [OPTIONS]

Options:
  -i, --init           Run initializer or not.               >Default:False
  -d, --detail         Detailed diff.                        >Default:False
  -l, --log            Git log with option.                  >Default:False
  -c, --commit         Commit or not.                        >Default:False
  -r, --remote TEXT    Choose which remote repo.to push.     >Default:origin
  -p, --push           Push or not.                          >Default:False
  -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
  -s, --save           Save settings                         >Default:False
  --reset              Reset all changes since last commit.  >Default:False
  --pull               Git pull 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で抜け出してください.

複合コマンド

コマンドは複合して実行することができます.
例えば,コミットしてそのままプッシュしたい場合は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する際にはコンフリクトする可能性があるので気をつけてください.
(一応コンフリクト回避してくれるように書いたはずが機能せず...)

これから

少しいじっていただくとわかる通り,gitに精通すればするほど物足りなくなるツールです .
git rebaseであったり,よく使うけど実装されていない機能も多数あります.
なのでぜひ手を加えてください!

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

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@Scstechrの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!