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

  • WORD COUNT: 2021

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

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

できること

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

インストール

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

$ pip install gnow

使い方

現在のステータス

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

$ gnow -s
main (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.md
BRANCH: main
COMMIT the index contents? [n/Y or Enter]
COMMIT done. ✔

BRANCH: main
PUSH 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.1
New tag is 1.0.2
TAG the latest commit? [n/Y or Enter]

# タグを指定
$ gnow -t 1.0.0
Latest tag is 0.0.6
New tag is 1.0.0
TAG the latest commit? [n/Y or Enter]

# 既存のタグが無い場合
$ gnow -t
No tags are currently.
Auto incremented version is 0.0.1
TAG the latest commit? [n/Y or Enter]