我正在对代码库进行大量更改.一些变化已经上演,有些则没有.我需要切换到另一个分支,但还没有准备好提交,所以我使用了当前的状态git stash.
后来,我去申请我的藏匿处,git stash apply.然后我跑了git status.我注意到我的上演更改不再显示为"暂停",而是显示为"未提交的更改".我是否理解我的理解是没有数据实际丢失,而是"暂存"数据现在只是转换为"未分阶段"的数据?
编辑:我应该补充说,一些有问题的文件有暂存版本,以及存储时的非暂存版本.例如,文件A进行了一些更改,这些更改已暂存.然后,对文件A进行了一些更改,这些文件尚未上演.然后,藏了一个藏.
tor*_*rek 23
所问的问题的答案("存储将转换的文件转换为未分级的文件")既是肯定也是否定.
如果你已经申请了git stash apply(vs git stash pop),你的状态很好,因为藏匿仍然存在.但是让我们稍微回顾一下,看看底层机制,因为它在这里很重要.
当你运行git stash save(或git stash执行a的plain save)时,git会进行两次不在任何分支上的1次提交.一个提交保存索引的状态,即您上演的任何内容.第二个提交保存工作树的状态,即其他所有内容.
稍后,当你使用时git stash apply,git会一起刷新更改,以便不会进行任何操作,除非你为操作添加--index2apply,在这种情况下它会恢复(如果可以)你之前的staged vs unstaged安排.
当你使用时apply,隐藏脚本也会保留存储提交,所以如果应用不按照你想要的方式进行 - 包括你忘记--index或拼写错误(见脚注2) - 你可以git reset --hard(假设你把所有东西都干净了)当你开始的时候,无论如何)并重新做apply.
pop但是,如果你已经使用过,并且git认为应用程序有效,那么就会丢掉存储.出于这个原因,我通常建议使用单独的apply和drop.
1使用-u或-a保存不仅仅是暂存和未分阶段的文件也会忽略和/或所有文件,存储脚本会进行三次提交.但是,如果没有这些标志,这些文件不会进入存储的任何一部分.
2令人困惑的是,存储脚本还有一个--keep-index标志,它允许您指定apply操作,但没有任何意义.相反,--keep-index影响stash在进行特殊的存储提交后会发生什么.偶尔我不小心做git stash apply --keep-index了git stash apply --index,而不是混淆了两个选项.
| 归档时间: |
|
| 查看次数: |
4087 次 |
| 最近记录: |