如何同步 git 存储库的子目录?

How to sync a subdirectory of a git repo?

我只想 中拉取并推送到 git 存储库的一个子目录。这是我想要实现的示例:

比方说,我有一个存储库,包含两个文件夹 AB(如果重要的话,它们是顶级文件夹)。我只想工作并将更改推送到 B,而其他人正在处理 A,甚至可能也在处理 B。因为我想提交我的更改,所以我不能将 A 放在 .gitignore 文件中,也不能使用 git rm -rf --cached A,因为其他人需要 A,但是,我知道,我永远不会碰它包含的任何文件,我根本不想存储它不需要的文件。我也不能使用 submodules,因为我不想更改原始存储库,也不想维护辅助存储库。

所以我的问题是:这是否可能;如果可以,如何实现?

您无法从存储库中的特定文件夹中提取或推送。你在树枝上拉或推。

您是否考虑过在 B 上创建一个分支并切换到它,这样您就不会污染您的团队在 A 上所做的工作?

如果您想将您的团队在主分支上所做的工作检索到您自己的分支,您甚至可以对您的分支进行变基。

可以将 A 添加到 .git/info/exclude 文件中。该文件与 .gitignore 一样工作,但不会离开本地计算机,因此不会影响您的同事。

另一种方法是拆分您的存储库,然后使用 subtree instead of submodules to keep track of the changes in the subdirectory. Subtrees save 一个来避免子模块造成的一些不便,但保持同步仍然需要更多工作。