Fork的项目如何Merge
一. 场景
参与一些开源的项目,把自己修改的代码合并到主分支上,如何避免冲突和覆盖别人的东西?
设想一下,你参加世界上最大的github开源项目linux, 大神Linus Torvalds不会轻易添加我们为linux项目成员的, but,我们还是有可能参加这个开源项目,因为我们fork,在fork项目中提交从fork到base项目的合并请求, Linus在base项目中来处理要不要接受合并请求!
二. 异常流程
三. 解决方案
// 查看目前远程仓库信息
git remote -v
// 输出, 这里的地址是 fork 的项目的地址
//origin http://192.168.xx.xx/fyang/xxx.git (fetch)
//origin http://192.168.xx.xx/fyang/xxx.git (push)
// 配置远程更新链接(在本地仓库中添加base项目的远程地址), 这里的地址是 原项目的地址
git remote add base http://192.168.xx.xx/base/xxx.git
// 拉取远程仓库代码, 这一步其实就是拉取别人 merge 的代码,确保base是最新的
git pull base master
// 合并远程代码到本地
git merge base/master
解决冲突
// 提交到自己fork的项目中
git push origin master
发起merge请求
或者
// 查看目前远程仓库信息
git remote -v
// 输出, 这里的地址是 fork 的项目的地址
//origin http://192.168.xx.xx/fyang/xxx.git (fetch)
//origin http://192.168.xx.xx/fyang/xxx.git (push)
// 配置远程更新链接(在本地仓库中添加base项目的远程地址), 这里的地址是 原项目的地址
git remote add base http://192.168.xx.xx/base/xxx.git
// 拉取远程仓库代码
git fetch base
// 合并远程代码
git merge base/master
// 提交到自己fork的项目中
git push origin master
发起merge请求