如何忽略git中的某些文件?

Koh*_*n95 685 git gitignore

我有一个包含文件的存储库Hello.java.当我编译它时,Hello.class会生成一个额外的文件.

Hello.class.gitignore文件中创建了一个条目.但是,该文件似乎仍然被跟踪.

我想知道如何让git忽略Hello.class.

Ond*_*ták 768

问题是.gitignore忽略之前(by git add)之前未跟踪的文件.运行git reset name_of_file以取消暂存文件并保留它.如果您还想从存储库中删除给定文件(推送后),请使用git rm --cached name_of_file.

  • 命令`git rm --cached name_of_file`将从你的git仓库中删除该文件.即使您将其添加到.gitignore文件中也是如此.这并不是在忽略那是删除. (184认同)
  • `git reset name_of_file`删除了跟踪并且不删除该文件. (88认同)
  • 我很高兴您的解决方案适用于@ Kohan95!虽然应根据所选答案重命名此问题.我的评论只是对开发人员的警告,他们可能不知道命令的作用. (38认同)
  • 尝试了git rm --cached <name_of_file>它确实删除了repo中的文件,但由于它位于.gitignore文件中,因此未删除本地副本.另外需要注意的是,要添加目录,需要使用尾随斜杠"/".我在一个曾经签入的ruby项目中删除了Rubymine的配置目录,这是".idea".在文件中我放了".idea /"然后"git rm --cached -r .idea"来删除目录及其下的所有内容(因为git只有版本文件,而不是目录.) (7认同)
  • 在这种情况下,这似乎是OP想要的. (3认同)
  • @Stephane你是部分正确的.推送后,`git rm --cached <filename>`将从存储库中删除该文件.你是对的,但是说该文件仍然存在于本地并且在git状态下被视为`?? <文件名>`.`git rm --cached <filename>`和`git rm <filename>`之间的区别在于没有`--cached`文件也将在本地删除. (3认同)
  • @OrwellHindenberg我认为`git rm --cached &lt;filename&gt;`从git历史记录中删除了该文件,但没有从本地文件系统中也没有从存储库中删除了该文件。我想错了吗? (2认同)

Xma*_*cal 198

如何忽略新文件

在全球范围内

将路径添加到您要忽略的.gitignore文件中的文件(并提交它们).这些文件条目也适用于签出回购的其他人.

本地

将路径添加到您要忽略的.git/info/exclude文件中.这些文件条目仅适用于您的本地工作副本.

如何忽略更改的文件(暂时)

为了忽略已更改的文件列为已修改,您可以使用以下git命令:

git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)

要恢复无知,请使用以下命令:

git update-index --no-assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)


Arm*_*and 149

将以下行添加到.gitignore:

/Hello.class
Run Code Online (Sandbox Code Playgroud)

这将从git中排除Hello.class.如果您已经提交了它,请运行以下命令:

git rm Hello.class
Run Code Online (Sandbox Code Playgroud)

如果要从git中排除所有类文件,请将以下行添加到.gitignore:

*.class
Run Code Online (Sandbox Code Playgroud)

  • 将`Hello.class`添加到`.gitignore`将忽略任何子目录中名为`Hello.class`的文件.如果您只想忽略与`.gitignore`文件在同一目录中的文件`Hello.class`,请改用`/ Hello.class`行. (31认同)
  • @Imray你可以把`.gitignore`放在git项目的任何地方 - 如果一个路径以`/`开头,它将相对于`.gitignore`文件的位置; 否则它将递归地引用当前目录及其后代目录中的文件. (6认同)

小智 104

1)创建一个.gitignore文件,这样做,你只需创建一个.txt文件并更改扩展如下:

在此输入图像描述

然后你必须改变在cmd上写下面一行的名称:

 rename git.txt .gitignore
Run Code Online (Sandbox Code Playgroud)

git.txt您刚刚创建的文件的名称在哪里.

然后,您可以打开该文件并写入您不想在存储库中添加的所有文件.例如我的看起来像这样:

#OS junk files
[Tt]humbs.db
*.DS_Store

#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.pyc
*.xml
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad

#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*

#Project files
[Bb]uild/

#Subversion files
.svn

# Office Temp Files
~$*
Run Code Online (Sandbox Code Playgroud)

一旦你有了这个,你需要将它添加到您的git存储库.您必须将文件保存到存储库所在的位置.

然后在你的git bash中你必须写下以下行:

git config --global core.excludesfile ~/.gitignore_global
Run Code Online (Sandbox Code Playgroud)

如果存储库已经存在,那么您必须执行以下操作:

 rename git.txt .gitignore
Run Code Online (Sandbox Code Playgroud)

如果步骤2不起作用,那么您应该编写要添加的文件的孔路径.

希望能帮助到你!


avj*_*avj 58

