我只是在新项目的根目录上进行了git init
。
然后,我创建了一个.gitignore
文件。
现在,当我输入git status
, .gitignore文件将出现在未跟踪文件的列表中。这是为什么?
.gitignore
文件应位于您的存储库中,因此应按照git status
建议确实将其添加并提交。它必须是存储库树的一部分,以便可以合并对其所做的更改,依此类推。
因此,将其添加到您的存储库中,不应忽略它。
如果您确实想要,可以将.gitignore
添加到.gitignore
文件中,如果您不想提交它。但是,在这种情况下,最好将忽略项添加到.git/info/exclude
,这是一个特殊的 checkout-local 文件,该文件的工作方式与. gitignore 相似,但由于位于.git
文件夹中而不会显示为 “git status”。
如果要在 Git 树之外存储忽略文件列表,则可以使用.git / info / exclude文件。它仅适用于您回购的结帐。
您实际上可以在 “.gitignore” 文件中添加一行 “.gitignore”。这将导致 git 忽略 “.gitignore” 文件。我实际上并不认为这是一个好主意。我认为忽略文件应受版本控制和跟踪。我只是出于完整性考虑。
您还可以拥有一个全局用户 git .gitignore
文件,该文件将自动应用于您的所有存储库。这对于 IDE 和编辑器文件(例如 Vim 的swp
和*~
文件)很有用。更改目录位置以适合您的操作系统
添加到您的~/.gitconfig
文件
[core]
excludesfile = /home/username/.gitignore
使用文件模式创建~/.gitignore
文件
将点文件保存在另一个存储库中,以便进行备份(可选)。
每当您复制,初始化或克隆存储库时,也会使用全局 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 rm ( http://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
。您可以在其他两个地方忽略文件和文件夹:
.gitignore
。好处是,此.gitignore
应用于计算机上的所有存储库,因此您不必为每个存储库重复此操作。而且它没有与其他开发人员共享,因为他们可能正在使用其他操作系统和 / 或 IDE。 your_project_directory/.git/info/exclude
显式存储库排除 ,可以忽略不属于项目.gitignore
或全局.gitignore
。该文件将不会与其他开发人员共享,并且仅针对该单个存储库