合并具有不同基础目录的git存储库

时间:2015-06-16 08:11:00

标签: git git-merge

我有一个项目是从tar球创建并置于单独的版本控制之下(当时,上游没有使用git)。现在,上游也已迁移到git,我想将自定义存储库重新连接到上游。

我认为可以将它添加为远程和合并分支,如图所示。

问题是自定义存储库(在这里松散地称为fork)具有不同的基础目录。它包含一个父文件夹,并将上游文件结构保存在/src

如何合并这些存储库以便可以通过git跟踪上游,而不会丢失forks提交历史记录?

folder structure and diagram showing desired result

1 个答案:

答案 0 :(得分:0)

在您的自定义回购中:

# Adapt structure to match upstream's structure
#
mkdir src
git mv repo_content.txt src
git commit -m 'adapt structure to upstream'

# Add remote to upstream repo
#
git remote add upstream git@upstream.com/repo
git fetch

# Do the merging,...
# (only master branch is considered here)
#
# Prepare to do some conflict solving, as merging without a
# common history may be a bit more "rough" when repo's
# diverted significantly.
#
git merge upstream/master