子目录到独立存储库中,然后合并回主存储库
Sub-directory into independent repository and later merge back into main repository
我想从现有 git 存储库的子目录中创建独立的存储库,然后能够将其合并回主存储库。基本上我想为特定工作分离一个整体 git 存储库的一个子目录,并能够将提交合并回整体存储库。
我尝试的是拆分一个子树:
% git subtree split -P project_a/directory_a -b directory_a_branch
然后我可以将 directory_a_branch
克隆到单独的存储库中并开始处理它:
% git clone -b directory_a_branch --single-branch file:///path/to/main_repo
稍后我可以将更改推送回主存储库(在 directory_a_branch
下)——现在一切正常,按部就班。
问题始于我的合并策略 directory_a_branch
,但失败了,因为我显然无法完全理解我在做什么。
我从 Pro Git 书中阅读了 "Subtree Merging":https://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging 并尝试了:
% git read-tree --prefix=project_a/directory_a -u directory_a_branch
error: Entry 'project_a/directory_a/README' overlaps with 'project_a/directory_a/README'. Cannot bind.
这里讨论了类似的问题:git: merging a subtree from one branch to another,但对我来说没有足够的答案。
创建子树分支不是我的本意,这个问题可能会通过其他方式解决。也许有子模块?
我的意图是一个存储库就像另一个存储库的子存储库,将工作合并回主存储库会尽可能简单,因为两个存储库共享相同的文件。
是否可以用 Git 解决这个任务而不用丑陋的技巧?
此 post 中描述了解决此问题(可能会填充特定用例)的一种方法:https://lostechies.com/johnteague/2014/04/04/using-git-subtrees-to-split-a-repository/
基本上你从 master (& commit) 中删除 project_a/directory_a
,然后像这样从(远程)分支中删除 subtree add --prefix
:
git subtree add --prefix=project_a/directory_a remote branch
但这不是 100%,因为有更好的方法来解决这个问题。
解决这个问题的一行代码:
git merge -s subtree directory_a_branch master
我想从现有 git 存储库的子目录中创建独立的存储库,然后能够将其合并回主存储库。基本上我想为特定工作分离一个整体 git 存储库的一个子目录,并能够将提交合并回整体存储库。
我尝试的是拆分一个子树:
% git subtree split -P project_a/directory_a -b directory_a_branch
然后我可以将 directory_a_branch
克隆到单独的存储库中并开始处理它:
% git clone -b directory_a_branch --single-branch file:///path/to/main_repo
稍后我可以将更改推送回主存储库(在 directory_a_branch
下)——现在一切正常,按部就班。
问题始于我的合并策略 directory_a_branch
,但失败了,因为我显然无法完全理解我在做什么。
我从 Pro Git 书中阅读了 "Subtree Merging":https://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging 并尝试了:
% git read-tree --prefix=project_a/directory_a -u directory_a_branch
error: Entry 'project_a/directory_a/README' overlaps with 'project_a/directory_a/README'. Cannot bind.
这里讨论了类似的问题:git: merging a subtree from one branch to another,但对我来说没有足够的答案。
创建子树分支不是我的本意,这个问题可能会通过其他方式解决。也许有子模块?
我的意图是一个存储库就像另一个存储库的子存储库,将工作合并回主存储库会尽可能简单,因为两个存储库共享相同的文件。
是否可以用 Git 解决这个任务而不用丑陋的技巧?
此 post 中描述了解决此问题(可能会填充特定用例)的一种方法:https://lostechies.com/johnteague/2014/04/04/using-git-subtrees-to-split-a-repository/
基本上你从 master (& commit) 中删除 project_a/directory_a
,然后像这样从(远程)分支中删除 subtree add --prefix
:
git subtree add --prefix=project_a/directory_a remote branch
但这不是 100%,因为有更好的方法来解决这个问题。
解决这个问题的一行代码:
git merge -s subtree directory_a_branch master