繁体   English   中英

当子存储库忽略所有内容时,如何不忽略父存储库中的所有内容?

[英]How to not ignore everything in the parent repo when the child repo ignores everything?

我有一个回购协议,它会忽略除了几个文件以外的所有内容, .gitignore看起来像这样:

# first ignore everything
*

# then whitelist what's needed
!*/
!.gitignore
!wordpress/wp-content/plugins/check-last-login/*
!wordpress/wp-content/plugins/wp-issuetracker/*
!mediawiki/extensions/single-signon/*

该存储库是子存储库。 它在另一个存储库(父存储库)中。 子存储库会忽略一切,除了几件事就好了,但是父存储库也在做同样的事情,但是我不希望这样做。

看起来父级回购遵循子级回购的.gitignore文件的忽略规则。 我试着.gitignoring子仓库的.gitignore文件,但是在使父目录跟踪所有文件上没有用。

如何使父项不忽略子项忽略的任何文件?

好的,我可以通过在已经跟踪了内容的目录中执行git init来使git做到这一点,而smoketests可以正常工作。 我当然没想到这一点。 git显然将现有的树(回购对象)跟随到子模块中:

   # in a throwaway clone of an existing project
   git init src
   cd src
   mkdir -p .git/info
   echo "*.junk" >.git/info/exclude
   touch foo.junk; git add .; git commit -m-
   git ls-files -s
   cd ..
   git add src
   git ls-files -s src

而且我有类似的历史。 这实际上至少有意义。 它通常根本不关心未跟踪的文件,并且git add必须忽略根树中的.git git应该出于什么具体原因拒绝这样做? 我想不出一个副手。

我会婉转担心有人也许会相当随意地决定这种行为是一个错误,使混帐开始检查.git S ON一路走低,但关于它的思考,我认为硬编码ignore- .git -甚至,在子树,而不是仅根源可能甚至是故意的。 如果您开始与其他存储库进行协作而不仅仅是发布,则可能会使您发生一些手轮同步,但是乍一看编写脚本来做到这一点似乎很简单,并且您显然从设置中获得了一些价值。 <耸肩>。

如您所知,repo-local排除在.git/info/exclude

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM