我只是git init
在我的新项目的根上做了一个。
然后我创建了一个.gitignore
文件。
现在,当我键入时git status
,.gitignore文件将出现在未跟踪文件的列表中。这是为什么?
how to gitignore .gitinore file
,问题和接受的答案与标题并没有真正的关系。标题可能会有所改善。
我只是git init
在我的新项目的根上做了一个。
然后我创建了一个.gitignore
文件。
现在,当我键入时git status
,.gitignore文件将出现在未跟踪文件的列表中。这是为什么?
how to gitignore .gitinore file
,问题和接受的答案与标题并没有真正的关系。标题可能会有所改善。
Answers:
该.gitignore
文件应位于您的存储库中,因此,如git status
建议的那样,确实应将其添加并提交。它必须是存储库树的一部分,以便可以合并对其所做的更改,依此类推。
因此,将其添加到您的存储库中,不应忽略它。
如果您确实想要,可以将其添加.gitignore
到.gitignore
文件中,如果您不想将其提交。但是,在这种情况下,最好将ignore添加到.git/info/exclude
一个特殊的checkout-local文件,该文件的工作方式类似于.gitignore,但由于位于.git
文件夹中而不会显示为“ git status” 。
如果要在Git树之外存储忽略文件列表,则可以使用.git / info / exclude文件。它仅适用于您回购的结帐。
~/.gitignore
因此我使用的任何存储库都将忽略它们。
git update-index --assume-unchanged <file>
停止跟踪更改而无需更改您的存储库。这在需要进行本地更改的大型共享项目中非常有用,但是没有其他人希望看到您提交回购协议的东西。参见blog.pagebakers.nl
您实际上可以.gitignore
在.gitignore
文件中添加一行。这将导致该.gitignore
文件被git忽略。我实际上并不认为这是一个好主意。我认为忽略文件应受版本控制和跟踪。我只是出于完整性考虑。
git rm --cached .gitignore
您还可以拥有一个全局用户git .gitignore
文件,该文件将自动应用于您的所有存储库。这是IDE和编辑文件(例如有用swp
和*~
文件VIM)。更改目录位置以适合您的操作系统。
添加到您的~/.gitconfig
文件:
[core]
excludesfile = /home/username/.gitignore
创建一个~/.gitignore
具有要忽略的文件模式的文件。
将点文件保存在另一个存储库中,以便进行备份(可选)。
每当您复制,初始化或克隆存储库时,也会使用全局gitignore文件。
如果某人已经将a添加.gitignore
到您的存储库中,但是您想对其进行一些更改并忽略这些更改,请执行以下操作:
git update-index --assume-unchanged .gitignore
来源。
.git/info/excludes
存在。
--assume-unchanged
。为什么一个比另一个更好?
.git/info/excludes
如果文件已被跟踪,btw将不起作用。
以防万一别人有和我们一样的痛苦。我们想排除一个已经提交的文件。
这篇文章更有用: 使用.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
(或您想要的任何文件名路径/表达式)
然后*.log
在.gitignore
文件中添加一行。
git status
。
当然,.gitignore文件会显示在状态中,因为它没有被跟踪,而git则将其视为可食用的新文件!
由于.gitignore是未跟踪的文件,因此当您将其放入.gitignore时,它是git会忽略的候选文件!
因此,答案很简单:只需添加以下行:
.gitignore # Ignore the hand that feeds!
到您的.gitignore文件!
而且,与August的回答相反,我应该说这不是.gitignore文件应该位于您的存储库中。碰巧,它可以是,这往往是方便。也许这是事实,因为.gitignore被创建为.git / info / exclude的替代方案的原因,后者没有被存储库跟踪的选项。无论如何,如何使用.gitignore文件完全取决于您。
作为参考,请查看kernel.org上的gitignore(5)联机帮助页。
首先,正如其他许多人已经说过的那样,您.gitignore
应该由Git跟踪(因此不应被忽略)。让我解释一下原因。
(TL; DR:提交.gitignore
文件,并使用全局.gitignore
忽略由您的IDE或操作系统创建的文件)
您可能已经知道,Git是一个分布式版本控制系统。这意味着它允许您在不同的版本之间来回切换(即使开发已经分散到不同的分支中),并且还允许多个开发人员在同一个项目上工作。
尽管.gitignore
在快照之间切换时跟踪自己也有好处,但提交快照的最重要原因是,您希望与从事同一项目的其他开发人员共享文件。通过将文件提交到Git中,其他贡献者.gitignore
在克隆存储库时将自动获取文件,因此他们不必担心意外提交了不应提交的文件(例如日志文件,缓存目录,数据库凭据)等)。而且,如果在某个时候项目的.gitignore
更新,他们可以简单地进行这些更改,而不必手动编辑文件。
当然,您将要忽略一些文件和文件夹,但是这些文件和文件夹是特定于您的,并且不适用于其他开发人员。但是,这些不应该在项目的中.gitignore
。您可以在其他两个地方忽略文件和文件夹:
.gitignore
。这样做的好处是,它将.gitignore
应用于计算机上的所有存储库,因此您不必为每个存储库重复此操作。而且它没有与其他开发人员共享,因为他们可能正在使用其他操作系统和/或IDE。.gitignore
或全局文件的文件。该文件将不会与其他开发人员共享,并且仅针对该单个存储库.gitignore
your_project_directory/.git/info/exclude
.gitignore
.gitignore
仅用于忽略尚未被Git跟踪的文件。向其中添加已跟踪的文件.gitignore
不会阻止您将更改提交到该文件。即使有可能,.gitignore
当它指示Git忽略自身时,您将如何提交更改?
就我而言,我要排除现有文件。仅修改.gitignore不起作用。我遵循以下步骤:
git rm --cached dirToFile/file.php
vim .gitignore
git commit -a
这样,我从缓存中清除了要排除的文件,并将其添加到.gitignore中。
我认为在某些情况下,忽略.gitignore非常有用。例如,当您有多个团队或一个大型团队在同一代码库上工作时。在那种情况下,您需要具有某些约定,这些约定之一是关于git repo中忽略的约定。通常是忽略IDE或OS创建的文件和目录,某些生成的日志等。
但是,有一种势力倾向于对.gitignore
文件进行非常规的更改。该.gitignore
文件可以由不负责任的人进行进一步的改变,错误,通过使用,或在其他一些情况下的工具。
为了对此起反作用,我们可以按照以下步骤操作:
.gitignore
文件以这种方式被“ 密封 ”。可以在本地更改“ 密封 ” .gitignore
文件,而无需将更改者传播给团队的其他成员。但是,如果整个团队都普遍同意进行更改,则可以“取消密封”,进行更改,然后再次“密封”。这不可能是错误的,只能是故意的。
可悲的是,您不能100%免受愚蠢的侵害,但是通过这种方式,您已尽一切可能防止愚蠢的事情发生。
如果您的团队规模较小,并且拥有非常优秀的专业人员,那么这并不重要,但是即使是那些家伙,也不必担心一件事。
.git/info/exclude
当您无法对基础结构设置做任何事情,只是掩盖自己的**而不犯错误时,使用就很酷。
从对与错的立场出发,我投票赞成在.gitignore
文件中添加.gitignore条目,从而使每个人都可以自由地在本地做他们想做的任何事,但不会侵犯他人。
我发现在.DS_Store
文件中设置对讨厌文件的忽略的最佳位置.git/info/exclude
。
当您在其中设置git存储库时,IntelliJ似乎会自动执行此操作。
git add self && git commit -m "-1 for reverting existential depression" && git remote rm HEAD