前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git合并不同url的项目

Git合并不同url的项目

原创
作者头像
机智的程序员小熊
修改2019-03-10 11:52:25
2.3K0
修改2019-03-10 11:52:25
举报
文章被收录于专栏:技术面面观技术面面观

摘要:为了让项目能实现Git+Gerrit+Jenkin的持续集成,我们把项目从Git上迁移到了Gerrit上,发现有的同事在老Git提交代码,因为Gerrit做了同步,在Gerrit上有新提交的时候就会刷新老git,这样就会把他提交的代码冲掉。这个时候我就必须要在两个相似项目之间合并提交了。

步骤

将老Git url加到我们新Git的本地
将老Git url加到我们新Git的本地
  • 使用命令git remote add [shortname] [url]将老Git url加到我们新Git的本地
  • 这里我把他取名为gitoa_web(随便取)
查看
查看
  • 使用命令git remot -v查看远程仓库的情况
  • 可以看到此处我们有三个远程仓库分别名为gerritgitoa_weborigin
同步代码
同步代码
  • 使用命令git fetch gitoa_web刷新远程仓库到本地
  • 字符串 gitoa_web 指代对应的仓库地址了.比如说,要抓取所有 gitoa_web 有的,但本地仓库没有的信息,可以用
合并项目
合并项目
  • 使用命令git merge gitoa_web/master合并项目
  • gitoa_web是指代仓库,master指代分支,当然如果有需要也可以合并别的分支过来
    报错
    报错
  • 发现不同email地址错误不能成功提交
  • 因为这个commit不是我的
修正错误
修正错误
  • 把email地址更新成我的
  • 再提交就成功了

保留原有的commit用户

在上一节我们

  • 先使用命令git remote add [shortname] [url]将老Git url加到我们新Git的本地
  • 使用命令git fetch gitoa_web刷新远程仓库到本地
  • 最后使用命令git merge gitoa_web/master将老项目合并到新项目上再提交

这种在新项目的master上,合并老项目的方式会存在问题(就是如果不是自己的commit会过不了push),后来我遇到了项目进行迁移的需求,经过测试只要反过来,位于老的项目上,push到新的项目就不会出现这样的问题了。

如下

已有代码推于已有项目
已有代码推于已有项目
  • git clone 老项目
  • git remote add gerrit 新项目git链接
  • cd 项目名 此时我们就位于已有代码
  • git push gerrit master此时就是把已有代码推于已有项目

思考:为什么会出现这样的问题呢?

  • 因为在新的项目上合并老项目的代码,对于新项目来说是新的代码提交,所以只允许你一个人来提交
  • 如果在老项目上,给新项目推代码这种顺序就是已有代码推到已有仓库

小结

知识点:

  1. git merge还可以合并其他项目的到本项目
  2. git fetch 仓库名可以指定同步哪个仓库
  3. git remot -v查看本地有哪些远程仓库的情况,包含各个仓库url

本次我们对以下命令加深了理解

代码语言:txt
复制
git remote                                    #不带参数,列出已经存在的远程分支
git remote -v                                 #(-v是–verbose 的简写,取首字母)列出详细信息,在每一个名字后面列出其远程url
git remote add [shortname] [url]              #添加远程仓库
git fetch origin                              #字符串 origin 指代对应的仓库地址了.比如说,要抓取所有 origin 有的,但本地仓库没有的信息,可以用

ps: 这里git remote add以后,我认为还能用cherry-pick来加不同仓库的commit过来,有兴趣的朋友可以自己尝试。

Git常用命令

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤
    • 保留原有的commit用户
    • 小结
    相关产品与服务
    持续集成
    CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档