轉自:https://github.com/deercoder/0-tech-notes/blob/master/Git/git_merge_local_repos.md html
需求:有兩個本地的版本庫,都是基於一個遠程的版本庫作開發,如今想將一個版本庫的修改合併到另一個版本庫上去,可是不適用服務器端(安全問題)。 git
問題:如何操做本地的兩個版本倉庫? github
整體思路:將本地的一個版本庫做爲遠程版本庫,合併到另一個版本庫上。 安全
前期準備: 服務器
具體操做以下: fetch
mkdir repo1 cd repo1 git init echo "repo1.txt" > repo1.txt git add repo1.txt git commit -m "init repo1" mkdir repo2 cd repo2 git init echo "repo2.txt" > repo2.txt git add repo2.txt git ci -m "init repo2"
建庫完成後,目錄以下: spa
repo1/ repo1/repo1.txt repo1/.git repo2/ repo2/repo2.txt repo2/.git
在一個版本庫中,將本地的另一個版本庫做爲遠程倉庫。好比,這裏我在repo2倉庫下面,將repo1做爲遠程倉庫。 日誌
# 一、將repo1做爲遠程倉庫,添加到repo2中,設置別名爲other [jot@myhost repo2]$ git remote add other ../repo1/
在該版本庫下面,拉取另一個版本庫的數據到代碼倉庫中。好比,這裏在repo2倉庫下面,拉取遠程的代碼倉庫repo1的數據。 code
# 二、從repo1倉庫中抓取數據到本倉庫 [jot@myhost repo2]$ git fetch other warning: no common commits remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From ../repo1 * [new branch] master -> other/master (此時已有新分支other/master)
新建本地分支,將拉取的數據做爲一個新的分支記錄下來便於處理。 orm
# 三、將repo1倉庫抓去的master分支做爲新分支checkout到本地,新分支名設定爲repo1 [jot@myhost repo2]$ git checkout -b repo1 other/master Branch repo1 set up to track remote branch master from other. Switched to a new branch 'repo1'
切換回原始的repo2分支,以便進行合併操做。
# 四、切換回repo2的master分支 [jot@myhost repo2]$ git checkout master Switched to branch 'master'
將repo1分支合併到repo2分支(即當前的master分支)上
# 五、將repo1合併入master分支 [jot@myhost repo2]$ git merge repo1 Merge made by recursive. repo1.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 repo1.txt
最終的截圖如圖