赞
踩
有些项目需要使用到别人开源的项目拿来做二次开发, 以前我的做法是先克隆到本地, 然后将这个项目复制一份后重命名为自己的项目名称, 在开源项目更新后, 先去更新那个开源项目, 然后复制->粘贴->覆盖… 没错 , 就是这么简单粗暴.
但是慢慢的发现其实也有些问题, 其中之一就是这种纯覆盖的模式道理科不科学, 合不合理, 以及, 更新是否足够及时
暂不说合不合理的问题, 更新及时就是一个问题, 因为很可能我很多项目做完也就做完了, 无论引用的项目是否更新, 我本地项目没问题之后基本也就没跟着更新过了, 也是一直害怕直接覆盖会把我的项目给搞崩了
理想状态当然是, clone别人的项目, 然后自己新建一个远程仓库, 同时之后的提交都提交到自己的仓库内, 在之前的使用中得知Git是可以添加多个remote的. 也就是说, 是完全可以clone后再添加一个自己的remote然后进行推送的.
实际上, 我也是这样做的. 但是在添加完自己的remote之后, 我开始了提交操作, 然后发现git报错提示需要我先执行pull
在执行pull之后, 提示报错: fatal: refusing to merge unrelated histories
意为: 拒绝合并不相关的历史
说白了就是, pull因为会执行merage, 在合并的时候发现了原项目的历史不是自己的, 和自己不相关, 拒绝合并,所以要解决这个问题, 就要 在执行pull的时候 增加参数来让它合并两个不相关的独立仓库
--allow-unrelated-histories
完整操作指令应为: git pull origin master --allow-unrelated-histories
这样执行后就成功的将自己的仓库和原仓库记录合并了, 然后就可以推送本地更新到自己的remote了.
当然, 如果和我一样是先clone了开源库, 那此时的默认分支和remote应该指向的都是开源库的地址, 需要修改一下默认分支和, 至于要不要设置自己的remote为默认暂未测试
也记录下我的步骤吧
但其实这里还有个问题我没有进行验证, 我这里相当于新建了分支, 但是按照以前了解到的知识, 建立分支后, 你的推送和更新仅在这个分支内, 也就是说如果我切换回另一个分支, 那么本地的文件也是会直接切回到分支1中的. 等于说两个是不相干的通道. …
那如果这样的话, 岂不是我白折腾了嘛…暂时记录到此, 后续自己会单独建立两个库进行测试, 如果真是如我猜测的话, 那可能还要再去学习如何去合并两个分支了. … Git用了这么久,还是只会推送和拉取, 真是惭愧, 对分支什么的基本没有涉足, 看来需要好好补补课了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。