如何使用历史将 GIT 存储库导入另一个存储库?

can*_*nni 4 git

我想以一种类似于 github 处理项目页面的方式将一个存储库嵌入到另一个存储库中。

基本思想是创建孤立分支(没有父母):

git clone myproject myproject_folder
cd myproject_folder
git co --orphan project2
git rm -rf . # Remove everything from current index
Run Code Online (Sandbox Code Playgroud)

要制作 github 项目页面,您只需命名孤立分支gh-pages并开始提交。现在我想在这种状态下包含另一个带有历史记录的 git 跟踪项目。

预期的结果是:

git clone mymultipleprojects folder
cd folder
git co master  # Master project
git co second  # Completely different, or just related project
Run Code Online (Sandbox Code Playgroud)

我知道我可以复制其他项目文件并提交它,但是我会丢失历史记录,我可以以某种方式保留历史记录吗?

Ser*_* K. 5

您可以添加另一个存储库作为附加源:

git remote add branch-to-merge URL
Run Code Online (Sandbox Code Playgroud)

并将其拉入您的master分支:

git pull branch-to-merge master
Run Code Online (Sandbox Code Playgroud)

或者,在新版本的 GIT 中,可能会运行先前的命令(从您想要将更改拉入的分支),如下所示:

git merge branch-to-merge --allow-unrelated-histories
Run Code Online (Sandbox Code Playgroud)