IDE是IDEA 2021.2.1

看了网上的方法,有很多种,有安装插件的,有命令行的,还有直接在IDEA的设置里边设置忽略文件的,这样会导致目录中也看不到这些文件,还有一些看不明白的,这里记录一下我看到的最简单的。

分两种情况,一种是情况是最常见的,项目是全新的,配置好Git和远程仓库后从来没有commit、push等之类的,这种是比较简单的;第二种情况是项目以前执行过commit、push等操作,但由于各种原因(更换远程仓库、远程仓库出现了某些问题、忘记配置.gitignore文件...)需要半路添加.gitignore后重新commit、push的,由于很多文件在使用.gitignore以前被跟踪过,所以点击commit会发现.gitignore文件不起作用。


首先说第一种最简单的情况。

在IDEA中配置好Git和远程仓库后,直接在项目的根目录下创建名为“.gitignore”的文件:

然后就OK了,执行commit就会发现忽略了.gitignore中配置的所有忽略文件和文件夹。至于.gitignore的内容,我在文章结尾附上常用的.gitignore规则。


第二种情况也不是很麻烦,就多执行一次命令。

因为之前某些文件处于被追踪状态,需要清除这些文件的状态,也就是清除缓存,直接在底部打开Terminal,执行以下命令:

git rm -r -f --cached .

清除Git的所有缓存,然后再commit就会发现.gitignore文件起作用了。

上边的命令原本是没有“-f”的,是我后来加上的,不加“-f”如果没报错就没关系,但有时候会提示有些文件无法清除缓存,这时候需要强制(force)清除缓存,“-f”就是这个作用。


2021年12月15日22:16:02修改,这里多说一点,一些常用的规则:

由于.gitignore是放在项目根目录的,所以有如下情况:

target/        忽略所有的target文件夹,不管是根目录下的还是任何子文件夹下的

/target/        只忽略根目录下的target文件夹

*.class        忽略所有class文件

还有“!”的使用规则,用于保留某些文件(夹)。

根目录下有个lib文件夹,有一些jar包,当不想忽略该文件夹时,写法如下:

!lib/*        不忽略lib文件夹,注意一定要有“*”号,某则不起作用

另外还有一个我自己发现的规则,.gitignore文件的规则是自上而下依次生效的,比如我设置了“*.jar”,同时想保留lib文件夹下的jar包,故而添加了“!lib/*”,但是,“!lib/*”一定要写在“*.jar”后边才能生效,否则不生效。原理也很简单,先是保留了lib文件夹,但后边又忽略了所有的jar包,所以后一条规则把前边的规则覆盖了,但是如果先忽略所有的jar包,再保留lib文件夹,这样规则“!lib/*”就不会被“*.jar”覆盖。很容易理解。


最后附上常用的.gitignore规则:

(注意:这个配置规则并不是万金油,比如不想忽略掉zip文件,需要灵活地随时修改)

# ignore these folders
target/
.idea/
.settings/
.vscode/
bin/
out/

# ignore these files
.classpath
.project
.settings
.idea

# filter databfile、sln file
*.mdb
*.ldb
*.sln

# class file
*.com
*.class
*.dll
*.exe
*.o
*.so

# compression file
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.via
*.tmp
*.err
*.log
*.iml

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
.factorypath
.mvn/
mvnw.cmd
mvnw

# Files or folders need to be retained
# ...
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