3
0

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.

うっかり屋さんのためのgit stash

3
Last updated at Posted at 2019-10-04

うっかりミスを技術で防止

僕は普段よくうっかりミスをします。
CLI上での時の流れは無慈悲なもので、エンター1つでけっこう面倒なことになったりします。
そんな無慈悲な時間を少しでも減らすために少し苦労をしてみましょう。

git stashを慎重に

git stashコマンド使ってますか?
僕はこのコマンドでよく痛い思いをしました。

git stash pop ←これを連続で打ってCONFLICT起こしたりもしました。とても面倒です。

ですので今回はgit stashをもっと対話的に実行しようということでShellでコマンドを自作しました。
普段はGoのcobraなどを使っているのでShellには馴染みがなかったので今回色々勉強になりました。

[2020/09/05更新] homebrewでコマンドを配布中

homebrewを通してこのコマンドを配布しておりますので、よろしければ使ってみてください。

対話型コマンドのキーとなるread

うっかり屋さんはひとりで突っ走りがちですので、「〜だけど大丈夫?」みたいなワンクッションあると安心します。
それを実現するためにread構文を使って対話型のコマンドを実現できます。
例えば下は、stashしたブランチと現在いるブランチが違った時に確認をする処理です。

if [ $CURRENT_BRANCH != $TARGET_BRANCH ]; then
          echo "----------------------------------"
          echo "取り出そうとしているstashは現在のブランチの作業ではないです。取り出しますか?[y/N]"
          read IS_POP
          case $IS_POP in
              [yY])
                  echo "-------------------------------"
                  echo "選択したstashを残しますか? [y/N]"
                  read IS_REMAIN_STASH
                  case $IS_REMAIN_STASH in
                      [yY]) eval git stash apply ${TARGET_STASH%%:*};;
                      [nN]) eval git stash pop ${TARGET_STASH%%:*};;
                  esac
                  ;;
              [nN]) exit;;
          esac

read [変数名]でユーザからの入力を受け取り、その情報を元にcaseで分岐しています。

入力の手間を少しでも省いてタイポを防止する

うっかり屋さんは誰から見られているわけでもないのにすごく焦ります。
異常なほどタイポします。
ですので、例えば
git stash save "hogehoge"
と打つ場合は"とか高確率でタイポします。
そんなタイポを減らすために以下のような処理を書くことが出来ます。

if [ "$1" = "save" ]; then
      echo "-----------------------------"
      echo "Stash内容の説明を入力"
      read STASH_MESSAGE
  
      eval git stash save "$STASH_MESSAGE"

こんな感じで引数に何かを渡すだけでメッセージの部分を形成して良い感じのコマンドに直してくれる。
やっていることは大したことありませんが、かなと英字を頻繁に入れ替える必要もなくなるので少し便利です。

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?