如何阻止. gitignore 出现在未跟踪的文件列表中?

我只是在新项目的根目录上进行了git init

然后,我创建了一个.gitignore文件。

现在,当我输入git status.gitignore文件将出现在未跟踪文件的列表中。这是为什么?

答案

.gitignore文件应位于您的存储库中,因此应按照git status建议确实将其添加并提交。它必须是存储库树的一部分,以便可以合并对其所做的更改,依此类推。

因此,将其添加到您的存储库中,不应忽略它。

如果您确实想要,可以将.gitignore添加到.gitignore文件中,如果您不想提交它。但是,在这种情况下,最好将忽略项添加到.git/info/exclude ,这是一个特殊的 checkout-local 文件,该文件的工作方式与. gitignore 相似,但由于位于.git文件夹中而不会显示为 “git status”。

另请参阅https://help.github.com/articles/ignoring-files

如果要在 Git 树之外存储忽略文件列表,则可以使用.git / info / exclude文件。它仅适用于您回购的结帐。

您实际上可以在 “.gitignore” 文件中添加一行 “.gitignore”。这将导致 git 忽略 “.gitignore” 文件。我实际上并不认为这是一个好主意。我认为忽略文件应受版本控制和跟踪。我只是出于完整性考虑。

您还可以拥有一个全局用户 git .gitignore文件,该文件将自动应用于您的所有存储库。这对于 IDE 和编辑器文件(例如 Vim 的swp*~文件)很有用。更改目录位置以适合您的操作系统

  1. 添加到您的~/.gitconfig文件

    [core]
    excludesfile = /home/username/.gitignore
  2. 使用文件模式创建~/.gitignore文件

  3. 将点文件保存在另一个存储库中,以便进行备份(可选)。

每当您复制,初始化或克隆存储库时,也会使用全局 gitignore 文件。

如果有人已经将.gitignore添加到您的仓库中,但是您想对其进行一些更改并忽略这些更改,请执行以下操作:

git update-index --assume-unchanged .gitignore

来源

git add .gitignore
git commit -m "add .gitignore file"
git status

以防万一别人有和我们一样的痛苦。我们想排除一个已经提交的文件。

这篇文章更有用: 使用. git / info / exclude 太晚了

具体来说,您实际上需要使用命令 git remove 来忽略文件,请参见git rmhttp://www.kernel.org/pub/software/scm/git/docs/git-rm.html

你通过去测试

git rm --dry-run *.log
(如果您说要排除所有日志文件)

这将输出,如果你运行它你会被排除在外。

然后

你通过去运行它

git rm *.log
(或您想要的任何文件名路径 / 表达式)

然后在您的.gitignore文件中添加*.log行。

想法是将特定于您项目的文件放入.gitignore文件,并将其添加到存储库中(如上所述)。例如.pyc.o文件,测试套件创建的日志,一些固定装置等。

对于文件,你自己的设置创建但不一定会出现针对每个用户(如.swp文件,如果你使用 vim,隐藏 ecplise 目录等),你应该使用.git/info/exclude (前面已经提到)。

.gitignore # Ignore the hand that feeds!

首先,正如许多其他人已经说过的那样,您的.gitignore应该由 Git 跟踪 (因此不应忽略)。让我解释一下原因。

(TL; DR:提交.gitignore文件,并使用全局.gitignore忽略由 IDE 或操作系统创建的文件)

您可能已经知道,Git 是一个分布式版本控制系统 。这意味着它允许您在不同版本之间来回切换(即使开发已分散到不同的分支中),并且还允许多个开发人员在同一个项目上工作。

尽管在快照之间切换时跟踪.gitignore也有好处,但是提交该快照的最重要原因是,您希望与从事同一项目的其他开发人员共享文件。通过将文件提交到 Git 中,其他贡献者在克隆存储库时将自动获取.gitignore文件,因此他们不必担心意外提交了不应提交的文件(例如日志文件,缓存目录,数据库凭据等)。而且,如果在某个时候项目的.gitignore已更新,他们可以简单地提取这些更改,而不必手动编辑文件。

当然,有些文件和文件夹将要您忽略,但它们是特定于您的,不适用于其他开发人员。但是,这些不应在项目的.gitignore 。您可以在其他两个地方忽略文件和文件夹:

  • 您的操作系统或 IDE 创建的文件和文件夹应放在全局.gitignore 。好处是,此.gitignore应用于计算机上的所有存储库,因此您不必为每个存储库重复此操作。而且它没有与其他开发人员共享,因为他们可能正在使用其他操作系统和 / 或 IDE。
  • 使用your_project_directory/.git/info/exclude显式存储库排除 ,可以忽略不属于项目.gitignore或全局.gitignore 。该文件将不会与其他开发人员共享,并且仅针对该单个存储库