1
2

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 3 years have passed since last update.

【Git Bash】ローカルへのコミットからリモートへのプッシュまでをバッチ処理するシェルスクリプトを作成

Last updated at Posted at 2019-12-10

#1.この記事について
###こんなケースを想定。
《ある程度定型的なコミット-プッシュ処理をバッチ的にまとめて処理したい》
《コミットのコメントをいちいち打つのが面倒なので自動的に差分内容を反映させたい》

これを使えばちょっとは楽になるかもしれない。

#2.やりたいこと
・add,commit,pushまでのバッチ処理
・コメントの自動挿入(日付+差分内容)
・上記内容を網羅したシェルスクリプトの作成

#3.使用したツール・環境
・Windows10
・git version 2.23.0.windows.1
・GitBash

#4.作成したコード

easyPush.sh
#!/bin/bash

#例外処理
#参考URL:https://cloudpack.media/532
set -e
trap 'echo NG' ERR

#バージョン管理しているフォルダに移動
cd /c/Users/username/versionControlDirectory

git add -N .

git add .

#コメント内容作成
#現在時刻格納
foo=$(date "+%Y%m%d_%H%M")

#前回のコミットに対する差分格納
bar=$(git diff HEAD --stat)

#文字列として連結
foobar="${foo} __ ${bar}"

git commit . -m "$foobar"

git push origin master

上記に作成したshファイルを
下に格納します(環境によってしまう場所が違うかも。gitbashのパス変数の管理下ならどこでもいいかもしれない)。
C:\Program Files\Git\usr\bin

→パスが通ってるので
GitBashのコンソールでタブキーで補完可能になる。


実際に実行すると下のGithubのようにプッシュできた。 [https://github.com/dede-20191130/MyExcelVBA/blob/master/GitBash%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%83%86%E3%82%B9%E3%83%88/test.txt](https://github.com/dede-20191130/MyExcelVBA/blob/master/GitBash%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%83%86%E3%82%B9%E3%83%88/test.txt)

#5.コードの解説

fooとbarに載せたいコメントを格納して、
連結したfoobarを-mの引数として取る。

例外処理は下記のサイトをご参考させていただいた。
https://cloudpack.media/532

#5.5.Powershellスクリプトでも同じようなものを作成してみた
PycharmのターミナルエミュレータをわたしはPowershellにしているので、
Pycharmでの定型的なプッシュを楽にするために、
以下のようにスクリプトを組んでみました。

easyPush.ps1
Param( $selectedPath)

try
{
    
    $selectedAbsPath = (Resolve-Path $selectedPath).Path
    $currentDir = (Resolve-Path .).Path

    Write-Host $selectedAbsPath + 'に対してバッチ処理します。'

    cd $selectedAbsPath
        
    git add -N .

    git add .

    #現在時刻格納
    $foo = Get-Date -Format 'yyyyMMdd_HHmm'

    #前回のコミットに対する差分格納
    $bar=$(git diff HEAD --stat)

    #文字列として連結
    $foobar = $foo + '__' + $bar

    git commit . -m $foobar

    git push origin master

    Write-Host '正常終了'

}
catch [System.Exception]
{
    Write-Host "エラーが発生しました。"
}

finally
{
    Write-Host "プログラムを終了します。"
    #元の階層に戻る
    cd $currentDir
}

#6.終わりに

コーディングは下の便利なサイトを利用しました
(Pycharmも買ったんだけれどプロジェクト切り替えがめんどくさい)
https://www.jdoodle.com/test-bash-shell-script-online/

なにか補足がありましたらコメントください。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?