1. ホーム
  2. ギット

[解決済み】git stashの意図されたユースケースは何ですか?

2022-04-09 14:51:58

質問

Aブランチで作業しているときに、突然Bブランチで作業する必要が生じた場合、Aブランチでのコミットの準備が整う前に、変更をAに隠し、Bをチェックアウトしてそこで作業を行い、その後Aをチェックアウトして隠したものを適用します。

Aで作業をしていて、その日は作業を中断したい場合、作業をためておいて、翌日(作業を再開するとき)にそれを適用すべきでしょうか。それとも、作業ディレクトリに未コミットの修正ファイルをそのままにしておくべきでしょうか? この場合、セキュリティ上の利点がある場合を除いて、stashを使用する必要があるとは思えません。

また、もうひとつのシナリオとして、私は職場と自宅の両方で仕事をしています。家に帰りたいときにコミットの準備ができていない場合、自分の仕事を隠して GitHub にプッシュし、家でそれをプルすることができますか?

どのように解決するのですか?

Stashはあくまで便利な方法です。gitではブランチの管理が非常に安価で簡単なので、個人的にはスタッシュするよりも新しい一時的なブランチを作成する方が良い場合がほとんどですが、これはほとんど好みの問題です。

私がスタッシュしたいのは、前回のコミットで何か忘れていることに気づき、同じブランチですでに次のコミットを始めてしまった場合です。

# Assume the latest commit was already done
# start working on the next patch, and discovered I was missing something

# stash away the current mess I made
git stash save

# some changes in the working dir

# and now add them to the last commit:
git add -u
git commit --amend

# back to work!
git stash pop