gitで現在のブランチを破棄しつつmasterに戻るシェルスクリプトを書いた話
gitで何かコードを修正してmasterに反映するには、以下のようなことをすると思います。
git checkout -b fix_foobar
- コード修正 &
git add ...
&git commit
git push origin fix_foobar
- GitHub上でPull Request作成 & masterにマージ
ここまでで、「よし、作業終わった」と一段落を迎えるのですが、GitHub上は良くても、手元の状況は残念ながら以下です。
- fix_foobar がカレントブランチのまま。
- master には fix_foobar の差分は入ってない。
これを解消するために、今まで幾度となく以下のことをやってました。
git checkout master
git pull origin master
git branch -d fix_foobar
普通のことかもしれませんが、これ、日に日に苦痛になっていって、「なんで俺はこんなことしてるんだ!?」と自分に対して怒りすら覚えてきました。
だからといってgitを使い始めてから数年ずっと上記をやってたんですけど、昨日やっと以下のスクリプトを書きました。
#!/bin/sh
set -eu
CURRENT=`git rev-parse --abbrev-ref HEAD`
if [ $CURRENT = "master" ]
then
echo "The current branch is master."
exit 1
fi
git checkout master
git pull origin master
git branch -d "${CURRENT}"
これで、 back-to-master
のみ実行すれば、上記3コマンドを一気にやってくれるようになりました。
$ git:(2018_new_ski) back-to-master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
remote: Counting objects: 1, done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), done.
From github.com:yoichiro/blog
* branch master -> FETCH_HEAD
f8ca287..4520f97 master -> origin/master
Updating f8ca287..4520f97
Fast-forward
_posts/2018-02-11-2018_new_ski.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
create mode 100644 _posts/2018-02-11-2018_new_ski.md
Deleted branch 2018_new_ski (was 9f8b3a9).
これでかなりストレス軽減されました。もっと早く作るんだった。。。