2

我正在努力理解使用 Git 子树策略的意义。我的意图是将一些不同的回购组合到一个伞式回购下的一个玩具回购的小家族中。我正在使用此处详述的子树策略:http: //help.github.com/subtree-merge

我正在拉扯我的头发,试图说服 Git 我想从这些子树之一而不是从根创建一个分支。当我 cd 进入子树,创建分支,然后 cd 回到根目录时,从根目录运行 git branch 清楚地表明分支是在根目录创建的。叹。

我喜欢 git/github,但让这个看似常规的任务正常工作令人抓狂。

有人可以启发我吗?

4

2 回答 2

5

git 仅在“整个”树级别工作,因此无论您在工作树操作中的任何位置,如branch, checkout <branch>commit都在根级别工作。

子树合并策略是一种合并策略,当您有一个存储库时,其中一个分支已将文件的子树移动到存储库中的不同位置,而另一侧已对原始位置中的这些文件进行了更改,则该策略可提供帮助。它旨在帮助合并这两个操作,以使正常的合并策略会产生更多冲突或将文件留在错误的位置。

子树合并策略与 git 的“整棵树”操作的工作方式无关,所以如果你想创建一个只是存储库的一个子树的分支,你需要分支然后在删除其他子树的情况下进行新的提交并且感兴趣的树向上移动到根级别。

不过,鉴于您的使用模式,我建议您长期阅读子模块。它可能会提供适合您想要实现的功能。

于 2009-10-11T19:25:40.000 回答
3

我推荐 apenwarr 的 git-subtree:http: //github.com/apenwarr/git-subtree。希望它在某个时候被添加到 git 本身。

于 2010-04-20T16:31:53.410 回答