TOP

    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]
    

    Written by addshlab