忽略.gitignore文件本身

我只是在我的新项目的根上做了一个git init

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

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

.gitignore文件应该在你的仓库中,所以它应该被添加和提交,正如git status暗示的那样。 它必须是存储库树的一部分,以便对其进行更改,等等。

因此,将其添加到您的存储库,它不应该gitignored。

如果你真的想要,你可以将.gitignore添加到.gitignore文件,如果你不希望它被提交。 但是,在这种情况下,最好将忽略添加到.git/info/exclude这个特殊的签出本地文件,它的工作方式与.gitignore相似,但是不会显示在“git status”中,因为它位于.git文件夹中。

另见https://help.github.com/articles/ignoring-files

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

你可以在你的“.gitignore”文件中添加一行“.gitignore”。 这会导致“.gitignore”文件被git忽略。 我其实不觉得这是个好主意。 我认为忽略文件应该被版本控制和跟踪。 我只是把它放在那里以保证完整性。

你也可以有一个全球用户的git .gitignore文件,将自动适用于所有的回购。 这对IDE和编辑器文件很有用(例如Vim的swp*~文件)。 更改目录位置以适应您的操作系统

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

     [core] excludesfile = /home/username/.gitignore 
  2. 创build一个文件模式的~/.gitignore文件被忽略

  3. 保存你的点文件在另一个回购,所以你有一个备份(可选)。

任何时候你复制,初始化或克隆回购你的全球gitignore文件也将被使用

在添加.gitignore文件并提交后,它将不再显示在“未跟踪文件”列表中。

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

如果某人已经将.gitignore添加到您的回购站,但您想对其进行一些更改并忽略这些更改,请执行以下操作:

git update-index --assume-unchanged .gitignore

来源 。

只要告诉别人,我们也有同样的痛苦。 我们想排除已经提交的文件。

这篇文章更有用: 使用.git / info /排除太晚

具体是什么你需要忽略一个文件实际上是使用命令git删除请参阅git rmhttp://www.kernel.org/pub/software/scm/git/docs/git-rm.html

你通过去testing它

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

这将输出将被排除的东西,如果你运行它。

然后

你去运行它

git rm *.log
(或者你想要的任何文件名path/expression式)

然后将*.log行添加到.gitignore文件中。

我们的想法是将特定于您的项目的文件放入.gitignore文件中(如前所述),将其添加到存储库。 例如.pyc.o文件,testing套件创build的日志,一些灯具等。

对于你自己的安装程序创build的文件,但不一定会出现在每个用户(如.swp文件,如果你使用vim,隐藏ecplise目录等),你应该使用.git/info/exclude (如前所述)。

首先,和其他人一样,你的.gitignore应该被Git跟踪 (因此不应该被忽略)。 让我解释一下为什么。

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

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

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

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

  • 由操作系统或IDE创build的文件和文件夹应放置在全局.gitignore 。 好处是这个.gitignore被应用到你的计算机上的所有存储库,所以你不必为每个存储库重复这个。 它不会与其他开发人员共享,因为他们可能使用不同的操作系统和/或IDE。
  • 不属于项目.gitignore或全局.gitignore中的文件可以在your_project_directory/.git/info/exclude使用显式存储库排除来忽略。 该文件不会与其他开发人员共享,并且是特定于该单个存储库的

当然,.gitignore文件是显示在状态,因为它没有跟踪,git把它看作一个美味的新文件吃!

因为.gitignore是一个未被跟踪的文件,但是当你把它放在.gitignore中的时候,它是被git忽略的候选者!

所以,答案很简单:只需添加一行:

 .gitignore # Ignore the hand that feeds! 

到你的.gitignore文件!

而且,与8月份的回应相反,我应该说这不是.gitignore文件应该在您的存储库中。 它恰好可以 ,这往往是方便的。 这可能是真的,这就是原因.gitignore是作为.git / info / exclude的替代方法创build的,它没有存储库跟踪的选项。 无论如何,您使用.gitignore文件的方式完全取决于您。

