4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

##大まかな目的↓
・サーバー内でプロジェクトのソースに何かしらの変更(編集等や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をやめてすぐに作業ができる。
ことにありけり!!

以上です。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?