有没有办法只分支特定的文件git? (又名孤儿分店)

时间:2016-03-01 07:54:03

标签: git branch git-branch

我在git中有一个项目,我想分支一些选择文件(所以主要的git repo应该包含某个目录中的所有文件,但是分支应该只有一个选择10)。

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

启动 orphan 分支并仅结帐所需文件

# create orphan branch = branch without any history
git checkout --orphan <branch name>

# now checkout the desired files from the given branch/commit
git checkout <commit> path/to/file
  

<强> --orphan

     

创建一个名为<new_branch>的新孤立分支,从<start_point>开始并切换到它。

     

在这个新分支上进行的第一次提交将没有父级,它将成为与所有其他分支和提交完全断开的新历史记录的根。

     

调整索引和工作树,就好像之前已运行git checkout <start_point>一样。

     

这样,您就可以通过轻松运行new history来启动 <start_point> ,从而记录一组类似于git commit -a的路径做根提交。

     

当您希望从提交中发布树而不公开其完整历史记录时,此功能非常有用。您可能希望这样做以发布项目的开源分支,该分支的当前树是&#34; clean&#34;,但其完整历史记录包含专有或其他受阻的代码。

     

如果要启动记录一组与<start_point>完全不同的路径的断开连接的历史记录,则应在运行{后创建孤立分支后立即清除索引和工作树。 {1}},来自工作树的顶层。

     

之后,您将准备好准备新文件,重新填充工作树,从其他地方复制它们,提取tarball等。

答案 1 :(得分:0)

您可以创建pre-commit挂钩,这使得无法在非特定分支上提交这些文件。 Git hooks可以写在你喜欢的任何语言中,例如python或bash。后者可以很容易地结合其他git命令以及python的功能。

答案 2 :(得分:0)

您可以剪切分支,然后删除那里不需要的文件,作为该分支上的第一次提交。那会有用吗?