Jac*_*ine 959 git version-control dvcs gitignore
我只是git init
在新项目的根目录上做了一个.
然后我创建了一个.gitignore
文件.
现在,当我输入时git status
,.gitignore文件出现在未跟踪文件列表中.这是为什么?
Aug*_*aas 944
该.gitignore
文件应该在您的存储库中,因此应该按照git status
建议将其添加并提交.它必须是存储库树的一部分,因此可以合并对它的更改等.
因此,将它添加到您的存储库,它不应该被gitignored.
如果您真的想要,可以添加.gitignore
到.gitignore
文件中,如果您不希望它被提交.但是,在这种情况下,最好将忽略添加到.git/info/exclude
一个特殊的checkout-local文件中,该文件就像.gitignore一样,但由于它位于.git
文件夹中,因此不会显示在"git status"中.
另请参见https://help.github.com/articles/ignoring-files
Paw*_*dan 279
如果要将忽略文件列表存储在Git树之外,可以使用.git/info/exclude文件.它仅适用于您的结帐回收.
180*_*ION 74
你实际上可以在你的".gitignore"文件中添加一行".gitignore".这将导致git忽略".gitignore"文件.我实际上并不认为这是个好主意.我认为忽略文件应该受版本控制和跟踪.我只是为了完整而把它放在那里.
Ale*_*eek 51
您还可以拥有一个全局用户git .gitignore
文件,该文件将自动应用于您的所有回购.这对IDE和编辑器文件很有用(例如swp
,*~
Vim的文件).更改目录位置以适应您的操作系统
添加到您的~/.gitconfig
文件中
[core]
excludesfile = /home/username/.gitignore
Run Code Online (Sandbox Code Playgroud)创建一个~/.gitignore
包含要忽略的文件模式的文件
将您的点文件保存在另一个仓库中,以便备份(可选).
每次复制,初始化或克隆存储库时,也会使用全局gitignore文件.
Gre*_*ill 37
添加.gitignore
文件并提交后,它将不再显示在"未跟踪文件"列表中.
git add .gitignore
git commit -m "add .gitignore file"
git status
Run Code Online (Sandbox Code Playgroud)
Evo*_*lve 20
只是让别人有同样的痛苦.我们想要排除已经提交的文件.
这篇文章更有用: 使用.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
文件中添加一行.
bay*_*yer 15
我们的想法是将特定于项目的.gitignore
文件放入文件中(如前所述)将其添加到存储库中.例如.pyc
和.o
文件,测试套件创建的日志,一些固定装置等.
对于您自己的设置创建但不一定为每个用户显示的.swp
文件(如使用vim,隐藏的ecplise目录等文件),您应该使用.git/info/exclude
(如前所述).
cha*_*ase 15
当然.gitignore文件显示在状态上,因为它没有跟踪,git认为它是一个美味的新文件!
既然.gitignore是一个未经跟踪的文件,那么当你将它放入.gitignore时它是被git忽略的候选者!
所以,答案很简单:只需添加以下行:
.gitignore # Ignore the hand that feeds!
Run Code Online (Sandbox Code Playgroud)
到您的.gitignore文件!
而且,与August的回复相反,我应该说,并不是.gitignore文件应该在你的存储库中.它恰好可以发生,这通常很方便.而且这可能是因为这就是为什么.gitignore被创建为.git/info/exclude的替代品,它没有被存储库跟踪的选项.无论如何,你如何使用.gitignore文件完全取决于你.
有关参考,请查看kernel.org上的gitignore(5)联机帮助页.
Nic*_*tel 14
首先,正如许多其他人已经说过的那样,你.gitignore
应该由Git跟踪(因此不应该被忽略).让我解释一下原因.
(TL; DR:提交.gitignore
文件,并使用全局.gitignore
忽略由IDE或操作系统创建的文件)
正如您可能已经知道的那样,Git是一个分布式版本控制系统.这意味着它允许您在不同版本之间来回切换(即使开发已经分散到不同的分支),并且它还允许多个开发人员在同一个项目上工作.
虽然.gitignore
在快照之间切换时跟踪您也有好处,但提交快照的最重要原因是您希望与正在处理同一项目的其他开发人员共享该文件.通过将文件提交到Git,其他贡献者将.gitignore
在克隆存储库时自动获取文件,因此他们不必担心意外提交不应提交的文件(例如日志文件,缓存目录,数据库凭据)等).如果在某个时刻.gitignore
更新项目,他们可以简单地提取这些更改,而不必手动编辑文件.
当然,您将要忽略一些文件和文件夹,但这些文件和文件夹特定于您,并不适用于其他开发人员.但是,那些不应该在项目中.gitignore
.还有两个地方可以忽略文件和文件夹:
.gitignore
.这样做的好处是,它.gitignore
适用于您计算机上的所有存储库,因此您不必为每个存储库重复此操作.并且它不与其他开发人员共享,因为他们可能使用不同的操作系统和/或IDE..gitignore
或全局的文件.此文件不会与其他开发人员共享,并且特定于该单个存储库.gitignore
your_project_directory/.git/info/exclude
Maz*_*aze 12
注意以下"问题"有时您想要添加目录但这些目录中没有文件.简单的解决方案是创建一个包含以下内容的.gitignore:
*
Run Code Online (Sandbox Code Playgroud)
这个接缝工作正常,直到你意识到没有添加目录(正如预期的那样存储库.原因是.gitignore也将被忽略,因此目录是空的.因此,你应该做这样的事情:
*
!.gitignore
Run Code Online (Sandbox Code Playgroud)
小智 8
这似乎只适用于当前目录,Git
以忽略存储库中的所有文件.
更新此文件
.git/info/exclude
Run Code Online (Sandbox Code Playgroud)
用你的外卡或文件名
Run Code Online (Sandbox Code Playgroud)*pyc *swp *~
如果您已经签入 .gitignore 并且想要忽略对它的修改,请查看以下答案:
尝试使用此命令:
Run Code Online (Sandbox Code Playgroud)git update-index --assume-unchanged FILENAME_TO_IGNORE
要反转它(如果您想对其进行更改),请使用:
Run Code Online (Sandbox Code Playgroud)git update-index --no-assume-unchanged
更新:
以下是在当前目录下列出“假设未更改”文件的方法:
Run Code Online (Sandbox Code Playgroud)git ls-files -v | grep -E "^[a-z]"
由于该
-v
选项将使用小写字母表示“假定未更改”文件。
就我而言,我想排除现有文件。仅修改.gitignore不起作用。我按照以下步骤操作:
git rm --cached dirToFile/file.php
vim .gitignore
git commit -a
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我从缓存中清除了我想要排除的文件,并将其添加到.gitignore中。