【Git】コマンドラインから一括でPushするツールを作ってみた

どうも、ハヤシです。

GitでリモートレポジトリにPushする際に、毎回コマンドラインからgit addgit commitgit pushと3回コマンドを入力するのは面倒くさくないですか?

少なくともぼくは面倒くさいです。

というわけで、コマンドラインで実行することで、自動でローカルレポジトリの変更をコミットし、リモートレポジトリにプッシュしてくれるツールを作ったので公開します。

本ツールのみでは、プッシュの際にユーザー名とパスワードを入力する必要があります。
プッシュの際にユーザー名とパスワードの要求がされないようにするための方法については下記の記事で解説しています。

【Git】Pushの際にユーザー名とパスワード入力を省略するツールを作ってみた

ツール説明


本ツールは、以下のリンクから入手することが出来ます。
今回紹介するツールはリンク先の「git_automatic.sh」という名前のシェルスクリプトです。

https://github.com/go12lim/UtilityTool

めんどくさい説明は要らないからさっさとツールを使いたいという人は、Readmeにも本ツールの使用方法が記載されてるのでそちらをご参考ください。

ツール概要

このシェルスクリプトを実行することで自動でローカルレポジトリの変更をコミットし、リモートレポジトリにプッシュしてくれます。
git add, git commit, git pushと毎回3コマンドを打つのがめんどくさい人向けです。

動作環境

動作環境はLINUXです。

使用方法①

本ツールを当該プロジェクト直下(.gitが作成されている階層)に配置します。
ターミナルで当該プロジェクト直下に移動し、sh git_automatic.sh (引数1)と入力することでツールが実行されます。
例)

sh git_automatic.sh "commit message"

引数にコメントを入力することで任意のコミットメッセージを設定することができます。
引数にコメントを入力しない場合、デフォルトのメッセージがコミットメッセージとして設定されます。
デフォルトメッセージは、git_automatic.shの2行目にあるMESSAGE=${1:-"Default Message"}"Default Message"を直接書き換えることで変更されます。

使用方法②

本ツールを任意の位置に配置します。
環境変数が設定されているディレクトリにシンボリックリンクを生成します。
あるいは、シンボリックリンクを生成したディレクトリを環境変数に追加します。
環境変数は、echo $PATHで確認することができます。
シンボリックリンクは、ln -s (リンク元のファイルの絶対パス) (作成されるシンボリックリンクまでの絶対パス)で生成することができます。
例)

sudo ln -s $HOME/workspace/utility-tool/git_automatic.sh /usr/local/bin/gitauto

この際に、権限がないとエラーが生じた場合はlnの前にsudoを追加して再度実行してください。
当該プロジェクト直下で作成したシンボリックリンク名を入力することでツールが実行されます。
例)

gitauto "commit message"

それ以降は使い方①と共通です。

シェルスクリプトの解説


以上がツールの説明でした。
本章では、シェルスクリプトの解説をします。

#!/bin/bash
MESSAGE=${1:-"Default Message"}

git add -A
git commit -m "${MESSAGE}"
git push origin master 

1行目の#!/bin/bashはシェルスクリプトを書く際のおまじないみたいなもんです。
2行目では、変数MESSAGEを宣言しています。
シェルスクリプトでは、変数の宣言の際に他のプログラミング言語と同様に を使用します。
ただし、ほかの言語とは違い の前後にスペースをいれてはいけません。

$1は、シェルスクリプト実行時に指定した1番目の引数が設定される変数です。
同様に、2番目に指定した引数は$2に、n番目に指定した引数は$nに設定されます。
ちなみに、$0には、実行時のコマンド名が設定されます。
sh git_automatic.sh と実行した場合には「sh git_automatic.sh」が$0に設定されます。

${1:-"Default Message"}は、(1つ目の)引数が与えられている場合$1を返し、引数が与えられていない場合"Default Message"を返します。

したがって2行目では、引数が与えられている場合はその引数を変数MESSAGEに設定し、引数が与えられていない場合は「”Default Message”」を変数MESSAGEに設定するという処理を行っています。

4,5,6行目は普段コマンドラインに直接入力しているgit addgit commitgit pushのコマンドです。
git addのオプションには、-Aを指定しています。
これにより、新規作成・削除したファイルを含めgit管理内のすべての変更がステージングされます。
git commitのオプションには、-mを指定しています。
これによりコマンドラインからコメントを入力することが出来ます。
このオプションを省略した場合、対話形式でコメントを入力することになります。
また、コメントの内容には"${MESSAGE}"を指定しています。
${MESSAGE}とした場合だと変数MESSAGEに設定された文字列内に空白スペースがあった場合複数の引数として扱われてしまうためエラーが発生します。

注意点


本ツールでは、git addのオプションに-Aを指定しています。
したがって、本ツールを実行するとgit管理内のすべての変更がステージングされリモートレポジトリにプッシュされます。
そのためGitのもつバージョン管理といった本来の目的からはそれる使い方になっています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です