我有一个旧的私有存储库,其中包含要放入GitHub的文件,但是我只想包含某些文件,或者仅包含具有某些文件扩展名的文件,以及它们的提交历史记录。
但是我不想在提交历史记录中包括任何排除的文件。
我想最好提供一个我要复制的此类文件列表的文件。
答案 0 :(得分:1)
这是您可能的处理方式。
git init
,将其初始化为git存储库。git clone -n [path to your old private git repo]
。这将克隆但不检出任何文件。您将只剩下旧私人仓库的.git /文件夹。git checkout [file you want]
。您可能可以在此处使用通配符(您提到了文件扩展名)。答案 1 :(得分:1)
文件没有提交历史记录。提交 are 历史记录,并且提交具有文件。
您要么拥有那些提交(以及那些文件加上所有 other 文件),要么您没有那些提交(因此也没有那些文件)。
如果您想要一个历史记录,其中仅存在 个文件,而没有任何其他文件属于保存这些文件的提交,则必须构造一个新的历史记录其中仅存在那些文件。
具体如何操作取决于您自己。您可以进行一次提交(没有其他历史记录-新的历史记录只是一次提交,并按原样保留文件)。 Mike Faber's answer或多或少会带来什么。或者,您可以使用git filter-branch
或The BFG编辑存储库的克隆,产生一系列新的替换提交,这些提交包含要保留的文件,但要避免丢弃这些文件。然后,您将拥有新的伪造历史记录,其中仅提交了那些文件。
请注意,所有这些操作均对原始存储库及其提交没有任何影响:您正在使用一个新的历史记录来构成一个全新的存储库,在新的历史记录中,只有那些文件才出现在提交中。您如何获得此结果并不重要。根据定义,这些文件而不是其他文件出现的历史记录是新的历史记录,因此属于新的不同的存储库。
(通常,仅使用文件的最新副本就足够了,在这种情况下,只需使用一种使一次提交的存储库保存文件的最新版本的方法即可。通常比编写奇特的过滤器-分支过滤器要容易我实际上没有使用过BFG;也许这也使这项工作变得容易。)