有关参考,请查看kernel.org上的gitignore(5)手册页 。

注意下面的“问题”有时你想添加目录,但没有在这些目录中的文件。 简单的解决scheme是创build一个包含以下内容的.gitignore:

 * 

这个连接工作正常,直到你意识到目录没有被添加(如预期到你的仓库,原因是.gitignore也将被忽略,因此目录是空的,因此,你应该做这样的事情:

 * !.gitignore 

这似乎只适用于你的当前目录让Git忽略存储库中的所有文件。

更新这个文件

 .git/info/exclude 

与您的通配符或文件名

 *pyc *swp *~ 

在我的情况下,我想排除一个现有的文件。 只有修改.gitignore不起作用。 我遵循这些步骤:

 git rm --cached dirToFile/file.php vim .gitignore git commit -a 

通过这种方式,我从caching中清除了我想排除的文件,并将其添加到.gitignore后

导航到你的git仓库的基本目录并执行以下命令:

 echo '\\.*' >> .gitignore 

所有的点文件将被忽略,包括那讨厌的.DS_Store,如果你在Mac上。

最终用户很可能希望让Git忽略“.gitignore”文件,因为Eclipse创build的IDE特定文件夹可能与NetBeans或其他IDE不同。 所以为了保持源代码IDE的对立性,它使生活变得轻松,有一个自定义的git忽略不与整个团队共享,因为单个开发人员可能使用不同的IDE。

我认为有些情况下忽略.gitignore是非常有用的。 例如,当您有多个团队或一个大团队在相同的代码库上工作时。 在这种情况下,你需要有一定的约定,其中一个约定就是在git回购中被忽略的东西。 通常是关于忽略由IDE或OS创build的文件和目录,一些生成的日志等。

但是,有一种倾向于对.gitignore文件引入非常规变化的力量。 .gitignore文件可以被不负责任的人,错误地,被使用的工具,或在其他情况下进一步改变。

要对此产生反作用力,我们可以做如下事情:

  1. 最初的.gitignore应该反映团队中的惯例,
  2. 在被推入之后,应该通过添加.gitignore条目来保护.gitignore,并再次推送该更改.gitignore文件以这种方式被“ 密封 ”。

密封的.gitignore文件可以在本地进行更改,而不.gitignore更改者传播给团队的其他成员。 但是,如果在整个团队中广泛地认同变化,那么就可能“拆封”它,改变它而不是“封印”它。 那不可能是错误的,只是故意的。

可悲的是,你不能从愚蠢的100%保护,但这样,你已经尽了一切办法来防止愚蠢的事情发生。

如果你的团队相对较小,而且这些人不是很重要,但是即使这些人也愿意有一件事情不用担心。

使用.git/info/exclude是很酷的,当你无法做任何关于基础设施的设置时,只要覆盖你自己的一个**不要犯错误。

从什么是正确和错误的立场出发,我投票决定把.gitignoreinput到.gitignore文件中,让每个人都可以自由地做任何他们想要的事情,而不是侵犯他人。

如果你已经在.gitignore签入,而你想忽略对它的修改,看看这个答案 :

尝试使用这个命令:

 git update-index --assume-unchanged FILENAME_TO_IGNORE 

要将其反转(如果您想要对其进行更改),请使用:

 git update-index --no-assume-unchanged 

更新

以下是如何在当前目录下列出“假定不变”的文件:

 git ls-files -v | grep -E "^[az]" 

由于-v选项将使用“假定不变”文件使用小写字母。

我发现设置忽略.DS_Store文件的最佳位置是在.git/info/exclude文件中。

当你在其中设置一个git仓库时,IntelliJ似乎会自动执行此操作。

.gitignore是关于忽略其他文件。 git是关于文件,所以这是关于忽略文件。 然而,由于gitclosures文件,这个文件需要在那里作为列出其他文件名的机制。

如果它被称为.the_list_of_ignored_files它可能会更明显一点。

一个类比是你不想做的待办事项列表。 除非你把它们列在某个“待办事项”列表中,否则你不会了解它们。