今天整理电脑资料的时候发现有两个本地仓库需要整合到一起,所以记录一下如何处理这种情况。
Git 仓库因为有历史记录,合并时候最好不要直接直接复制文件,最好能够保留历史记录让两个仓库合并到一起。
其实这个步骤和git tempale / upstream 同步方法基本上是一样的,就是先添加一个远程的地址然后把它拉取下来,以此创建一个分支然后处理冲突并合并。
只是我们要合并的这两个仓库不能说是没什么关系,只能说是毫不相关。因此基本上不需要解决冲突。
合并两个 Git 本地仓库
首先这里有两个仓库
学金采访
宣传邮件
我们要把宣传邮件这个仓库合并到学金采访里
首先进入 学金采访
仓库,可以看到 remote 只有一个 origin。
学金采访 on master
❯ git remote -v
origin git@github.com:MorFans/China-scholarship-interview-answer.git (fetch)
origin git@github.com:MorFans/China-scholarship-interview-answer.git (push)
要把 宣传邮件合并到 学金采访
仓库中,我们先把 宣传邮件
仓库设置为它的remote,这里取名为 merge_branch:
这里
..\宣传邮件\
是宣传邮件
仓库的路径,如果你是远程,把这里改成网址即可(确保你有访问权)
学金采访 on master
❯ git remote add merge_branch ..\宣传邮件\
添加完成后,可以看到已经多出来了 merge_branch:
学金采访 on master
❯ git remote -v
merge_branch ..\奖学金\ (fetch)
merge_branch ..\奖学金\ (push)
origin git@github.com:MorFans/China-scholarship-interview-answer.git (fetch)
origin git@github.com:MorFans/China-scholarship-interview-answer.git (push)
然后我们把 宣传邮件
仓库给拉取下来:
fetch 之后会就有了这个
merge_branch/master
分支,这个就是我们的宣传邮件
仓库的
学金采访 on master
❯ git branch -a
*master
remotes/origin/master
学金采访 on master
❯ git fetch merge_branch
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), 2.46 KiB | 148.00 KiB/s, done.
From ..\宣传邮件\
* [new branch] master -> merge_branch/master
然后以此创建一个分支 merge
:
学金采访 on master
❯ git checkout -b merge merge_branch/master
Switched to a new branch 'merge'
branch 'merge' set up to track 'merge_branch/master'.
然后就可以合并了,先切换到 主分支(master),然后把 merge 分支合并到 master 分支
使用 git merge 命令,配上允许不相关历史参数来合并:
学金采访 on merge:master
❯ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
学金采访 on master
❯ git merge --allow-unrelated-histories merge
Merge made by the 'ort' strategy.
...邮件.txt" | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 "邮件.txt"
至此就合并完成了 🎉
发表回复