git stash に問題があります。
たとえばa.txt,b.txt & c.txt
、リポジトリに 3 つのファイルがあり、ディレクトリがクリーンであるとします。
現在、その中の 2 つのファイルを変更していますa.txt and b.txt
。
今、私は 2 つのファイルの変更を完了していないので、foll コマンドでそれらを隠しています:
$ git stash save "First Stash"
いいえ、私がするなら$ git stash list
、私は得ます
stash@{0}: On master: First Stash
いいえ、3 番目のテキスト ファイルを変更して、次のようにc.txt
隠します。
$ git stash save "Second Stash"
いいえ、最終的には$git stash list
、次の結果が得られます。
stash@{0}: On master: Second stash
stash@{1}: On master: First Stash
ここには隠し番号とメッセージが混同されています。ここでポップするstash@{0}
と、最初の隠し場所の内容が表示されますが、ここでメッセージが逆になり、2 番目の隠し場所として表示されますが、最初の隠し場所である必要があります。
これが私のワークフローです
admin:stud:/demo/stash_demo> ls
a.txt b.txt
admin:stud:/demo/stash_demo> echo Hello World >> a.txt
admin:stud:/demo/stash_demo> git stash save "First"
Saved working directory and index state On master: First
HEAD is now at cff03c6 Initail Commit
admin:stud:/demo/stash_demo> echo Hello World >> b.txt
admin:stud:/demo/stash_demo> git stash save "Second"
Saved working directory and index state On master: Second
HEAD is now at cff03c6 Initail Commit
これらは私の利用可能な隠し場所です:
admin:stud:/demo/stash_demo> git stash list
stash@{0}: On master: Second
stash@{1}: On master: First
ここで、最初の stash である stash@{1} を適用しようとし、ファイル a.txt を適用する必要があります
admin:stud:/demo/stash_demo> git stash apply `stash@{1}`
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: b.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
上記のように、最新の変更が適用されます。
そして、目盛りなしで試してみると、次のエラーが発生します。
admin:stud:/demo/stash_demo> git stash apply stash@{1}
fatal: ambiguous argument 'stash@1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'