每天3分钟玩转Git——12 – 保留原提交记录迁移Git项目

小熊 玩转Git评论5,858字数 1067阅读3分33秒阅读模式

12 - 保留原提交记录迁移Git项目

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

迁移步骤

git clone 下载老项目并提进入项目目录
每天3分钟玩转Git——12 – 保留原提交记录迁移Git项目

  • git remote add [shortname] url将新的Git url加到我们老的Git的本地
  • 这里我把他取名为git_new(随便取)

每天3分钟玩转Git——12 – 保留原提交记录迁移Git项目

  • 使用命令git remote -v查看远程仓库的情况,-v参数可以看到各个仓库的url

  • 此处我们有两个远程仓库分别名为 git_neworigin

每天3分钟玩转Git——12 – 保留原提交记录迁移Git项目

  • 保证当前仓库干净

  • 推送代码到新仓库,git push git_new master

  • 字符串 git_new 指代对应的仓库地址,也就是我们刚刚取的别名,master代表想要推送的分支,可以随便选

每天3分钟玩转Git——12 – 保留原提交记录迁移Git项目每天3分钟玩转Git——12 – 保留原提交记录迁移Git项目
我们可以对比到,已经成功从git_test项目迁移到了git_test_new项目中,但是只推了master分支过来,要推其他分支只要切换分支然后再推就可以了!

为什么只能位于老的Git项目向新的项目提交代码?

思考:为什么只能从老的向新的推代码,而不能位于新项目merge老项目的代码?

  • 因为在新的项目上合并老项目的代码,对于新项目来说是一次新的代码提交,所以只允许当前提交用户来提交,但是代码历史里有其他人的提交记录,Git是不会允许通过的。除非全部改成一个人

  • 如果在老项目上,给新项目推代码这种顺序就是已有代码推到已有仓库的逻辑

小结

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

git remote                       #不带参数,列出已经存在的远程仓库
git remote -v                    #列出详细信息,包括远程仓库名和url
git remote add [shortname]  url #添加远程仓库

ps: 这里git remote add以后,还可以能用git cherry-pick commit-id来把不同仓库的commit合并过来,有兴趣的朋友可以自己尝试,这个命令可以跨仓库、跨分支、跨项目。

迁移老项目同时保存提交历史的秘诀是

  1. git clone老项目

  2. git remote add gerrit添加新项目git链接

  3. cd 项目名 此时我们就位于已有代码

  4. git push gerrit master此时就是把已有代码推于已有项目

切记:一定要先clone先项目后再向新的远程推代码,顺序反了的话即使可以成功,提交记录也没了哦!

weinxin
公众号
扫码订阅最新深度技术文,回复【资源】获取技术大礼包
小熊