我在git中有一个项目,我想分支一些选择文件(所以主要的git repo应该包含某个目录中的所有文件,但是分支应该只有一个选择10)。
答案 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)
您可以剪切分支,然后删除那里不需要的文件,作为该分支上的第一次提交。那会有用吗?