这是一个概念性问题,而不是“我如何?”问题
我正在帮助将一个非常大的SVN存储库迁移到团队的Git存储库。 我简化了一点,但让我们假设它们当前的repo结构是这样的:
--trunk
|-Proj1
|-Proj2
|-Proj3
--branch
|-Proj1
|- branch1
等
他们(回购的所有者团队)坚持认为,它应该转到一个Git存储库,而不是每个项目。让我们假设我无法说服他们。 (我怀疑他们会在他们开始使用Git并且明白这是不切实际的时候会到来。)
SVN中的每个ProjN都是独立于其他人的分支。
关于Git的问题,当我分支时,我可以分支一个repo的子文件夹(只是Proj1)而不是整个回购吗?我的直觉是你总是应该把git分到顶层。我错了吗?
答案 0 :(得分:7)
您无法分支子文件夹。分支机构始终适用于整个工作区。
我想git submodules正是你在找什么。你可以把它们想象成“嵌套的git存储库”。
答案 1 :(得分:0)
好吧,您可以分支一个子文件夹。你是否应该是另外一个故事。
对于将子文件夹拆分为自己的 repo 的用例:
https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/
git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAME
例如:
git checkout master
ls foosub/
git checkout -b foobranch
git filter-branch --prune-empty --subdirectory-filter foosub/ foobranch
我不知道这是问题中所要解决的问题,但是由于我使用的搜索字词首先将我引到了这里,所以我想我也可以给出一个答案,即使用与我使用相似的搜索字词的人可能会在寻找。
我认为您甚至可以做一些花哨的事情来跟踪它……但这不是我的用例,它也可能不属于您(读者)。
奖金:合并到一个新的新仓库中
mkdir ./new-project
pushd ./new-project
git init
git pull ../original-project foobranch
#git remote add origin <new-project-url>
#git push