命令告诉git不要跟踪某些文件



我知道有一个快捷方式,但记不住了。

我在一个存储库中工作,大约有8个文件需要添加和提交,还有2个文件经过修改,我不需要提交。我不想为我提交的每个文件运行git add <file>,而是想运行2个命令来忽略我不需要添加的文件,然后为我添加/提交的8个运行git add .

我以为忽略我不需要的文件的命令是git checkout -- <file I don't need>,但我一直收到pathspec 'file I don't need' did not match any file(s) known to git的错误

我想,当然,这是因为这两个文件仍然没有被追踪。所以我用git add .添加了所有内容,然后运行git checkout -- <file I don't need>。然而,当我在那之后运行git status时,这些文件仍然显示为已提交。

任何建议都将不胜感激!

要将暂存的文件移出暂存区,请使用git reset:

git reset -- file1 file2

我想,当然,这是因为这两个文件仍然没有被跟踪。

如果是这种情况,也许您想要的是git add -ugit add -u .。这与git add .非常不同,因为-u的意思是更新。然后必须问一个显而易见的问题:更新什么这在文档中得到了回答:

-u--update
仅在索引所在位置更新索引已经具有与<路径规范>。这也会删除as修改索引项以匹配工作树,但不添加新文件。

如果否<路径规范>当使用-u选项时,所有整个工作树中被跟踪的文件将更新(旧用于将更新限制在当前目录的Git版本及其子目录(。

所以这就是答案:-u意味着更新Git的索引。该索引也被称为暂存区,它保存了每个文件的副本,准备提交,格式与Git在下一次提交时使用的格式完全相同。因此,更新索引会更新拟议的下一次提交。

请注意,如果某个文件存在于Git的索引中,但您已将其从工作树中删除,git add -u从Git索引中删除该文件。也就是说,提议的下一个提交现在也缺少文件,就像工作树一样。一旦您完成了这一操作,稍后的git add -u就不会重新添加文件,因为它已经不在Git的索引中了。您需要一个非-ugit add来将文件放入Git的索引中,这样git add -u就会注意到工作树副本在那之后是否被修改,并获取新的文件内容。

关于旧版本的Git的附加说明描述了git add -u(没有列出任何文件(在Git 1.x版本中是如何工作的。新的2.x行为检查当前工作目录上方的位置;要获得Git 1.x的行为,请使用git add -u .。这是因为.的意思是当前工作目录和所有子目录,当然Git 1.x就是这样解释一个空的git add -u的。

最新更新