[英]How to ignore certain files in Git
我有一个包含文件Hello.java
的存储库。 当我编译它时,会生成一个额外的Hello.class
文件。
我在.gitignore
文件中为Hello.class
创建了一个条目。 但是,该文件似乎仍被跟踪。
如何让 Git 忽略Hello.class
?
问题是.gitignore
只忽略以前未跟踪的文件(通过git add
)。 运行git reset name_of_file
以取消暂存文件并保留它。 如果您还想从存储库中删除给定文件(推送后),请使用git rm --cached name_of_file
。
如何忽略新文件
全球范围内
将要忽略的文件的路径添加到.gitignore
文件中(并提交它们)。 这些文件条目也将适用于检出存储库的其他人。
本地
将要忽略的文件的路径添加到.git/info/exclude
文件中。 这些文件条目将仅适用于您的本地工作副本。
如何忽略更改的文件(暂时)
为了忽略更改的文件被列为已修改,您可以使用以下 git 命令:
git update-index --assume-unchanged <file1> <file2> <file3>
要恢复这种无知,请使用以下命令:
git update-index --no-assume-unchanged <file1> <file2> <file3>
将以下行添加到文件.gitignore :
/Hello.class
这将从 Git 中排除Hello.class 。 如果您已经提交了它,请运行以下命令:
git rm Hello.class
如果要从 Git 中排除所有类文件,请将以下行添加到.gitignore :
*.class
创建一个.gitignore
文件。 为此,您只需创建一个.txt
文件并更改扩展名,如下所示:
然后您必须更改名称,在cmd窗口中写入以下行:
rename git.txt .gitignore
其中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
# Microsoft Office temporary files
~$*
一旦你有了这个,你需要将它添加到你的 Git 存储库中。 您必须将文件保存在存储库所在的位置。
然后在Git Bash中,您必须编写以下行:
git config --global core.excludesfile ~/.gitignore_global
如果存储库已经存在,那么您必须执行以下操作:
git rm -r --cached .
git add .
git commit -m ".gitignore is now working"
如果第 2 步不起作用,那么您应该编写要添加的文件的整个路径。
无视:
git update-index --assume-unchanged <path/to/file>
要撤消忽略:
git update-index --no-assume-unchanged <path/to/file>
您可以使用以下方法忽略/不忽略跟踪文件中的更改。
git update-index --assume-unchanged <file>
git update-index --no-assume-unchanged <file>
在目录.git所在的目录中创建一个.gitignore文件。 您可以列出其中的文件,并用换行符分隔。 您还可以使用通配符:
*.o
.*.swp
来自官方 GitHub 站点:
如果您已经签入了一个文件,并且您想忽略它,那么如果您稍后添加规则,Git 将不会忽略该文件。 在这些情况下,您必须先取消跟踪文件,方法是在终端中运行以下命令:
git rm --cached FILENAME
或者
git rm --cached .
git rm -r --cached .
git add .
你应该写类似
*.class
进入你的.gitignore
文件。
将要忽略的文件添加到文件.gitignore
:
*。班级
*.项目
*.prefs
*。项目
如果你已经提交了文件并且你试图通过添加到.gitignore
文件来忽略它,Git 不会忽略它。 为此,您首先必须执行以下操作:
git rm --cached FILENAME
如果您刚开始项目并且想要将一些文件添加到 Git 忽略,请按照以下步骤创建 Git 忽略文件:
.gitignore
文件。首先创建一个.gitignore文件,我们必须在其中存储要忽略的文件和目录的名称。
忽略目录;
name_of_directory/
忽略文件;
name_of_file
我们不需要提供要忽略的文件或目录的完整路径; 我们只需要提供它的名字。
如果您想忽略所有具有相同扩展名的文件;
*.pyc #will ignore all files with pyc extention
此外,上述内容仅在您尚未将文件添加到 Git 时才第一次起作用。 但是,如果我的错误是您将文件添加到 Git,而现在您希望在其余提交中忽略该文件,则需要首先通过运行此命令清除有关该文件的 Git 缓存;
git rm -r --cached <path_of_the_file>
其余的都是一样的,即在.gitignore文件中添加名称。
通过创建 .gitignore 文件。 有关详细信息,请参见此处: Git Book - 忽略文件
利用:
git reset filename
git rm --cached filename
然后添加您要忽略的文件。 然后提交并推送到您的存储库。
我试过这个 -
列出我们要忽略的文件
git status .idea/xyz.xml .idea/pqr.iml Output .DS_Store
复制第 1 步的内容并将其附加到.gitignore文件中。
echo " .idea/xyz.xml .idea/pqr.iml Output .DS_Store" >> .gitignore
证实
git status .gitignore
同样,我们可以使用directoryname/*
添加一个目录及其所有要在 Git 状态中忽略的子目录和文件。 我从src
目录执行了这个命令。
您还可以使用 .gitattributes(而不是 .gitignore)来排除整个文件类型。 该文件非常不言自明,但我将内容粘贴在这里以供参考。 注意最后一行(*.class binary):
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.mo binary
*.pdf binary
*.phar binary
*.class binary
我对文件“dump.rdb”有类似的问题。
我尝试以各种方式将此文件添加到 .gitignore 文件中,但只有一种方式有效。
在 .gitignore 文件的末尾添加您的文件名
注意:将文件添加到其他任何地方都不起作用。
例如,参见: https ://gitlab.com/gitlab-org/gitlab-ce/raw/b3ad3f202478dd88a3cfe4461703bc3df1019f90/.gitignore
将以下行添加到 .git/info/exclude:
同学们好
使用.gitignore
时,此网页可能有用且省时。
它会自动为不同的 IDE 和操作系统生成 .gitignore 文件,其中包含您通常不想拉入 Git 存储库的特定文件/文件夹(例如,特定于 IDE 的文件夹和配置文件)。
如果之前将任何文件添加到 Git,则删除该文件并将该文件添加到.gitignore中。
示例:如果无法忽略在添加 spm 依赖项期间生成的package.resolved文件。
我在.gitignore文件中添加了以下几行:
Packages/
Package.pins
Package.resolved
*.xcworkspace
并删除了package.resolved文件。 现在 Git 开始忽略我的package.resolved文件。
如果要忽略已签入的文件,则必须在添加规则以忽略它之前取消跟踪该文件:
git rm --cached FILENAME
现在提交更改并将文件路径添加到.gitignore文件。
我已经尝试过--assume-unchanged
和.gitignore
但都没有奏效。 它们使切换分支变得困难,并且难以合并来自其他分支的更改。 这是我的解决方案:
当我提交时,我从更改列表中手动删除文件
在我拉之前,我存储了更改的文件。 拉后,我做了一个stash pop 。
第 3 步有时会触发合并,并可能导致您需要解决的冲突,这是一件好事。
这使我可以保留不与团队中的其他人共享的本地更改。
您也可以使用例如Sourcetree并在添加到分支并已修改的文件上按 ppm,然后选择“停止跟踪”。 该文件现在将用问号图标指定,当您再次 ppm 访问该文件时,您现在可以选择“忽略”。 这将通过其相对路径将此特定文件添加到gitgnore 。
直接来自 Atlassian: .gitignore
如果您想忽略过去提交的文件,则需要从存储库中删除该文件,然后为其添加.gitignore规则。
将--cached
选项与git rm
一起使用意味着该文件将从您的存储库中删除,但它将作为一个被忽略的文件保留在您的工作目录中。
您的工作目录中应该仍然有该文件,但它无法推送到您的远程存储库,除非您强制它。
您可能遇到的一种情况是.gitignore不会忽略您之前提交的文件。 您应该首先从存储库中删除或移动这些文件,提交您刚刚所做的更改,然后将“*.class”添加到.gitignore 。
要从 GIT 中删除已提交/暂存的文件git rm --cached <file_name>
将以下行添加到文件.gitignore
: /<file_name>
如果要从 Git 中排除所有类文件,请将以下行添加到.gitignore
: *<file_extension>
如果您想忽略某些文件,请按照以下步骤操作
如果您在目录中没有看到 .git 文件夹,请在文件资源管理器视图面板中选中隐藏项目字段。
对于已编译的代码,只需编写:
.class or .o
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.