我在git stash中有一个问题.
比如说我a.txt,b.txt & c.txt在repo中有3个文件说,目录是干净的.
现在我正在修改其中的两个文件:a.txt and b.txt.
现在我还没有完成对两个文件的更改,所以我用foll命令存储它们:
$ git stash save "First Stash"
Run Code Online (Sandbox Code Playgroud)
不,如果我做了$ git stash list,我明白了
stash@{0}: On master: First Stash
Run Code Online (Sandbox Code Playgroud)
不,如果我修改第三个文本文件c.txt并存储以及显示:
$ git stash save "Second Stash"
Run Code Online (Sandbox Code Playgroud)
如果我做了,$git stash list我终于得到了foll结果,
stash@{0}: On master: Second stash
stash@{1}: On master: First Stash
Run Code Online (Sandbox Code Playgroud)
藏匿号码和消息在这里混淆了.这里发生了什么?现在,如果我弹出,stash@{0}我得到第一个藏匿内容,但消息在这里反转,显示为第二个藏匿但应该是第一个存储.
这是我的工作流程
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
Run Code Online (Sandbox Code Playgroud)
这些是我可用的藏匿处:
admin:stud:/demo/stash_demo> git stash list
stash@{0}: On master: Second
stash@{1}: On master: First
Run Code Online (Sandbox Code Playgroud)
现在我将尝试应用存储@ {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")
Run Code Online (Sandbox Code Playgroud)
如上所示,我获得了最新的更改.
如果我尝试没有刻度``那么它给了我foll错误.
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>...]'
Run Code Online (Sandbox Code Playgroud)
Git的存储(默认情况下)是LIFO存储.
通过使用git stash apply或者git stash pop您将始终获得最后一个隐藏的补丁(也可以使用stash@{0},0是存储内的索引).存储新补丁会将其置于其他存储补丁之上,从而将其索引增加一(stash@{0}将成为stash@{1}).
也就是说,如果您想要应用或弹出除最后一个补丁之外的补丁,您需要将其ref传递给命令:
$ git stash apply stash@{1}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1161 次 |
| 最近记录: |