##大まかな目的↓
・サーバー内でプロジェクトのソースに何かしらの変更(編集等やpullなどしたい)があったときにすぐにgitコマンドでそれらをしてくれる簡単なshell
・どこから呼び出しができるようにalias
なぜ作ろうとしたか↓
サーバーで確認したのをgitコマンドで差分の確認、pushをすることが多くて毎度cdコマンドやgitコマンドを書いたりhistoryを探して手間(面倒くさかった)があったから
1:gitコマンドを実行してくれるshellの作成
まずは実行するshを作成。名前は「hoge_test.sh」にします。
$vi hoge_test.sh
中身に
basedir=[git対象プロジェクトフォルダー]
echo ""
echo "###################"
echo "### git pull ###"
echo "###################"
cd $basedir
git pull
if [ $? -gt 0 ]; then
echo "git command failed!"
exit
fi
これを記述して、git pull コマンドまで実行させます。
次に差分を出すように[git status]を叩かせて、差分を確認させ対話形式(yとそれ以外)で[commit]と[push]までの流れを作ります。
#ここからgit statusをして実行結果を表示しるまで
echo ""
echo "command exec $ git status"
echo "#######################################################"
git status
echo "#######################################################"
echo "next command "
#ここまでgit statusをして実行結果を表示しいる
#ここからgit commit するかの実行
#DATE_1はコミットメッセージになります。今回は日付(例:201812251200)を入れています。
DATE_1=`date '+%Y%m%d%H%M'`
echo "git commit -a -m '"$DATE_1"'"
read -p "git commit ok? (y/N): " yn
#ここで対話形式で「git commit をしますか」と聞いて入力を求められる。yかYでcommit(-aオプション付き)実行、それ以外でshを終了するようにしている。
case "$yn" in [yY]*) ;; *) echo "abort." ; return;; esac
git commit -a -m ''$DATE_1
echo "#######################################################"
echo "exec commit "
echo "#######################################################"
#ここまでgit commit するかの実行結果
#ここからgit push するかの実行
read -p " git push ok? (y/N): " yn
#ここで対話形式で「git push をしますか」と聞いて入力を求められる。yかYでpush実行、それ以外でshを終了するようにしている。
case "$yn" in [yY]*) ;; *) echo "abort." ; return;; esac
echo "#######################################################"
echo "exec git push"
echo "#######################################################"
git push origin [pushしたいブランチ名]
echo "#######################################################"
echo "push ok"
echo "sh end"
echo "#######################################################"
#ここまで git psush するかの実行及びにshの終了
ここまで書いてshの記述が完了。
ですがこのコマンドを実行しても動くっちゃ動きますが、「git status時にいらないものをcheckout したい!!」というときが来ると思います。↓↓
ですがこのshを実行してと中にあるcdコマンドを実行してもshを実行した場所から動いておりません。 ですのでaliasを使ってcdコマンド移動ができるようにします。
aliasを追加する
(初心者向けエイリアスの設定)参考までにhttps://qiita.com/yutat93/items/b5bb9c0366f21bcbea62
aliasは.bashrcというファイルに記述しますので、viで開きます。
$vi ~/.bashrc
ここに新しく一行足します。
alias hoge_sh='source [先程作ったhoge_test.shのパス]'
「hoge_sh」は仮の名前でaliasにつかしましたので、今度からは[sh [先程作ったhoge_test.shのパス]]を実行しなくてもどこからでも「hoge_sh」を実行すればhoge_test.shが動きます。
##重要なところとして
aliasを使って上げれば簡単にどこからでもコマンド一個でshを実行できるようになるのと、
aliasに[source]を入れたことでsh内で行っている「cdコマンド」で実行後カレントディレクトリが対象の場所にいられるのでgit status時のあとでshをやめてすぐに作業ができる。
ことにありけり!!
以上です。