我无法将存储应用回工作目录.
小故事:
首先,我试图推动一些改变,但它说:"不,你不能,先拉"...好吧,然后,我会从github拉出东西,然后推动我的改变.当我试图拉动时,它说我的变化会被过度写,我应该把我的变化藏起来.好吧,我隐藏了变化......做了拉动,并推动了提交的更改.但现在,我无法恢复我正在进行的未经修改的变化.
这是错误:
MyPath/File.cs already exists, no checkout
Could not restore untracked files from stash
当然我还没有理解git的所有概念,他们让我有点困惑......也许我做错了什么.
如果有人可以帮我解决这个问题会很棒...我现在一直在搜索谷歌和所有东西超过一个小时,我还没有找到解决方案.
非常感谢帮助.谢谢!
bla*_*lah 72
这听起来像你的藏匿包括一个未跟踪的文件,后来被添加到仓库.当你尝试检查出来时,git正确拒绝,因为它会覆盖现有文件.
要修复,你可以做一些事情,比如删除那个文件(没关系,它仍然在repo中),应用你的存储,然后根据需要用in-repo版本替换文件的存储版本.
编辑:文件也可能只在工作树中创建,而没有添加到仓库中.在这种情况下,不要简单地删除本地文件,而是:
Kor*_*tor 55
最安全,最简单的方法可能是再次收藏:
git stash -u             # This will stash everything, including unstaged files
git stash pop stash@{1}  # This will apply your original stash
之后,如果您对结果感到满意,可以致电
git stash drop
删除你的"安全"存储.
stu*_*eek 54
正如@blahdiblah所提到的,您可以手动删除它所抱怨的文件,切换分支,然后手动添加它们.但我个人更喜欢留在"内部git".
执行此操作的最佳方法是将存储转换为分支.一旦它成为一个分支,你就可以使用你熟悉和喜爱的常规分支相关技术/工具在git中正常工作.即使您没有列出错误,这实际上也是一种有用的常用技术.它运作良好,因为存储确实是一个隐藏的承诺(见PS).
以下内容在创建存储时创建基于HEAD的分支,然后应用存储(它不提交存储).
git stash branch STASHBRANCH
你接下来要做什么取决于藏匿处和目标分支(我将称之为ORIGINALBRANCH)之间的关系.
如果您在ORIGINALBRANCH中进行了很多更改,那么您可能最好像任何本地分支一样处理STASHBRANCH.在STASHBRANCH中提交您的更改,在ORIGINALBRANCH上重新绑定它,然后切换到ORIGINALBRANCH并重新绑定/合并STASHBRANCH对它的更改.如果存在冲突,则正常处理它们(此方法的一个优点是您可以查看并解决冲突).
如果你只是在保留一些阶段性更改时被隐藏,然后提交,而你想要做的就是获得额外的更改,当你被隐藏时,你可以执行以下操作.它将切换回原始分支和索引,而不会更改您的工作副本.最终结果将是您的工作副本中的其他隐藏更改.
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
PS,很容易将存储视为一个补丁(就像它很容易将提交视为补丁一样),但存储实际上是在创建时对HEAD的提交.当您应用/弹出时,您正在做类似于将其挑选到当前分支中的内容.请记住,分支和标记实际上只是对提交的引用,因此在许多方面,stashes,branches和tags只是指向提交(及其历史记录)的不同方式.
PPS,在使用带有--patch和/或--include-untracked的存储之后,您可能需要这种技术.即使不更改工作目录,这些选项有时也会创建一个您不能仅仅应用的存储.我必须承认不完全理解为什么.有关讨论,请参见http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html.
qwe*_*guy 39
解决方案:你需要删除有问题的文件,然后尝试再次存储弹出/应用,它应该通过.不要删除其他文件,只删除错误提到的文件.
问题: Git有时很糟糕.当git stash -u它运行时包括未跟踪的文件(酷!)但它不会删除那些未跟踪的文件,也不知道如何在剩余的顶部应用隐藏的未跟踪文件(不酷!),这真的使-u选项相当无用.
小智 27
要将存储中的代码差异作为补丁应用,请使用以下命令:
git stash show --patch | patch -p1
| 归档时间: | 
 | 
| 查看次数: | 59357 次 | 
| 最近记录: |