假設原倉庫爲 https://github.com/lmshao/OldHub.git
,
fork後的新倉庫爲:[email protected]:lmshao/NewHub.git
。
1. clone新倉庫
$git clone [email protected]:lmshao/NewHub.git
Cloning into 'NewHub'...
Resolving deltas: 100% (1/1), done.
remote: Total 7 (delta 1), reused 0 (delta 0), pack-reused 0
$cd NewHub/ # 進入工程目錄
2. 添加原倉庫的遠程鏈接
設置原倉庫的別名爲OldHub,默認的別名爲origin。
$git remote add OldHub https://github.com/lmshao/OldHub.git
查看遠程倉庫信息
$git remote -v
OldHub https://github.com/lmshao/OldHub.git (fetch)
OldHub https://github.com/lmshao/OldHub.git (push)
origin [email protected]:lmshao/NewHub.git (fetch)
origin [email protected]:lmshao/NewHub.git (push)
OldHub爲原倉庫的別名,origin指新倉庫
3. 獲取遠程倉庫內容
$git fetch OldHub #其實獲取的是倉庫信息
warning: no common commits
* [new branch] master -> OldHub/master
查看所有分支
$git branch -a
* master
remotes/OldHub/master #原倉庫遠程分支
remotes/origin/HEAD -> origin/master
remotes/origin/master
4. Merge遠程倉庫分支的內容到新分支
merge的時候可以把遠程分支下下來進行merge,也可以直接merge遠程的分支。
方法一:下載遠程倉庫進行merge
$git checkout -b OldMaster remotes/OldHub/master # 新建並切換到OldMaster分支,從遠程分支下載內容到此分支
Branch 'OldMaster' set up to track remote branch 'master' from 'OldHub'.
Switched to a new branch 'OldMaster'
$git branch #查看本地分支
* OldMaster
master
$git checkout master # 切換到新倉庫的master分支
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
$git merge OldMaster # merge原倉庫的master分支
fatal: refusing to merge unrelated histories
$git merge OldMaster --allow-unrelated-histories # merge出錯的話使用此命令
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
方法二:不下載遠程倉庫,merge遠程分支
$git merge OldHub/master # merge原倉庫的master分支
$git merge OldHub/master --allow-unrelated-histories # merge出錯的話使用此命令
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
5. 推送到遠程分支
$git push
or
$git push -u origin master