合併已存在的git倉庫

轉自:https://github.com/deercoder/0-tech-notes/blob/master/Git/git_merge_local_repos.md html

合併已存在的git倉庫

需求:有兩個本地的版本庫,都是基於一個遠程的版本庫作開發,如今想將一個版本庫的修改合併到另一個版本庫上去,可是不適用服務器端(安全問題)。 git

問題:如何操做本地的兩個版本倉庫? github

解決辦法

整體思路:將本地的一個版本庫做爲遠程版本庫,合併到另一個版本庫上。 安全

前期準備: 服務器

  1. 有2個git倉庫:repo一、repo2;
  2. 想將repo1中的文件移入repo2;
  3. repo1的歷史日誌要保留;

具體操做以下: 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

具體操做:

  1. 在一個版本庫中,將本地的另一個版本庫做爲遠程倉庫。好比,這裏我在repo2倉庫下面,將repo1做爲遠程倉庫。 日誌

    # 一、將repo1做爲遠程倉庫,添加到repo2中,設置別名爲other
    [jot@myhost repo2]$ git remote add other ../repo1/
  2. 在該版本庫下面,拉取另一個版本庫的數據到代碼倉庫中。好比,這裏在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)
  3. 新建本地分支,將拉取的數據做爲一個新的分支記錄下來便於處理。 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'
  4. 切換回原始的repo2分支,以便進行合併操做。

    # 四、切換回repo2的master分支
    [jot@myhost repo2]$ git checkout master
    Switched to branch 'master'
  5. 將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

最終的截圖如圖

log_tree

總結:

  1. 大體思路是僞造遠程的repo1倉庫爲repo2的一個分支,而後合併進來;
  2. 如果文件有衝突、或要創建子目錄,建議在repo1中先解決,再進行如上操做。

參考資料:

  1. http://stackoverflow.com/questions/1683531/how-to-import-existing-git-repository-into-another
  2. http://progit.org/book/zh/ch2-5.html (推薦閱讀)
相關文章
相關標籤/搜索