我在使用 git stash 时遇到了问题。
例如,我在仓库中有三个文件,分别是 a.txt,b.txt 和 c.txt
,并且目录是干净的。
现在我正在修改其中的两个文件:a.txt 和 b.txt
。
现在我还没有完成这两个文件的更改,所以我通过以下命令将它们存储:
$ git stash save "First Stash"
如果我执行
$ git stash list
,我会得到以下结果。stash@{0}: On master: First Stash
如果我修改第三个文本文件
c.txt
并将其作为隐藏的更改,那么不会。$ git stash save "Second Stash"
如果我执行
$git stash list
命令,最终不会有任何结果。stash@{0}: On master: Second stash
stash@{1}: On master: First Stash
这里混淆了储藏编号和消息。发生了什么事情? 现在,如果我弹出
stash@{0}
,我会得到第一个储藏内容,但消息被反转了,显示为“Second stash”,但应该是“First Stash”。
这是我的工作流程。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@{1},它是第一个stash,并且应该应用于文件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>...]'
git stash apply
дјҡй»ҳй»ҳең°еҝҪз•ҘжңӘзҹҘзҡ„еӯҳеӮЁеҗҚз§°пјҢ然еҗҺеҸӘеә”з”Ёstash@{0}
гҖӮ - Koraktor