如何将Maven子模块添加到.gitignore

问题描述 投票:1回答:1

我正在尝试设置一个脚本,以自动将更改从开发分支更改为包含Maven子模块的分支。

此项目的设置方式是,开发分支包含父模块。所有更改都将转到该模块,因此将合并到开发分支。为了使子模块获得这些优势,必须将其重新开发。子模块本身绝不能在重新配置中被修改。

[当我尝试使用脚本将子分支重新建立到开发基础时,发生冲突,指出子模块已在开发分支上删除。这是有道理的,因为该模块在开发中不存在。我需要rebase来忽略与子模块有关的任何事情,因此我在项目的.gitignore中添加了这一行:

*_module/

每个子模块的命名约定在末尾都有'_module',因此使用*,则每个分支都应该能够忽略所讨论的子模块,而不管其名称如何。但是,这没有用。我还没有找到有关此用例的任何信息,并且想知道是否有人对如何进行使用有任何建议。

这是开发分支的常规文件结构:

project+
       |
       +-src+ #parent module
       |    |
       |    +-main #where changes to the code occure
       |
       +.gitattributes
       |
       +.gitignore
       |
       +pom.xml

这是带有子模块的分支的结构:

project+
       |
       +-test1_module+ #child module in maven.  Need to ignore this in .gitignore, or some equivalent
       |             |
       |             +-src+ 
       |                  |
       |                  +-assembly
       |                  |
       |                  +-main
       |
       +-src+ #parent module
       |    |
       |    +-assembly
       |    |
       |    +-main 
       |
       +.gitattributes
       |
       +.gitignore
       |
       +pom.xml

编辑:需要明确的是,我不想从git存储库中删除此子模块;我只是想忽略或跳过重新设置期间对其所做的任何更改。

git maven parent-child gitignore git-bash
1个回答
0
投票

[.gitignore只能忽略未跟踪的内容。

所以每个分支都需要:

git rm -r --cached test*_module
echo "*_module/">>.gitignore

然后添加并提交。这样,重新设置将不会产生任何冲突。

但是:这不是OP所追求的,这意味着.gitignore仍然不是解决方案。

在这种情况下,rebase脚本应该在发生冲突时(对于子模块),

  • [accept changes from "theirs"(通过git checkout -- theirs -- test1Module)。
  • 添加并恢复变基(git add .; git rebase --continue)假定可以通过maven依赖关系自动获取maven模块,这意味着不必在父存储库中对其进行版本控制。
© www.soinside.com 2019 - 2024. All rights reserved.