Git:如何从工作树中删除目录但将其保留在索引中?

时间:2018-09-04 09:46:39

标签: git

在特定情况下,我需要处理由2个git repo组成的特定程序包,但仍然能够在每个repo上提交/推送。

这是一个简化的示例:

  • repoA 和目录 dirA dirB dirB / dir2
  • repoB 和目录 dirC dirB / dir1
  • 我需要使用一个包含以下内容的软件包: dirA dirB dirB / dir1 dirC < / li>

这是我所做的:

  1. 我首先克隆了两个存储库。
  2. 然后我在repoA克隆目录中添加了一个.git / info / exclude文件,其中包含:dirB,dirC
  3. 然后,我在repoA克隆dir 2中创建了指向repoB dirB / dir1和dirC的符号链接。
  4. 最后,我从repoA克隆dir dirB / dir2中删除了。

这是我从repoA克隆目录中得到的内容:

  • dirA
  • dirB / dir1(到repoB的符号链接)
  • dirC(到repoB的符号链接)
  • git status在dirB / dir2中提供已删除的文件

这对于repoB很不错,因为我可以毫无问题地提交并推送更改。但是对于repoA,我当然不想提交/推送dirB / dir2删除... git中是否有任何东西可以将dir保留在索引中,但不将其显示在工作树中?

目前,我看到了两种可能对我们不太好的解决方案:

  • 创建第三个目录,其中包含指向repoA和repoB中所需文件的符号链接...但这会导致很多额外的工作,因为repoA实际上包含很多目录!
  • 从没有dirB / dir2的develop分支在repoA中创建一个专用分支。为了简化将来的合并,请合并新分支以进行开发,而无需删除dirB / dir2。不太好,因为它会迫使我们需要在每个repoA分支上创建一个专用的包分支。

任何帮助都会非常感谢O:)

0 个答案:

没有答案