LoginSignup
6
7

More than 5 years have passed since last update.

Gitのコマンドライン処理を補助するシェルスクリプト

Posted at

Gitの操作を補助するために、ちょっとしたスクリプトを作ったので公開します。
通信状態の悪いところから簡単に処理を飛ばせるように、と作ったスクリプトです。
自由に改変してお使いください。

gitpp.sh
#!/bin/bash

PATH=/usr/local/sbin:/usr/bin:/bin

  while true; do
    # コンテキスト出力でメニュー表示
    cat <<EOF
接続メニュー(接続ユーザ名)
 1: git init          レポジトリ初期化
 2: git first commit
 3: git add -A        全件ステージング
 4: git add -i        選択ステージング
 5: git commit -m     Auto Commit コミット
 6: git commit        対話コミット
 7: git status        変更されたファイルの一覧を表示したい
 8: git diff          変更されたファイルの差分を見たい
 9: git log           コミットログを見たい
10: git show          コミットの詳細を確認したい
11: git mv            ファイルやディレクトリ名を変更したい、移動したい
12: git rm            ファイルを削除したい
13: git clean         管理対象ではないファイルを削除したい(確認)
14: git clean         管理対象ではないファイルを削除したい(実行)
15: git checkout --   手元で変更したインデックスに登録されていないファイルを元に戻したい
16: git reset HEAD -- インデックスに登録したファイルを取り消したい
17: git add -u        以前にコミットしたことのあるファイルだけをすべてインデックスに登録したい
99:終了
数字を入力してください
EOF
    # readコマンドで標準入力(stdin)を変数${ACT_MAIN}に格納
    read ACT_MAIN
    # case文で分岐
    case ${ACT_MAIN} in
     1)

       echo -n "プロジェクト名(レポジトリ名)を入力してください > "
       read PROJECTNAME
       if [ "x${PROJECTNAME}" = "x" ]; then
        echo "エラー:プロジェクト名(レポジトリ名)が入力されませんでした"
        break
       fi

       echo -n "githubのユーザ名を入力してください > "
       read GITUSERNAME
       if [ "x${GITUSERNAME}" = "x" ]; then
        echo "エラー:ユーザ名が入力されませんでした"
        break
       fi
       echo -n "githubの登録メールアドレスを入力してください > "
       read GITUSERMAIL
       if [ "x${GITUSERMAIL}" = "x" ]; then
        echo "エラー:メールが入力されませんでした"
        break
       fi
       git config --global user.name "${GITUSERNAME}"
       git config --global user.email "${GITUSERMAIL}"
       echo "# ${PROJECTNAME}" >> README.md
       git init
       git add README.md
       git commit -m "first commit"
       git remote add origin "https://github.com/${GITUSERNAME}/${PROJECTNAME}.git"
       git push -u origin master
      break
      ;;
     2)
       echo -n "プロジェクト名を入力してください > "
       read PROJECTNAME
       if [ "x${PROJECTNAME}" = "x" ]; then
        PROJECTNAME="NewProject `date +%Y%m%d`"
       fi

       echo -n "githubのユーザ名を入力してください > "
       read GITUSERNAME
       if [ "x${GITUSERNAME}" = "x" ]; then
        echo "エラー:ユーザ名が入力されませんでした"
        break
       fi

       echo "# ${PROJECTNAME}" >> README.md
       git remote add origin "https://github.com/${GITUSERNAME}/${PROJECTNAME}.git"
       git push -u origin master
      break
      ;;
     3)
      git add -A
      break
      ;;
     4)
      git add -i
      break
      ;;
     5)
      git commit -m "`date +%Y%m%d` : Auto Commit"
      break
      ;;
     6)
      git commit
      break
      ;;
     7)
      git status
      break
      ;;
     8)
      git diff
      break
      ;;      
     9)
      git log 
      break
      ;;
     10)
      echo -n "コミットや HEAD を指定してください > "
      read HEADCOMMIT
      git show ${HEADCOMMIT}
      break
      ;;
     11)
      echo -n "古いファイルやパスを指定 > "
      read GITOLD
       if [ "x${GITOLD}" = "x" ]; then
        echo "エラー:入力されませんでした"
        break
       fi
      echo -n "新しいファイルやパスを指定 > "
      read GITNEW
       if [ "x${GITNEW}" = "x" ]; then
        echo "エラー:入力されませんでした"
        break
       fi
      git mv ${GITOLD} ${GITNEW}
      break
      ;;
     12)
      echo -n "消したいファイルを指定 > "
      read GITRM
       if [ "x${GITRM}" = "x" ]; then
        echo "エラー:入力されませんでした"
        break
       fi
      git rm ${GITRM}
      break
      ;;
     13)
      git clean -n
      break
      ;;
     14)
      git clean -f
      break
      ;;
     15)
      echo -n "元に戻したいファイルを指定 > "
      read GITCO
       if [ "x${GITCO}" = "x" ]; then
        echo "エラー:入力されませんでした"
        break
       fi
      git checkout -- ${GITCO}
      break
      ;;
     16)
      echo -n "戻したいファイルを指定 > "
      read GITREIN
       if [ "x${GITREIN}" = "x" ]; then
        echo "エラー:入力されませんでした"
        break
       fi
      git reset HEAD --  ${GITREIN}
      break
      ;;
     17)
      git add -u
      break
      ;;
     99)
      break
      ;;
     *)
      printf "エラー: 無効な項目 \"%s\" が入力されました\n" "${ACT_MAIN}"
      ;;
    esac
  done

使い方

chmod -x gitpp.sh
./gitpp.sh
6
7
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
6
7