无视:

git update-index --assume-unchanged <path/to/file>
Run Code Online (Sandbox Code Playgroud)

要撤消忽略:

git update-index --no-assume-unchanged <path/to/file>
Run Code Online (Sandbox Code Playgroud)

  • 我希望这是解决问题的最佳图表....它非常简单和优雅 (5认同)

小智 46

您可以使用以下方法忽略/不忽略跟踪文件中的更改.

  1. 忽略: git update-index --assume-unchanged <file>
  2. 要恢复被忽略的文件: git update-index --no-assume-unchanged <file>

  • 这适用于*all*文件吗?目前还不清楚这些命令如何仅应用于单个文件以忽略/取消它. (4认同)
  • [请不要](https://public-inbox.org/git/xmqqy4z5go1y.fsf@gitster.dls.corp.google.com/): '假设不变不应该被滥用于忽略机制。它是“我知道我的文件系统操作很慢。**我向 Git 保证我_不会_更改这些路径**…”特别是,这不是一个承诺…Git 将始终认为这些路径未经修改 -如果 Git 可以确定路径…已经更改,而不会产生额外的 `lstat(2)` 成本,则它保留报告路径*已*修改的权利(...`git commit -a` 可以自由地提交该更改)。 ' (3认同)

ter*_*nus 22

.gitignore在.git所在的目录中创建一个.您可以列出以换行符分隔的文件.您还可以使用通配符:

*.o
.*.swp
Run Code Online (Sandbox Code Playgroud)

  • 避免将特定于工具的模式(即临时Vim文件)放在`.gitignore`文件中是一种很好的做法(除非项目强制要求该工具).您可以在每个用户的排除文件中设置您喜欢的工具的模式(设置`core.excludesFile`); 它们将在您的所有存储库中运行.例如`git config --global core.excludesFile"$ HOME/.git-user-exludes"`,然后将它们放在该文件中. (3认同)

Mil*_*vic 14

来自官方GitHub网站:

如果您已经签入了一个文件,并且想要忽略它,那么如果稍后添加规则,Git将不会忽略该文件.在这些情况下,您必须首先在终端中运行以下命令来解除文件:

git rm --cached FILENAME
Run Code Online (Sandbox Code Playgroud)

要么

git rm --cached .
Run Code Online (Sandbox Code Playgroud)


Kin*_*nch 12

你应该写类似的东西

*.class
Run Code Online (Sandbox Code Playgroud)

进入你的.gitignore文件.

  • @AgentZebra你应该在`.gitignore`中添加一个条目`*.class`,使git忽略所有以`.class`结尾的文件. (4认同)
  • 请解释一下? (2认同)

Rah*_*arg 12

  1. 转到 .gitignore 文件并添加要忽略的文件的条目
  2. git rm -r --cached .
  3. 现在运行 git add .


Irf*_*ani 9

首先创建一个.gitignore文件,我们必须在其中存储要忽略的文件和目录的名称。

忽略目录;

name_of_directory/
Run Code Online (Sandbox Code Playgroud)

忽略文件;

name_of_file
Run Code Online (Sandbox Code Playgroud)

我们不需要提供要忽略的文件或目录的完整路径;我们只需要提供它的名称。

如果你想忽略所有具有相同扩展名的文件;

*.pyc  #will ignore all files with pyc extention
Run Code Online (Sandbox Code Playgroud)

另外,上述操作仅在您第一次未将文件添加到 Git 时才会起作用。但是,如果我错误地向 Git 添加了一个文件,现在您希望在其余提交中忽略它,则需要首先通过运行此命令来清除与该文件相关的 Git 缓存;

git rm -r --cached <path_of_the_file>
Run Code Online (Sandbox Code Playgroud)

其余部分相同,即将名称添加到 .gitignore 文件中。


Chi*_*moy 7

添加到.gitignore,您要忽略哪些文件

*.类

*.projects

*.prefs

*.项目


yas*_*ser 5

通过创建.gitignore文件.有关详细信息,请参阅此处:Git Book - 忽略文件

还要检查一下:如何在不使用.gitignore的情况下让Git忽略文件?


小智 5

如果您已经提交了该文件并且您试图通过添加到.gitignore文件中来忽略它,Git 将不会忽略它。为此,您首先必须执行以下操作:

git rm --cached FILENAME
Run Code Online (Sandbox Code Playgroud)

如果您是全新启动项目,并且想要将一些文件添加到 Git ignore,请按照以下步骤创建一个 Git 忽略文件:

  1. 导航到您的 Git 存储库。
  2. 输入“touch .gitignore”,这将创建一个.gitignore文件。


小智 5

使用:

git reset filename
git rm --cached filename
Run Code Online (Sandbox Code Playgroud)

然后添加您要忽略的文件。然后提交并推送到您的存储库。