我正在努力恢复文件后,我的一个巨大的搞砸了。
git checkout -- *
到目前为止工作得很好。除此之外,例如,在我的.gitignore文件中,我列出了“LICENSE.txt”,它显然不仅适用于该名称的根级文件,而且适用于整个目录树中具有该名称的每个文件。
因此,当我在wordpress文件夹中运行git checkout -- *
时,它会失败并显示错误:
错误:pathspec'blog / license.txt'与git已知的任何文件都不匹配
如何运行命令以使其仅适用于跟踪的文件?我的另一个选择是遍历每个文件夹并逐个恢复文件。
另请注意,license.txt不是我唯一被忽略的文件问题。有几十个。
答案 0 :(得分:8)
如果我正确理解了您的问题,您希望将当前跟踪的所有文件重置为上一次提交,并保留未跟踪的文件。
如果是这样,那么我会这样做。
如Porges在评论中提到的那样。
首先取消暂存所有当前修改过的文件:
git reset
然后将所有未暂存的已修改文件重置为上一次提交。
git checkout -- .
首先,我会将跟踪的文件存储如下:
git stash
然后我会按如下方式存储未跟踪的文件:
git stash -u
因此,现在您的堆栈上有两个存储块:一个在底部有跟踪文件,另一个在顶部有未跟踪文件。弹出跟踪文件如下(也就是应用堆栈中第二个的存储):
git stash apply stash@{1}
然后重置为上一次提交:
git reset --hard
最后,应用未跟踪的文件:
git stash apply