ChatGPT解决这个技术问题 Extra ChatGPT

Git 忽略和 Maven 目标

任何人都知道是否可以忽略 git 管理的文件结构中特定目录的所有实例。

我希望排除具有多个子模块的 Maven 项目中的所有“目标”文件夹。我知道我可以在顶级 .gitignore 中明确排除它们中的每一个,但我真的希望能够指定像 **/target/* 这样的模式,让它自动忽略子目录中的实例?

这可能吗?

您使用什么配置进行这项工作? /.settings/ 只会忽略 'xxx/.settings/*',而不是 '.settings/*' 或 'xxx/yyy/.settings/*':忽略模式似乎不是递归应用。另见stackoverflow.com/questions/971465/…

A
Andrew Marshall

根目录中的 .gitignore 文件确实适用于所有子目录。我的看起来像这样:

.classpath
.project
.settings/
target/

这是在一个多模块 Maven 项目中。所有子模块都使用 m2eclipse 作为单独的 eclipse 项目导入。我没有更多的 .gitignore 文件。事实上,如果您查看 gitignore man page

从与路径相同的目录或任何父目录中的 .gitignore 文件中读取的模式......

所以这应该适合你。


这比“/target/”更好。它确实排除了位于目录树中的目录。但它不适用于文件(请参阅 stackoverflow.com/questions/971465/…
如果你继续阅读它会说“这些模式与 .gitignore 文件的位置相匹配”。你的回答是错误的...
我使用这种方法并使用“target/”来忽略所有 maven 构建文件夹,但是请注意,您可能会忽略位于路径中包含“target”文件夹的包中的代码。 (在具有以下类的项目中:src/main/java/org/example/game/archery/bow/LongBow.javasrc/main/java/org/example/game/archery/target/Target.java,您不会发现使用这种 .gitignore 配置的 LongBow 没有什么可打的 :-))
u
user1411381

可以在 .gitignore 文件中使用模式。请参阅 gitignore man page。模式 */target/* 应该忽略任何名为 target 的目录及其下的任何内容。或者您可以尝试 */target/** 忽略目标下的所有内容。


谢谢!对于其他人来说,.gitignore 的内容是跳过通常的 maven 和 eclipse 嫌疑人。目标/* /target/ .metadata tar.gz .classpath .project */.settings/
您使用什么配置进行这项工作? /.settings/ 只会忽略 'xxx/.settings/*',而不是 '.settings/*' 或 'xxx/yyy/.settings/*':忽略模式似乎不是递归应用。另见stackoverflow.com/questions/971465/…
对于多模块项目,您可能希望使用 **/target/,但请注意不要在源代码中排除合法的“目标”目录
/target/**\.git\info\exclude 文件中工作。
刚刚尝试在其中一个模块中提交带有“目标”子包的 java 项目。 :(
T
Tomasz Mularczyk

正如 Abhijeet 在评论中已经指出的那样,您可以添加如下行:

/target/**

排除 \.git\info\ 文件夹中的文件。

然后,如果您想删除远程存储库中的那个 target 文件夹,您需要首先从本地存储库中手动删除此文件夹,提交然后推送它。那是因为 git 会首先显示修改后的目标文件夹的内容。


G
Gleidosn

在 gitignore 中添加以下行,来自所有不需要的文件

/target/
*/target/**
**/META-INF/
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

R
Rajeev Rathor

我忽略了 git 中目标文件夹中的所有类。在打开的 .gitignore 文件中添加以下行:

/。班级

或者

*/目标/**

它对我来说非常有效。试试看。


L
Lova Chittumuri

对于 Spring Tool Suite,将以下忽略资源添加到 .gitignore 文件并提交到存储库

*.classpath
*.class
*.prefs
*.jar
*.lst
*.project
*.factorypath
*.original
target/
.settings/
.apt_generated
.sts4-cache
.springBeans