git checkout--*并跳过未跟踪的文件



我在经历了一次巨大的失误后,正在尝试恢复文件。

到目前为止,git checkout -- *运行良好。除此之外,例如,在我的.gitignore文件中,我列出了"LICENSE.txt",它显然不仅适用于该名称的根级文件,而且适用于整个目录树中具有该名称的每个文件。

因此,当我在wordpress文件夹中运行git checkout -- *时,它失败了,并出现错误:

错误:路径规范"blog/license.txt"与git 已知的任何文件都不匹配

如何运行该命令,使其仅适用于被跟踪的文件?我的另一个选择是浏览每个文件夹并逐个恢复文件。

另外请注意,license.txt并不是我唯一被忽略的文件问题。有几十个。

如果我正确理解您的问题,您希望将当前跟踪的所有文件重置为上一次提交,并保留未跟踪的文件。

如果是这样的话,那么我会做如下。

第一种方式

正如Porges在评论中提到的那样。

首先取消粘贴所有当前修改的文件:

git reset

然后将所有未暂存的修改文件重置为上一次提交。

git checkout -- .

第二种方式(仅限Git 1.7.7+)

首先,我会将跟踪的文件如下所示:

git stash

然后我会将未跟踪的文件如下所示:

git stash -u

因此,现在您的堆栈上有两个隐藏文件:一个在底部有跟踪文件,另一个在顶部有未跟踪文件。弹出跟踪文件如下(也就是应用堆栈中第二个隐藏的文件):

git stash apply stash@{1}

然后重置为上一次提交:

git reset --hard

最后,应用未跟踪的文件:

git stash apply

最新更新