🦥

git pull --autostashでstashとpopを自動化する

2023/08/31に公開

結論

  • --autostashオプションをつけることでpullのときにstashpopを自動化できます。
e.g.
git pull origin main --autostash
  • --autostashオプションをつけると以下が自動で行われます
    1. pullの前にローカルに未コミットの変更があればstashする
    2. pullが終わったらstashした変更をpopする
  • グローバルに設定することもできます
git config --global pull.autostash true

rebaseのときも同様に--autostashをつけることでautostashが有効になります。

はじめに

ローカルに未コミットの変更がある状態でpullすることはありませんか?そんなときはstashしてpullして、pullが終わったらpopしていました。これがなんとも面倒ですよね。
そんなときに便利なオプションがありました!autostashです✨
この記事ではautostashの使い方を紹介します。

autostash の使い方

pull するとき

autostashpullのオプションなので、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 liststashの一覧を確認して、popしたいstashの番号を探して、0番目をpopしたいときは

git stash pop stash@{0}

としていましたが

git stash pop 0

とできることを最近知りました😇stash@{0}0に省略できるんですね!

参考

Discussion