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