Git 怎样将旧仓库迁移新仓库中,但不显示旧的提交记载 ...

打印 上一主题 下一主题

主题 1544|帖子 1544|积分 4632


一、非常错误

场景:我想把旧仓库迁移新仓库中,放进去之后,新仓库会显示这个项目之前的全部提交,怎样不显示这些旧的提交?
二、缘故原由

我们需要将旧仓库迁移新仓库中,但是又不想在新仓库中显示旧的提交记载,因为旧的提交记载包罗一些敏感信息,我们只想在新仓库中保存最新的代码历史记载。
三、解决方法

我们可以利用下面步调来解决。`注意先备份原有仓库的代码,以防止数据丢失。

  • 创建一个新的空白仓库,例如利用GitHub或GitLab创建一个新的仓库。
  • 将旧仓库的代码clone到当地。
  • 进入项目标当地仓库目录,利用以下命令将其转换为一个新的仓库:
  1. # 初始化本地仓库
  2. git init
  3. # 将旧仓库与本地仓库关联,<旧仓库的远程地址> 替换为实际的旧仓库地址
  4. git remote add origin <旧仓库的远程地址>
  5. # 从远程仓库中获取所有分支和标签的最新信息
  6. git fetch --all
  7. # 将本地的当前分支(默认为master)重置为与远程仓库的origin/master分支一致,
  8. # 如果有未提交的改动将会被丢弃。此步骤用于确保本地代码与远程仓库的主分支保持同步。
  9. git reset --hard origin/master
复制代码

  • 查看远程库的信息,删除旧的关联的origin的远程库
  1. #查看远程库的信息
  2. git remote -v
  3. #删除旧的关联的origin的远程库
  4. git remote rm origin
复制代码

  • 更换仓库关联,将新仓库与当地仓库关联
  1. # 将新仓库与本地仓库关联,<新仓库的远程地址> 替换为实际的新仓库地址
  2. git remote add origin <新仓库的远程地址>
复制代码


  • 利用以下命令扫除旧的提交记载:
  1. # 创建一个名为latest_branch的孤儿分支,该分支不会继承任何提交历史
  2. git checkout --orphan latest_branch
  3. # 添加当前目录下的所有文件到暂存区,准备提交
  4. git add -A
  5. # 提交暂存区的所有更改,并附上提交信息:"Initial commit"
  6. git commit -am "Initial commit"
  7. # 删除本地的master分支
  8. git branch -D master
  9. # 将当前的latest_branch分支重命名为master
  10. git branch -m master
  11. # 强制推送master分支到远程仓库的origin/master,这将覆盖远程仓库中的master分支
  12. # 注意:此操作会丢失远程仓库master分支上的历史记录和未合并的提交,请谨慎使用!
  13. git push -f origin master
复制代码
这样就可以将旧仓库迁移新仓库中,但不显示旧的提交记载

Git 是什么?
那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余。 在学习 Git 时,请尽量理清你对其它版本管理系统已有的熟悉,如 CVS、Subversion 或 Perforce, 这样能帮助你利用工具时避免发生肴杂。只管 Git 用起来与其它的版本控制系统非常相似, 但它在对信息的存储和认知方式上却有很大差异,理解这些差异将有助于避免利用中的狐疑。
直接记载快照,而非差异比力
Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差异在于 Git 对待数据的方式。 从概念上来说,其它大部分系统以文件变动列表的方式存储信息,这类系统(CVS、Subversion、Perforce 等等) 将它们存储的信息看作是一组基本文件和每个文件随时间渐渐累积的差异 (它们通常称作 基于差异(delta-based) 的版本控制)。
存储每个文件与初始版本的差异。
Figure 4. 存储每个文件与初始版本的差异.
Git 不按照以上方式对待或保存数据。反之,Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保存一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。
Git 存储项目随时间改变的快照。
Figure 5. 存储项目随时间改变的快照.
这是 Git 与几乎全部其它版本控制系统的重要区别。 因此 Git 重新思量了以前每一代版本控制系统延续下来的诸多方面。 Git 更像是一个小型的文件系统,提供了很多以此为底子构建的超强工具,而不但是一个简单的 VCS。 稍后我们在Git 分支讨论 Git 分支管理时,将探究这种方式对待数据所能获得的益处。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表