Unityアドベントカレンダーの記事には入れづらかったけれど今後の人生のために残しておきたいGit aliasたちをまとめておきます。
aliasともUnityとも関係ないけど便利な設定
いきなりですが、もはやaliasではないものたちです。globalのconfigを設定します。
git config --global push.default current git config --global color.ui true git config --global fetch.prune true
git push –set-upstream origin masterって毎回聞かれるのをやめる – Qiita
masterにマージされているローカルブランチを全部消してリモートから fetch/merge
現在いるブランチと test
ブランチだけは消したくないのでパイプでごにょごにょ挟んでいます。
Mac
[alias] sync = "!f() { current=`git symbolic-ref --short HEAD`;\ git fetch origin &&\ git branch --merged origin/master | grep -vE '^test$' | grep -vE $current | xargs -I BRANCH git branch -D BRANCH &&\ git merge origin/master -m \":twisted_rightwards_arrows: sync with origin/master\"; }; f"
マージコミットが生じる場合には最終行が機能します。コミットメッセージに emoji を使っています。
命名規則を守って新しいブランチを作成する
プロジェクトの管理はJIRAを使って行っているのですが、タスクとブランチの対応がわかりやすくなるように、ブランチの名前をタスクと同期しています。このプロジェクトのキーは RAINBOWSEA
なので、タスク番号と合わせて、 RAINBOWSEA-XX
となります。
% git br RAINBOWSEA-219 * RAINBOWSEA-228 RAINBOWSEA-244 test
前回の記事にも書いた通り、Unity Cloud Build でテスト用の自動ビルドブランチを指定しているので、 ひとつだけ命名規則に従わない test
ブランチがあります。 master
ブランチはリモートにだけあります。直接はいじらず、リモートでPRを出してmergeします。
新しいブランチを作るとき、 git checkout -b RAINBOWSEA-100
としても良いのですが、毎回入力するのが億劫なので以下のようなaliasを用意しています。新しく作るときも、既存のものに移動するときも git ch 100
と入力するだけです。数字もしくは test
ではない値を入力すると移動させてくれません。もちろん git checkout -b foo
などとすると新しいブランチを作ることはできるので一時的に退避用のブランチを作るときなどはそのようにします。
[alias] ch = "!f() { if [ $# != 1 ]; then echo '[error] specify the branch name you want to checkout:' $*; exit 1; fi;\ arg=$1;\ expr $arg + 1 >&/dev/null;\ if [ $? -lt 2 ]; then bn=\"RAINBOWSEA-${arg}\";\ elif [ $arg = 't' -o $arg = 'test' ]; then bn='test';\ else echo '[error] you can use digits or t[est] as a branch name:' $1; exit 1; fi;\ if git show-ref --quiet refs/heads/$bn; then git checkout $bn;\ else git fetch origin; git checkout -b ${bn} origin/master; fi; }; f"
また何か思いついたら追加します。