🦥
git pull --autostashでstashとpopを自動化する
結論
-
--autostashオプションをつけることでpullのときにstashとpopを自動化できます。
e.g.
git pull origin main --autostash
-
--autostashオプションをつけると以下が自動で行われます-
pullの前にローカルに未コミットの変更があればstashする -
pullが終わったらstashした変更をpopする
-
- グローバルに設定することもできます
git config --global pull.autostash true
※ rebaseのときも同様に--autostashをつけることでautostashが有効になります。
はじめに
ローカルに未コミットの変更がある状態でpullすることはありませんか?そんなときはstashしてpullして、pullが終わったらpopしていました。これがなんとも面倒ですよね。
そんなときに便利なオプションがありました!autostashです✨
この記事ではautostashの使い方を紹介します。
autostash の使い方
pull するとき
autostashはpullのオプションなので、pullのときに--autostashをつけるだけでOKです。
(※後述しますがrebaseでも使えます!)
git pull --autostash
rebase するとき
rebaseのときも同様に--autostashをつけるだけでOKです。
git rebase --autostash
グローバルに設定する
autostashはデフォルトでは無効(false)になっています。なので、pullするときに毎回--autostashをつけなければなりません。毎回つけるのは面倒だ!というときは、グローバルに設定してしまいましょう🥳
# pull
git config --global pull.autostash true
# rebase
git config --global rebase.autoStash true
これでpullするときに--autostashをつけなくてもautostashが有効になります。
autostash してほしくないとき
グローバルに設定したけれどautostashしてほしくないときもあるかと思います。そんなときは--no-autostashをつけることで無効にできます。
# pull
git pull --no-autostash
# rebase
git rebase --no-autostash
おまけ
autostashを紹介しましたが、それでも手動でpopする機会はありますよね。git stash listでstashの一覧を確認して、popしたいstashの番号を探して、0番目をpopしたいときは
git stash pop stash@{0}
としていましたが
git stash pop 0
とできることを最近知りました😇stash@{0}を0に省略できるんですね!
Discussion