【问题标题】:Command to tell git to not track certain files命令告诉 git 不要跟踪某些文件
【发布时间】: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 时,这些文件仍然显示为已提交。

任何建议将不胜感激!

【问题讨论】:

标签: git git-checkout git-add git-status


【解决方案1】:

要获取暂存区之外的文件,请使用git reset

git reset -- file1 file2

【讨论】:

    【解决方案2】:

    我想,当然是因为那两个文件还没有被追踪。

    如果是这种情况,也许您想要的是git add -ugit 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 的方式。

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2010-10-25
      • 1970-01-01
      • 2017-12-31
      • 2010-11-19
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多