git repo 下有几十个文件夹;但我只与其中之一合作。所以,我不想知道其他文件夹下的项目发生了什么。
我从远程签出了一个启用了稀疏签出的分支,现在我本地只有一个文件夹;但使用 gitk 时我仍然可以看到完整的提交历史记录。我在交互式变基期间进行一些更改时也看到了它。
我的问题是:是否可以以某种方式清理(过滤)提交历史记录,以便我在变基时只看到与特定文件夹相关的历史记录?想法是以同样的方式使用存储库,就好像它只包含一个文件夹一样。
Thanks
对于读取操作,通常可以通过传递路径选项来获得所需的内容。
git log -- ./the_one_folder
or
gitk -- ./the_one_folder
但对于写入操作(例如变基),没有通用方法可以执行您所描述的操作。如果您将所有内容都提交给一个大历史记录,那么该历史记录本质上就是每次提交的一部分。所以你有一个改变的提交the_one_folder
,即使它的父级没有更改父级是提交的一部分的同一文件夹中的任何内容,并且您不能“就好像它不存在一样”进行变基。
您可以执行变基操作,删除您不关心的所有提交,但随后这些提交将从您要变基的分支中删除。因此,基本上,您必须为您的目录拥有一组分支,并为下一个人处理的下一个目录拥有一组分支,如此循环往复。
一旦你这样做了,你就会开始觉得你应该将每个项目放在自己的存储库中。这是事实。在 git 中,你不应该将一堆项目塞进同一个存储库中。如果您有时确实需要将跨项目的变更关联起来,有一些方法可以解决这个问题;但听起来至少在大多数情况下它们是独立的,所以如果你不想要一堆混乱的历史记录,你应该考虑转移到单独的存储库。
有一种方法可以创建“只是您的项目”的历史记录 - 意识到这只有在您确实迁移到单独的存储库(或至少是单独的命名空间引用集)时才真正有用,但这只是一种更复杂的方法同样的事情,为什么?)因为一旦完成,对单独历史记录的更改将不再反映在合并历史记录中。
git filter-branch --subdirectory-filter the_one_folder --prune-empty -- --all
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)