web-dev-qa-db-ja.com

git stashはいつ使用する必要がありますか?

ブランチAで作業していて、ブランチAでコミットする準備ができる前に突然ブランチBで作業する必要がある場合、Aで変更を保管し、チェックアウトBし、そこで作業を行ってから、チェックアウトしてスタッシュを適用します。

Aで作業していて、その日の作業を停止したい場合、作業を隠して翌日に適用するか、作業を再開するか、そのままにしておくべきか-作業中のコミットされていない変更されたファイルディレクトリ。セキュリティ上の利点がある場合を除き、この場合にstashを使用する必要がある理由はわかりません。

また、別のシナリオ-私は職場と自宅の両方で働いています。家に帰りたいときにコミットの準備ができていない場合、仕事を隠してGitHubにプッシュし、家でその隠し場所を引っ張ることができますか?

59
Alex Popov

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 --ammend

# back to work!
git stash pop
67
Mureinik

git stash作業コピー(ステージング領域ではなく)に変更がある場合、gitはスタッシュされたオブジェクトを作成し、スタッシュのスタックにプッシュします(git checkout -- .ただし、変更は失われません。後で、スタックの一番上からポップできます。

2
gyorgyabraham

Stashコマンドは、最後のコミット以降に行った変更をすべて隠します。あなたの場合、次の日に作業を続けるのであれば、隠しておく理由はありません。 stashを使用して、コミットしたくない変更を元に戻します。

2
Severin