Git | 如何在保留历史记录的情况下,把代码从一个仓库搬运到另一个仓库?

这篇具有很好参考价值的文章主要介绍了Git | 如何在保留历史记录的情况下,把代码从一个仓库搬运到另一个仓库?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

算是一篇踩坑记录,或者一篇爬坑教程吧

(之所以称之为坑,是因为大多数情况下,直接复制代码就完事了

需求

现有两个Git仓库,A和B,A是项目的主要仓库,为了方便管理,现在要把A中功能较为独立的一块代码搬运到B,同时,希望能够保留这部分代码的历史记录。

解决思路

最简单的情况

先不考虑其他因素,只考虑“把A仓库的代码和历史记录一起搬运到B仓库”这个需求,很快就能想到一个解决方案:

# Step 1: 克隆一份A的本地副本,以下操作均在该仓库A的本地副本内执行
git clone <repo A 的地址>

# Step 2: 将仓库B设置为该git本地仓库的一个远端
git remote add repoB <repo B 的地址>

# Step 3: 把不想搬过去的代码都删掉,并commit

# Step 4: 执行git push,把所有仓库A的历史记录推到仓库B的code-from-A分支
git push repoB --set-upstream HEAD:code-from-A

如果你要处理的只是一个内容简单的个人项目,那么以上操作就足以满足需求了。

然而,现实总是残酷的,实际的应用场景不会这么简单,我们还要考虑以下几个问题:

  1. 对于仓库B来说,它只关心要搬运的一小块代码,但是上面的做法却推了整个仓库A的历史记录上去,存在数据冗余

  1. 仓库B中,code-from-A分支与master分支不同基(not sharing the same base),因此,如果要把code-from-A merge到master,会报unrelated history的错。如果是个人项目的仓库还好,我们还可以通过配置allow unrelated history绕开这个问题,但在管理比较严格的企业里,这是不被允许的。这就迫使我们对code-from-A进行rebase。

  1. 如果仓库B并不是空白仓库,文章来源地址https://www.toymoban.com/news/detail-666061.html

到了这里,关于Git | 如何在保留历史记录的情况下,把代码从一个仓库搬运到另一个仓库?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • BFG Repo-Cleaner 清理在Git历史记录中不需要的数据(git仓库臃肿、git仓库太大、清理git仓库大文件、清理.git\objects\pack中的.pack文件)

    在处理 Git 项目时,可能会遇到一些敏感信息或者大文件被误上传到了仓库,这样会导致仓库变得庞大并且难以管理。这种情况下,BFG Repo-Cleaner 就派上用场了。它是一个更简单、更快速的工具,可以帮助我们从 Git 历史记录中删除不需要的数据。 BFG Repo-Cleaner 是一个由 Scala

    2024年02月02日
    浏览(53)
  • git仓库体积过大,如何减小?git仓库体积压缩,使用git-filter-repo删除历史大文件

    如果我们在使用的过程中不小心将较大的二进制文件加入到仓库中,那么随着我们提交次数的增多仓库的体积将会不断的膨胀,例如我在项目中每次都会编译出一些so库文件,但是我并没有忽略这些文件,每次都会提交,随着时间的推移仓库体积不断膨胀,将不能再推送到远

    2024年02月16日
    浏览(40)
  • VSCode 如何查看git提交的历史记录或逐行记录

    下载两个插件就行了 Git History GitLens 安装成功之后,任意选择一个文件,你鼠标点击哪一行代码,后面都会提示谁在什么时候做了什么,鼠标悬浮提示上便会直接显示作者,版本,时间,点击作者直接可以发邮件,非常方便呢

    2024年02月12日
    浏览(52)
  • 查看git所有分支的历史修改中改过某段代码的记录。

    如果您要查看 Git 所有分支的历史修改中改过某段代码的记录,可以使用 Git 的 git log 命令和 -S 选项以及你要查找的代码段。 下面是具体的操作步骤: 执行以下命令以在所有分支上搜索代码段的内容: 在上面的命令中, -S \\\"your code snippet\\\" 选项表示搜索某个代码片段, --all 选

    2024年02月11日
    浏览(51)
  • 从一个git仓库迁移代码到另一个git仓库

    如果A是已有仓库,B是新建立的空仓库。(如下操作,提交记录也会带到新仓库里) 1、在本地拉一下( git clone )A仓库的代码,或者是 git pull 下最新的代码。 2、 git remote # 查看本地连接的有哪些 远程仓库,默认是 origin 3、 git remote add origin2(这个名字随便起) master # 这里是在

    2024年02月15日
    浏览(58)
  • Git同步一个仓库代码到另一个仓库

    在当前仓库操作,更新代码库 查看当前仓库origin只有一个,接下来我们要add另一个仓库的origin newOrigin远程仓库名称,可以随便起个方便记忆的,目的是在本地添加一个新的远程连接 newOrigin后面是newOrigin的一个分支,可以指定为master或你要push的目标分支,都可以。执行完命令

    2024年02月10日
    浏览(45)
  • git关联两个远程仓库,一个仓库(github)拉取代码,另一个仓库(gitlab)推送代码

    有这种情况,小伙伴们在github上下载的开源项目(该开源项目还在继续开发维护),然后自己下载下来进行二次开发,然后又要把项目推送自己的gitlab私服上,这个时候不得不本地代码关联两个远程仓库。接下来我将一步步讲解如何关联两个远程仓库,并拉取github的开源项目

    2024年02月12日
    浏览(79)
  • gitee仓库迁移至gitlab仓库简单方法,保留提交记录

    1、先将gitee上的项目git clone至本地; 2、在gitlab上创建空项目,创建完成后复制新建项目的url; 3、cd至项目内部,查看git remote是否是origin; 4、是origin则直接修改origin的url,url为刚才复制的新建项目的url; 5、查看是否已修改为新项目地址的url; 6、推送代码至新仓库; 结束

    2024年02月11日
    浏览(52)
  • 【笔记】Git|将git仓库中所有的 commit 合成一个,清空所有 git 提交记录

    在对代码进行开源时,我们往往并不希望代码开发过程中的提交记录被其他人看到,因为提交的过程中往往会涵盖一些敏感信息。因此会存在 将仓库中所有 commit 合成一个 的需求。 直觉上,往往会用 rebase 和 squash 或 reset,不过我尝试了一下存在问题,会出现最后仍然剩两个

    2024年02月11日
    浏览(42)
  • 将项目复制到新电脑之后, 无法通过git 进行拉取代码/查看历史提交记录等操作

    将项目代码整体打包到新环境(新电脑), 在idea/pycharm下载好git相关插件并打开项目之后, 通过git拉取代码失败(gitlab/git/gtee) 最近因工作原因需要讲电脑上的代码迁移到新电脑上, 但是将idea以及git插件等配置好之后, 打开项目, 发现无法查看之前的提交记录, 即使点击刷新也无法查

    2024年02月04日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包