[GIT] GIT拆分仓库--不丢git提交历史记录

这篇具有很好参考价值的文章主要介绍了[GIT] GIT拆分仓库--不丢git提交历史记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

如果你的代码仓库里有多个目录,你想把其中一个目录拆分出去变成一个独立的代码仓库。重要的一点是拆分的过程中要保留git提交历史记录。

拆分步骤

1. 检查一下你的 repo 的根目录中。

进入根目录后,快速运行 ls 终端命令以确保列出所有子目录。

[GIT] GIT拆分仓库--不丢git提交历史记录

利用命令 git log 或 git log --onelist |wc  查看你的提交的信息和提交了多少条。

2.检查你在master分支

假设您要拆分 master 分支。 如果不是,请确保您在正确的分支中。

在您的终端中写入 git branch 以确保您位于 master 分支中。

3.退出根目录

从根目录开始,cd .. 返回上一级,直到您位于根目录的上一级。

4. 将原始的repo的目录移动到新目录

在您的终端输入下面命令。 我们这样做是因为我们即将重写您的回购历史。

mv [your root directory]/ [your root].orig

这是前两个步骤对于我的 repo 的样子,其中原始名为“bookclub-full-app”

[GIT] GIT拆分仓库--不丢git提交历史记录

如果你在你的电脑上查看你的文件,你会看到这个 repo 已经在本地更改了它的名字。 在 Mac 上,这是在“Finder”中

5. Clone你的repo

确保你在新重命名的目录之上(提示:如果你还没有 cd 到任何地方,你应该已经在那里了!)。

再次clone你的 repo:使用 git clone [insert repo url here]

通过快速 ls 检查并确保两者都已列出来仔细检查您是否拥有这两个回购协议。 在我的例子中,我会有 bookclub-full-app 和 bookclub-full-app.orig。

6. 确定要拆分的目录。

cd 到你新 clone 的 repo(不是 .orig)。 您应该回到根目录,您将在其中看到存储库中所有文件和目录的列表。 在我的例子中,我列出了相同的三个子目录:

[GIT] GIT拆分仓库--不丢git提交历史记录

确保位于根目录后,执行以下命令:

git filter-branch --prune-empty --subdirectory-filter [name of subdirectory you want to create a new repo for] -- master

在我的例子中,它看起来像这样只得到我的后端:

[GIT] GIT拆分仓库--不丢git提交历史记录

filter-branch 是主要的 git 命令,用于从根目录中拆分子目录。

subdirectory-filter就是我们用来表示我们要拆分到哪个子目录的,所以你直接在这个后面写你的子目录名。

— 最后的 master 显示了我们想要对其进行操作的提交。

最终,这将改写历史。 您可能会收到有关陷阱的通知,请稍等,它会在几秒钟后完成。

7.确保您已正确重写子目录及其历史记录

如果您现在键入 ls,您将看到过滤分支的子目录列表,而不是原始子目录。

我们从这个到这个:

[GIT] GIT拆分仓库--不丢git提交历史记录

如您所见,您的新根目录包含您想要在其自己的存储库中的所有文件。 您可以通过键入 git log 来测试它,以确保它保留了所有 git 历史记录。

8.删除对原始存储库的远程引用

确保您位于新的根目录中,键入 git remote remove origin。 如果您收到有关其他分支的警告,则可以忽略。

9. 添加新的存储库引用

您需要在 GitHub 上创建一个新的存储库并复制 url 链接来执行此操作。 准备好 url 后,执行

git remote add origin [new repo url]

10. 将所有文件推送到新存储库

git push --all 
git push --tags

11. clone 你的新的repo,来检查

cd ..
git clone [new repo url] [insert new repo name]

问题

如果你的新的repo里面readme或git等文件。这些文件是你建这个repo自带的,这个时候你不能直接push --all, 你要先执行下面的命令,再push文章来源地址https://www.toymoban.com/news/detail-491420.html

git pull --allow-unrelated-histories

到了这里,关于[GIT] GIT拆分仓库--不丢git提交历史记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • VSCode 如何查看git提交的历史记录或逐行记录

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

    2024年02月12日
    浏览(42)
  • 怎么使用Git查看项目中代码的提交历史记录?

    怎么使用Git查看项目中代码的提交历史记录? 可以在git上使用下面这段指令 在git上执行完之后,就可以在桌面上看到打印出来的日志文件了 Readme.log日志文件如下: 对指令中的代码进行解释: git log 是git导出指令 format 是需要导出的数据格式,这里是代码提交时间、提交人员

    2024年02月12日
    浏览(37)
  • vscode插件——git分支管理、查看log提交的历史记录

    不辜负曾经那份热爱 当你觉得vscode用的不顺手时,就多找些插件叭❤ 一、Git Graph 1. 安装 选择红框的\\\"扩展\\\",搜索\\\"Git Graph\\\",直接安装即可。 2. 使用 打开源代码管理菜单,会发现右上角有个小分支图标,直接点击打开Git Graph。也可以直接从底部的Git Graph打开。 打开后,可查

    2024年02月11日
    浏览(59)
  • 【Git】—— 版本控制(忽略文件、查看修改内容,撤销未提交的修改、查看历史提交记录)

    目录 一、准备工作 二、忽略文件 三、查看修改内容 四、撤销未提交的修改 五、查看提交记录         前面学习了Git最基本的用法,包括安装Git、创建代码仓库以及提交本地代码。         下面将要学习版本控制。         先选择一个项目,给它创建一个代码仓库

    2024年02月05日
    浏览(41)
  • 【GIT教程】清除git仓库中某个文件的提交记录

    【Git教程】如何清除git仓库的所有提交记录,成为一个新的干净仓库 最近把一些项目传到Github上面进行开源,配置文件中配置了用户名和密码等一些比较敏感的信息,为了避免暴露这些信息,需要将相关的提交记录给清楚掉。 以 application.yml 来举例说明 第一步:在本地将该

    2024年02月13日
    浏览(31)
  • git主干master分支回滚到历史版本(不会有错误的提交记录)

    master版本,“合并错了”的回滚步骤: (这样做不会有“合并错了”的提交记录)

    2024年01月21日
    浏览(38)
  • git命令使用 将git仓库克隆到另一个仓库,并保留原来的提交记录

    君子拙于不知己,而信于知己。——司马迁   清屏:clear 查看当前面板的路径:pwd 查看当前面板的文件:ls 创建文件夹:mkdir 文件夹名 创建文件:touch 文件名 删除文件夹:rm -rf 文件夹名 删除文件:rm -f 文件名 移动文件/文件夹:mv 需移动文件/文件名 目标文件夹/(../上级)  

    2024年02月12日
    浏览(37)
  • Git | 如何在保留历史记录的情况下,把代码从一个仓库搬运到另一个仓库?

    算是一篇踩坑记录,或者一篇爬坑教程吧 (之所以称之为坑,是因为大多数情况下,直接复制代码就完事了 现有两个Git仓库,A和B,A是项目的主要仓库,为了方便管理,现在要把A中功能较为独立的一块代码搬运到B,同时,希望能够保留这部分代码的历史记录。 先不考虑其

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

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

    2024年02月11日
    浏览(31)
  • 【Git】git push --mirror 迁移项目到其他代码仓库,且保留分支与提交记录。

    需要把云效代码仓库的某些项目,迁移到公司内部的代码仓库。且需要保留迁移项目的分支和提交记录。 百度各种方法,并不停本地测试,结合以往gitlab操作经验解决。 执行前需要,提前在其他代码仓库里新建好项目(New Project),得到Rename repository Path。 执行逻辑 1.根据远

    2024年02月12日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包