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

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

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

当我尝试使用脚本将子分支重新建立到开发基础时,发生冲突,指出子模块已在开发分支上删除。这是有道理的,因为该模块在开发中不存在。我需要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存储库中删除此子模块;我只是想忽略或跳过重新设置期间对其所做的任何更改。

xuzaizhan 回答:如何将Maven子模块添加到.gitignore

.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模块,这意味着不必在父存储库中对其进行版本控制。
本文链接:https://www.f2er.com/3164083.html

大家都在问