问题标签 [git-subtree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1457 浏览

git - 将 git flow 与 git subtree 一起使用

我刚刚将一个大型 svn repo 迁移到 git 并开始使用 gitflow。它就像一个魅力,但现在我正在考虑将那个大回购分成一些较小的回购。

假设 repo 目录树如下:

我们希望将其拆分为三个存储库,一个具有核心结构(libs 和应用程序目录),另外两个具有应用程序目录。

如果我像这样使用 git subtree 进行拆分,我可以在每个部分中单独使用 git flow 还是必须在全局范围内使用它?

PS:这是我在stackoverflow中的第一个问题,请善待:)

0 投票
1 回答
435 浏览

git - 什么先出现:git subtree 合并策略或 git submodule?

什么是最近的发明——git subtree 合并策略(不是新的 git-subtree 命令)或 git submodule 命令(或者如果有一个单独的与 git subtree 命令与合并策略对称的底层机制)。

Git 发行版中首先包含了什么?

相关 Git ML 帖子链接的奖励积分。

我尝试从 Git 提交历史中挖掘该信息,但在 2007-2008 年的某个地方迷失了这两个功能。

0 投票
3 回答
1322 浏览

git - Git子树导出和重新导入问题

我有一个更大的 git 存储库 (A),它与我的另一个项目 (B) 共享一定数量的代码。为了使维护更容易,我决定使用公共代码 (C) 创建第三个存储库,然后通过git subtree.

我准备好 A 中的所有内容(将公共代码放在文件夹“sub”中)并使用Detach (move) subdirectory 中描述的过程到单独的 Git 存储库中创建 C

现在我只有几个提交的 C,我想把它放回 A,文件夹 sub。我使用了http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html中描述的方法,因为子文件夹的所有提交现在都被复制了。我不太介意这一点,但是现在我不知道如何继续使用这个子目录。

我在要推送到 C 的 A/sub 中进行了其他更改。如git subtree push changes back to subtree project中所述,我使用了

只用子树创建一个分支。这需要一些时间,但成功完成。正在做

给我

但是 agit pull remote-c master说我已经是最新的了。

我该如何解决这种情况?

EDIT1:我试图用一个小测试脚本重现这个问题。执行此脚本:

这导致

0 投票
1 回答
5805 浏览

git - 使现有文件夹成为 git 子树

在我的问题Git subtree export and re-import woes之后,我想问我如何将文件夹转换为子树。

想象一下,我有一个存储库 A,其中我的代码现在应该与另一个项目(可能还有更多)共享,所以我将所有共享代码放在文件夹“sub”中。这个文件夹现在应该被提取(如果可能的话没有历史记录)到裸存储库 C。之后“sub”应该成为 C 的子树,但是不会丢失 A 中的历史记录(非常重要)。我还希望能够在“sub”中进行更改并将它们推回 C。

0 投票
1 回答
159 浏览

git - git子树标签浏览

我有一个项目使用两个单独维护的库。为了避免每次库更改时手动复制文件的混乱,我设法使用来自 github 的这个示例创建了两个子树。

我在这个工作目录的根目录中有我自己的代码。我也有foolib/barlib/作为其他两个回购的子树。假设我想看看我是否可以使用 1.20 版本的傻瓜代替 master,因为我知道一个很好,不会改变。那么也许我想看看1.21是否更好。我的想法是,如果我这样做,我git checkout foolib-1.20会为我放入 1.20 版代码foolib/。那不会发生。相反,整个工作目录被替换为傻瓜 1.20。这不是很有帮助,似乎否定了git subtree.

0 投票
1 回答
9800 浏览

git - Git使用子树或子模块管理外部资源

我读了很多关于 git 子模块应该有多糟糕的文章,但我不确定这是否只是那些认为它有限制的人的呻吟,或者它是否有严重的问题(尤其是关于我的用例)。

我只想像这样在我的回购中包含不同的回购

并且必须有可能轻松更新这些存储库。据我了解,从回购中只包含一个文件并不容易,对吧?(但没关系。)

我应该为此使用子模块吗?
或者它有什么问题吗?还是子树更容易?

0 投票
2 回答
21784 浏览

git - git-subtree:从克隆的 repo 推送更改

我正在使用 git-subtree(来自 Avery Pennarun)。在我当前的 git repo 中,我当然有我所有的项目文件/文件夹和一个名为“lib”的子树。如果我现在使用克隆这个 git存储库,git clone我会得到所有项目文件和子树“lib”(应该是一切)。我现在尝试的是:我在克隆的仓库中更改了子树“lib”中的某些内容,并尝试使用 将更改推送回子树“lib”的远程仓库 git subtree push,但它没有用。问题是什么?我是否必须先使用 git subtree add 将其添加为子树?

提前谢谢

0 投票
1 回答
112 浏览

git - 如何让 master/origin 知道子树

我有多个使用共享文件集的应用程序。

我想使用子树来管理这些文件。通过签出主文件并将共享源添加为子树,我已成功设置了一个本地克隆:

这在本地工作,但我找不到让源知道子树的方法,这样我的同事就不必在每次克隆主存储库时手动添加子树。

我确定我遗漏了一些东西,但从稀缺的子树文档中并不明显。

0 投票
8 回答
15071 浏览

git - 如何在 git-subtree 添加后变基?

我正在尝试学习Git 1.7.11 中添加的新git-subtree命令。添加子树后,我似乎失去了变基的能力。我有一个带有 README 文件的主存储库和一个也有一个 README 文件的库存储库。我将它添加到 lib 目录subtree add

这工作正常,但现在历史看起来像这样:

现在,当我想针对我的 repo 进行 rebaseorigin/master并且它失败了,因为 squash 提交直接应用于其不适用的父提交,因为它应用于 repo 的根目录,而不是我在添加时给它的前缀子树。

如果我查看 squash 提交,其原因就很清楚了。没有关于前缀的信息。它只是压缩在一起的原始 mylib 提交。只有下一次合并提交对此一无所知,但 rebase 不会在这里考虑到它。

是否有任何解决方法(除了从不基于子树提交)?

0 投票
1 回答
6643 浏览

git - 如何使用 git-subtree 进行特定提交?

我正在使用 Avery Pennarun 的 git-subtree,它是 git 的扩展。

如何使用 git subtree 从子仓库中挑选提交到我的主仓库中?另外,在我已经对该前缀执行 git subtree pull 之后,如何转到子仓库历史记录中的特定提交?

我主要在壁球提交模式下运行它。