git commitとpushを素早く行うコマンドを作りました

pip でインストールできる、シェル用の git アシストコマンド「gnow」を作りました。Python3.5以上で動作します。

このコマンドは、私の「コミットは細かく行いたいが、一連のコマンド入力が面倒」という怠惰の心念から生み出されました。ゆえに、多人数が参加する真面目で堅苦しいプロジェクトよりも、個人プロジェクトでの使用を想定しています。最初のコードはシェルスクリプトで書かれていましたが、機能拡張のため Python で書き直しました。

できること

  • git add, git commit, git push の一連の動作を1コマンドで実行
  • 自動でコミットメッセージを付与。手動入力も可能
  • X.Y.Z 形式のタグのZ(パッチバージョン)を自動インクリメント

インストール

gnow コマンドは、git リポジトリのディレクトリ内で使用できます。リポジトリの設定は済ませておいてください。

$ pip install gnow

使い方

現在のステータス

現在のブランチ・最新のタグ・ワーキングツリー内のファイル・インデックス(ステージング)内のファイル・pushしていないコミットを表示します。

$ gnow -smain (1.1.1)--------------------- Working tree - Updated README.md Index - No files. Unpushed commit - No commits.---------------------

git add -> git commit -> git push を一気に実行

gnow、と入力してエンターをポチポチ押すだけでpushまで完了します。

# コミットメッセージを自動付与
$ gnow

# コミットメッセージを手動付与
$ gnow "YOUR COMMIT MESSAGE"
main (1.1.1)--------------------- Working tree - Updated README.md Index - No files. Unpushed commit - No commits.---------------------ADD files to the index? [n/Y or Enter]STAGING done. ✔COMMIT MESSAGE: Updated README.mdBRANCH: mainCOMMIT the index contents? [n/Y or Enter]COMMIT done. ✔BRANCH: mainPUSH local commits? [n/Y or Enter]PUSH done. ✔

コミットだけを行う

git commit するときの挙動と同じです。

# コミットメッセージを自動付与
$ gnow -c

# コミットメッセージを手動付与
$ gnow -c "YOUR COMMIT MESSAGE"

ADD files to the index? [n/Y or Enter]
STAGING done. ✔

COMMIT MESSAGE: Updated README.md
BRANCH: main
COMMIT the index contents? [n/Y or Enter]
COMMIT done. ✔

タグ付け

この機能の挙動はまだ調整が必要なのですが、Git のマニュアルに沿って、vX.Y.Z の形式でタグ付けをしている方におすすめの機能です。パッチバージョンの Z を自動でインクリメントして、push してくれます。

# パッチバージョンを自動インクリメント$ gnow -t
Latest tag is 1.0.1New tag is 1.0.2TAG the latest commit? [n/Y or Enter]# タグを指定
$ gnow -t 1.0.0Latest tag is 0.0.6New tag is 1.0.0TAG the latest commit? [n/Y or Enter]# 既存のタグが無い場合$ gnow -tNo tags are currently.Auto incremented version is 0.0.1TAG the latest commit? [n/Y or Enter]