git实现其他仓库代码持续更新到自己仓库

317 阅读3分钟

git实现其他仓库代码持续更新到自己仓库

学习过程中的简单记录,若问题敬请指教!文章持续更新中...

路过的朋友,可以点个赞,关注一下~~~

业务场景

自己需要对一个开源的系统代码进行二次开发时,发现开源系统代码在持续更新中,此时您就想如果开源系统开发新功能或者修复xxxbug时可以持续更新同步到自己的仓库代码中多好,既省时又省力。同时还想保存开源仓库本身所有人的更新记录。

接下来以模拟一个完整的业务操作流程,仓库A自己的,仓库B三方开源的。

  1. 创建空的仓库A,并克隆仓库B的代码到本地
git clone 仓库B代码地址

2.进入项目克隆的代码项目中,删除原有git文件

rm -rf .git

3.初始化仓库,让它变成属于我们的仓库A

git init

4.将代码添加到暂存区

git add .

5.将暂存区代码添加到本地仓库

git commit -m "提交说明"

6.关联自己仓库地址(仓库A)

git remote add origin 自己仓库A的地址

7.提交代码

git push -u origin master

8.再创建一个代码分支dev,在master上进行自主开发,使用dev分支和仓库B的代码进行合并

git branch dev

9.再建立一个关联仓库B,dipository是关联的别名,用户可自行定义

// 建立一个别名 dipository 来关联仓库B
git remote add dipository 仓库B地址

// 拉取仓库B的代码(会拉取仓库B的所有分支到本地)
git fetch dipository 

10.合并仓库B中master分支代码到仓库A中dev分支

// 切换仓库A至dev分支
git checkout dev 

// 合并仓库B中master分支(dipository:别名;master:分支)
git merge dipository/master

特别注意:第一次合并代码会遇到 refusing to merge unrelated histories 报错

解决方案:git merge 分支名 --allow-unrelated-histories

示例

git merge dipository/master --allow-unrelated-histories
  1. 当想要更新其他仓库代码到自己仓库时
  • 首先从自己仓库的master切换到自己仓库的dev分支
git checkout dev
  • 拉取其他的仓库最新代码
// 拉取仓库B 的master分支
git pull dipository master

// or 拉取仓库B的所有分支
git fetch dipository
  • 合并到dev分支,这时dev代码也已经更新了,可以直接推送到自己的远程仓库,也可以本地
// 合并仓库B 的master分支
git merge dipository/master

// 推送远程dev分支
git push
  • 然后切换到master ,把dev合并到master,master就拥有了其他仓库最新的代码了。
// 切换master 分支
git checkout master

// 合并dev分支
git merge dev

后记

本文纯仅属于个人的一些简单的见解,比较浅显,若有不妥之处还请不吝赐教!!!(☆_☆)

如果本文对你有所帮助,欢迎点赞!!!

o( ̄▽ ̄)d