了解如何将一个 GIT 存储库插入另一个存储库
Understanding how to insert one GIT repo into another
我希望有人能够解释(尽可能使用简单明了的英语!)并在合并 GIT 存储库时为我指明正确的方向。我知道这是一个经常被问到的问题,但我完全迷失了这个问题。
我有一个 GIT 存储库(既有本地的也有远程的——远程版本在 Bitbucket 上)让我们称之为 Master,它使用四个常见的 Gitflow 分支。现在我有另外两个回购协议,一个处理普通文件,我正在处理(称为回购协议 A),另一个正在由同事处理和更新(回购协议 B)。回购 A 托管在 Bitbucket 上,而 B 托管在 Github.
这三个 Repo 的文件结构都略有不同。假设原始文件具有以下文件夹结构:
\app\controller
\app\assets
\app\models
\app\views
现在我需要获取 Repo B 的内容并将其添加到 \app\models 中的现有内容中,这样 \app\models 中的现有文件不会被替换,并且在那个 Repo B 仍然单独存在,以后对它的任何更新都可以轻松地拉入我的 Master Repo。 Repo B 也有 controller 和 views 文件夹,但这些都是空的。
第二个 repo (A) 需要拉入 \app\views\repoA 主文件夹中当前不存在的文件夹中。同样,Repo A 仍然需要单独存在,因为它是独立工作的,所以我需要将更改拉下来。目前 Repo A 中的文件夹结构很简单 \htmlfiles 其中包含需要在 \app\views\repoA
中结束的文件
在这两种情况下,为了保持审计试验和文档的正确性,理想情况下我需要尽可能完整地保持完整的评论和提交历史记录。对于这两个 Repos,我可能需要在 Master Repo 中进行修改,并将它们也推送回远程原始 Repos。
现在我收集到有关于分叉和子树的选项,但我完全不知道它们是如何工作的,并且很快就到了我不想到达的地步拉下 ZIP 文件并手动更新内容!
谁能帮我指明正确的方向,或者用简单的语言解释做某事的最佳方法?我假设可以用 GIT 完成所有这些,而且我要求的不多!
我想了解不同的 GIT 选项如何工作以及它们的作用,以便我将来能够充分使用它!
如有任何帮助,我们将不胜感激。
合并差异很大的代码库可能需要大量工作。
因为你的两个 repo 是独立构建的,在 structure/layout 上有所不同,而且你保留 repo B 的历史不一定是必要的,我建议如下:
- 让 Repo A 进入明智状态。
- 从存储库 A 创建功能分支
- 将 Repo B 中的代码手动合并到功能分支的代码库中,一次提交一个更改
- 合并后,构建并测试一切是否符合您的喜好
- 检查你的主分支
- Merge/squash 你的功能分支到 master
下一次:我建议让所有团队成员自己工作 branches/forks,但 RI/FI 定期与主仓库一起工作 - 至少每 2-3 天一次,如果代码更改则更频繁很快。以经常合并的小变化为目标,而不是跨越多天(或更长时间)的大的不同变化。
我希望有人能够解释(尽可能使用简单明了的英语!)并在合并 GIT 存储库时为我指明正确的方向。我知道这是一个经常被问到的问题,但我完全迷失了这个问题。
我有一个 GIT 存储库(既有本地的也有远程的——远程版本在 Bitbucket 上)让我们称之为 Master,它使用四个常见的 Gitflow 分支。现在我有另外两个回购协议,一个处理普通文件,我正在处理(称为回购协议 A),另一个正在由同事处理和更新(回购协议 B)。回购 A 托管在 Bitbucket 上,而 B 托管在 Github.
这三个 Repo 的文件结构都略有不同。假设原始文件具有以下文件夹结构:
\app\controller
\app\assets
\app\models
\app\views
现在我需要获取 Repo B 的内容并将其添加到 \app\models 中的现有内容中,这样 \app\models 中的现有文件不会被替换,并且在那个 Repo B 仍然单独存在,以后对它的任何更新都可以轻松地拉入我的 Master Repo。 Repo B 也有 controller 和 views 文件夹,但这些都是空的。
第二个 repo (A) 需要拉入 \app\views\repoA 主文件夹中当前不存在的文件夹中。同样,Repo A 仍然需要单独存在,因为它是独立工作的,所以我需要将更改拉下来。目前 Repo A 中的文件夹结构很简单 \htmlfiles 其中包含需要在 \app\views\repoA
中结束的文件在这两种情况下,为了保持审计试验和文档的正确性,理想情况下我需要尽可能完整地保持完整的评论和提交历史记录。对于这两个 Repos,我可能需要在 Master Repo 中进行修改,并将它们也推送回远程原始 Repos。
现在我收集到有关于分叉和子树的选项,但我完全不知道它们是如何工作的,并且很快就到了我不想到达的地步拉下 ZIP 文件并手动更新内容!
谁能帮我指明正确的方向,或者用简单的语言解释做某事的最佳方法?我假设可以用 GIT 完成所有这些,而且我要求的不多!
我想了解不同的 GIT 选项如何工作以及它们的作用,以便我将来能够充分使用它!
如有任何帮助,我们将不胜感激。
合并差异很大的代码库可能需要大量工作。
因为你的两个 repo 是独立构建的,在 structure/layout 上有所不同,而且你保留 repo B 的历史不一定是必要的,我建议如下:
- 让 Repo A 进入明智状态。
- 从存储库 A 创建功能分支
- 将 Repo B 中的代码手动合并到功能分支的代码库中,一次提交一个更改
- 合并后,构建并测试一切是否符合您的喜好
- 检查你的主分支
- Merge/squash 你的功能分支到 master
下一次:我建议让所有团队成员自己工作 branches/forks,但 RI/FI 定期与主仓库一起工作 - 至少每 2-3 天一次,如果代码更改则更频繁很快。以经常合并的小变化为目标,而不是跨越多天(或更长时间)的大的不同变化。