近日想在一个开源的项目上做一些二次开发,同时该开源项目也一直在迭代,那么如何保持跟它同步同时又保留自己的改动呢。简单说来有如下几步:
1.fork开源项目到自己的仓库,比如从
github.com/abc/cherry => github.com/dhl/cherry
然后clone
git clone https://github.com/dhl/cherry
2.接下来cd到自己的仓库,开始如下操作
cd cherry
git checkout -b dev #默认是master,master里永远跟开源的保持一致
git pull
git checkout master #切回master,做更新
git remote add upstream https://github.com/abc/cherry.git #设置upstream开源仓库.
git fetch upstream master #拉取开源的仓库upstream的master到本地
git merge upstream/master #合并到本地master
git checkout dev #切换到dev
git rebase master #把刚刚拉取的更新merge到dev分支
如果自己fork之后只有一个目录,可以如下操作:
1.fork开源项目到自己的仓库,比如从
github.com/abc/cherry => github.com/dhl/cherry
然后clone
git clone https://github.com/dhl/cherry
2.接下来cd到自己的仓库,开始如下操作
cd cherry
git pull
git remote add upstream https://github.com/abc/cherry.git #设置upstream开源仓库.
git fetch upstream master #拉取开源的仓库upstream的master到本地的master
git merge upstream/master
#git rebase upstream/master #把刚刚拉取的更新merge到dev分支
其它:
备注一下如果这个时候编译自己仓库的代码,并且希望引用的也是自己的代码的方法
#在go.mod中把引用的包路径通过replace替换为自己的
replace(
github.com/abc/cherry => github.com/dhl/cherry
)
同时自己本地的部署路径不需要改,还应该是
/xxxx/go/src/github.com/abc/cherry #但是里面的代码仓库可以是自己的