Git fork分支後與原倉庫保持同步

假設原倉庫爲 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章