Fork仓库同步官方源仓库的更新
Fork仓库是对应官方源仓库的一份完全备份(类似快照,但却不能再接收到官方源仓库的更新内容),然而有时咱们需要Fork仓库涵盖官方源仓库的最新提交代码。
本文总结介绍了从官方源仓库同步更新内容到Fork仓库的方法,过程大致如下:
- 向本地Fork仓库添加官方源仓库远端
- 再获取(fetch)官方源仓库的更新内容到本地仓库
- 然后合并官方源仓库的更新内容到本地Fork仓库
- 最后推送到远端Fork仓库。
1. 步骤一、添加官方源仓库远端
1.1. 查看远端仓库
查看本地Fork仓库的远端信息
1 | git remote -v |
一般此时查询的结果只有一个Fork仓库远端(共两行fetch + push)eg.
1 | origin ssh://git@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.git (fetch) |
其中 “origin” (默认值)为本地设置的Fork远端仓库的远端别名, 而“ssh://git@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.git“ 对应为你的Fork仓库地址
1.2. 添加官方源仓库远端
添加官方源仓库远端到本地Fork仓库,使具有两个远端
1 | git remote add origin_official https://oooooooooooooooooooooooooooooo.git |
其中 “origin_official” 为自定义官方源仓库在本地的远端别名, “https://oooooooooooooooooooooooooooooo.git" 为官方源仓库地址
1.3. 再次检查本地的远程信息
1 | git remote -v |
此时查询本地Fork仓库应该有两个远端,一个Fork仓库远端和一个官方源仓库远端(共四行)eg.
1 | origin ssh://git@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.git (fetch) |
2. 步骤二、获取远程官方源仓库的更新内容
2.1. 通过fetch命令获得一份官方源仓库的更新内容到本地Fork仓库
1 | git fetch origin_official |
2.2. 检查并切换到想同步更新的分支(一般为master分支)
2.2.1. 检查当前分支
1 | git branch |
一般此时查询结果为origin/master分支(默认),其对应远端分支为Fork远端仓库的master分支。若当前本地Fork仓库有未提交的修改内容则需先推送修改内容到Fork仓库远端,否则可能为后面合并操作带来不必要的工作量。
2.2.2. 切换到非master分支(可选)
若待同步的源仓库更新内容不在master分支,则需手动切换到对应分支(如xxxxxx分支),否则可跳过此## 步骤。切换到待同步源仓库远端分支有更新内容对应的Fork仓库在本地仓库的分支(有点绕,如xxxxxx分支)
1 | git checkout -b xxxxxxFork origin/master |
其中 “xxxxxxFork” 为自定义本地分支名,对应Fork仓库的xxxxxx分支, “origin” 对应Fork仓库远端别名
3. 步骤三、合并官方源仓库的更新内容到本地仓库
合并官方源仓库的更新内容到本地仓库对应分支(一般为master分支)。如合并origin_official/master的更新内容到本地Fork仓库的master分支(默认分支),若为其他分支则替换为对应分支便可(如:替换master为xxxxxx)
1 | git merge origin_official/master |
- 若当前的本地仓库包含未提交的内容,则会提示合并失败,此时需要先推送本地修改内容到Fork仓库远端,再执行该合并操作。
- 若更新内容与本地仓库内容区别较大git合并时报冲突也会提示合并失败,处理冲突后便可完成合并
4. 步骤四、推送本地代码到远端Fork仓库
此时本地Fork仓库的master分支已包含官方源仓库master分支的更新内容,再执行push操作将这些更新内容推送到自己的远端Fork仓库即可
1 | git push origin master |
至此,已完成同步官方源仓库mater分支的所有更新到Fork仓库。