688

私は2つのブランチを持っています:マスター| 設計

デザインの仕事で、私は隠し場所を作り、マスターに切り替え、いくつかの調整を行いました。デザインに戻りstash apply、デザインブランチでのすべての変更を失うだけでした。

私はこれらをクリアまたは削除していないので、すべての作業が隠し場所にあることを望んでいます。

スタッシュリストを実行すると、4つの結果が得られます。

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

試してみるgit stash apply f2c0c72とエラーが発生します:

fatal: Needed a single revision
f2c0c72: no valid stashed state found

特定の隠し場所を適用するにはどうすればよいですか?

4

7 に答える 7

1164

隠し場所の鍵は、実際にstash@{n}は左側のアイテムです。だから試してみてください:

git stash apply stash@{0}

"stash@{0}"( zsh、fish、powershellなど、一部のシェルでは引用符で囲む必要があることに注意してください)。

バージョン2.11以降は非常に簡単なので、を使用する代わりにNスタック番号を使用できますstash@{n}。だから今使用する代わりに:

git stash apply "stash@{n}"

次のように入力できます。

git stash apply n

隠し場所のリストを取得するには:

git stash list

実際、これstash@{0}はgitのリビジョンであり、切り替えることができます...しかしgit stash apply ...、DTRTを使用して現在の場所に適用する方法を理解する必要があります。

于 2009-12-15T20:23:52.083 に答える
272

スタッシュを適用してスタッシュリストから削除するには、次のコマンドを実行します。

git stash pop stash@{n}

スタッシュを適用してスタッシュキャッシュに保持するには、次のコマンドを実行します。

git stash apply stash@{n}
于 2009-12-15T20:28:46.180 に答える
66

バージョン2.11以降は非常に簡単なので、と言う代わりにNスタック番号を使用できます"stash@{n}"。だから今使用する代わりに:

git stash apply "stash@{n}"

次のように入力できます。

git stash apply n

たとえば、リストでは次のようになります。

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

適用するstash@{1}場合は、次のように入力できます。

git stash apply 1

それ以外の場合は、1.7.5.1以降にディレクトリに変更があった場合でも使用できますが、エラーが発生した場合は、スタッシュが作業ディレクトリの変更を上書きしないようにする必要があります。

error: Your local changes to the following files would be overwritten by merge:
        file
Please commit your changes or stash them before you merge.

1.7.5.1より前のバージョンでは、作業ディレクトリに変更があった場合、作業を拒否していました。


Gitリリースノート:

stashのデフォルトの場所、つまりrefs / stashのreflogで単一の要素に名前を付ける場合、ユーザーは常に「stash @{$N}」と言う必要があります。「gitstash」コマンドは、「git stash applystash@{4}」の省略形として「gitstashapply4」を受け入れることを学習しました

git stash apply」は、変更がstashに記録された変更と重複していなくても、作業ツリーに変更があった場合に作業を拒否するために使用されていました。

于 2017-06-09T06:49:33.787 に答える
42

WindowsマシンとPowerShellを使用している場合は、次のような引数を引用する必要があります。

git stash apply "stash@{0}"

...または変更を適用してスタッシュから削除するには:

git stash pop "stash@{0}"

そうしないと、引用符がないと、次のエラーが発生する可能性があります。

致命的:あいまいな引数'stash @':不明なリビジョンまたはパスが作業ツリーにありません。

于 2015-10-16T16:43:35.873 に答える
17
git stash list 

リストには、すべての隠しアイテムが表示されます。例:stash @ {0}:、stash @ {1}:、..、stash @ {n}:

次に、stash@{n}を表す番号nを選択します。

git stash apply n 

例えば:

git stash apply 1 

その特定の隠された変更を現在のブランチに適用します

于 2019-07-09T13:50:45.627 に答える
12

最近の作業と、実行時に発生したブランチを表示するには

git stash list

次に、適用するスタッシュを選択し、番号のみを使用します。

git stash apply n

ここでn(上記のサンプルでは)、進行中の作業に対応する番号です。

于 2019-05-05T09:14:32.750 に答える
4

初心者でもわかりやすくするだけです。

以下のコマンドでgitstashリストを確認してください:

git stash list

次に、以下のコマンドで適用します。

git stash apply stash@{n}

例:最新のスタッシュを適用しています(最新は常にスタッシュリストの一番上にあるインデックス{0}です)。

 git stash apply stash@{0}
于 2020-06-15T10:49:49.433 に答える