命令告诉 git 不要跟踪某些文件
Posted
技术标签:
【中文标题】命令告诉 git 不要跟踪某些文件【英文标题】:Command to tell git to not track certain files 【发布时间】:2021-09-12 22:52:37 【问题描述】:我知道这有一个捷径,但不记得了。
我在一个存储库中工作,大约有 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
的错误
我想,当然,这是因为这 2 个文件仍未被跟踪。所以我用git add .
添加了所有内容,然后运行git checkout -- <file I don't need>
。但是,当我在那之后运行 git status
时,这些文件仍然显示为已提交。
任何建议将不胜感激!
【问题讨论】:
这能回答你的问题吗? ***.com/questions/13442130/… 不,绝对不是那里列出的任何命令。我真的可以发誓它是 git checkout -- 。不过,我可以试一试! 这是另一个:***.com/a/55351856/1264804 【参考方案1】:要获取暂存区之外的文件,请使用git reset
:
git reset -- file1 file2
【讨论】:
【参考方案2】:我想,当然是因为那两个文件还没有被追踪。
如果是这种情况,也许您想要的是git add -u
或git add -u .
。这与git add .
非常不同,因为-u
表示更新。然后必须问一个明显的问题:更新什么?the documentation:
-u
,--update
在它所在的位置更新索引 已经有一个匹配的条目。这也删除 as 修改索引条目以匹配工作树,但不添加 新文件。 如果在使用
-u
选项时没有给出,则所有 更新整个工作树中的跟踪文件(旧 用于限制对当前目录的更新的 Git 版本 及其子目录)。
这就是答案:-u
表示更新 Git 的索引。该索引也称为暂存区,它保存每个文件的副本,准备好提交,与 Git 在下一次提交时使用的格式完全相同。因此更新索引会更新提议的下一次提交。
请注意,如果某些文件存在于 Git 的索引中,但您已将其从工作树中删除,git add -u
将从 Git 的索引中删除该文件。也就是说,提议的下一次提交现在也缺少文件,就像工作树一样。完成此操作后,稍后的 git add -u
将不会重新添加该文件,因为它已经不在 Git 的索引中。您需要非-u
git 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
的方式。
【讨论】:
以上是关于命令告诉 git 不要跟踪某些文件的主要内容,如果未能解决你的问题,请参考以下文章