首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从大型git历史记录中切片,但保持合并/重设基址的能力

从大型git历史记录中切片,但保持合并/重设基址的能力,可以通过以下步骤实现:

  1. 首先,使用git命令克隆完整的git仓库到本地机器上。例如,使用以下命令克隆一个名为"myrepo"的仓库:
  2. 首先,使用git命令克隆完整的git仓库到本地机器上。例如,使用以下命令克隆一个名为"myrepo"的仓库:
  3. 进入克隆的仓库目录:
  4. 进入克隆的仓库目录:
  5. 使用git命令查看仓库的历史记录,获取需要切片的提交范围。例如,假设需要切片的提交范围是从commit A到commit B:
  6. 使用git命令查看仓库的历史记录,获取需要切片的提交范围。例如,假设需要切片的提交范围是从commit A到commit B:
  7. 通过查看提交的哈希值和提交信息,确定需要切片的起始和结束提交。
  8. 创建一个新的分支来保存切片后的历史记录。例如,创建一个名为"slice"的分支:
  9. 创建一个新的分支来保存切片后的历史记录。例如,创建一个名为"slice"的分支:
  10. 切换到新创建的分支:
  11. 切换到新创建的分支:
  12. 使用git命令进行交互式重写历史记录。在这个步骤中,你可以选择保留或删除特定的提交,以达到切片的目的。例如,使用以下命令来重写历史记录并保留从commit A到commit B的提交:
  13. 使用git命令进行交互式重写历史记录。在这个步骤中,你可以选择保留或删除特定的提交,以达到切片的目的。例如,使用以下命令来重写历史记录并保留从commit A到commit B的提交:
  14. 在打开的交互式界面中,将需要保留的提交前面的"pick"改为"edit",然后保存并关闭文件。
  15. git会在每个需要编辑的提交处停下来,你可以对提交进行修改或删除。如果你想保留提交,可以直接继续,如果你想删除提交,可以使用以下命令:
  16. git会在每个需要编辑的提交处停下来,你可以对提交进行修改或删除。如果你想保留提交,可以直接继续,如果你想删除提交,可以使用以下命令:
  17. 这将撤销最后一个提交,但保留更改。
  18. 重复步骤7,直到你完成了对历史记录的切片。
  19. 完成切片后,使用以下命令将切片后的历史记录推送到远程仓库:
  20. 完成切片后,使用以下命令将切片后的历史记录推送到远程仓库:
  21. 这将把切片后的历史记录推送到名为"slice"的分支上。

通过以上步骤,你可以从大型git历史记录中切片,同时保持合并/重设基址的能力。请注意,这个过程是对git历史记录进行修改,因此在执行此操作之前,请确保你了解并理解对历史记录进行修改可能带来的潜在风险,并在进行任何修改之前备份你的仓库。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

git分支管理和工作流规范:基本概念说明

提交代码时,要保持提交历史清晰,提交注释也要规范,关于提交历史,总结了3个要点: 一个git用户非常重要技能是能够维护一个清晰语义化变更历史; 通过查看版本变更历史就可以反映出团队开发目的、...功能变更; 版本变更历史记录是代码发展,而不是开发者在编码时活动; 会分3篇文章分享「git分支管理和工作流规范」: git相关概念 具体规范 不同场景细化和演示 本篇主要介绍下git相关概念,太基础我就不介绍了...,网上资料比较多,主要包括: 文件状态 分支概念 merge合并 rebase衍合 git工作流程 文件状态 状态类型 已修改:修改了某个文件,还没有提交保存;(没有add) 已暂存:已修改文件放在下次提交时要保存清单...git如何知道你当前在哪个分支上工作?...; 如果你把原来分支提交对象发布出去,并且其他人更新下载后在其基础上开展工作,而稍后你又用git rebase 抛弃这些提交对象,把新重演后提交对象发布出去的话,你合作者就不得不重新合并他们工作

1.1K80

源码管理工具之git使用

3、git revert git revert撤销一个commit记录同时会创建另一个新commit记录,这是一个安全方法,而不是项目历史移除这个提交。...image.png git revert可以针对历史记录任何一个提交,而git reset只能从当前提交向前回滚。...5、git clean git clean命令将未记录文件工作目录移除。它只是提供了一条捷径,因为用git status查看未记录文件,然后手动移除它们也很方便。...git merge --no-ff 将指定分支并入当前分支, 总是 生成一个合并提交(即使是快速向前合并)。这可以用来记录仓库中发生所有合并。...image.png 注意: 提交冲突只会出现在三路合并。在快速向前合并,我们不可能出现冲突更改。

98520
  • 肝了几夜 Git 图解来了

    Git api很多,其实平时项目中90%需求都只需要用到几个基本功能即可,所以本文将从 实用主义 和 深入探索 2个方面去谈谈如何在项目中使用 Git,一般来说,看完 实用主义 这一节就可以开始在项目中动手用...这个命令会创建一个全新,完全没有历史记录新分支,当前源分支上所有的最新文件都还在,真是强迫症患者福音,这个新分支必须做一次 git commit 操作后才会真正成为一个新分支。...stash@{0} 移除栈其中一条记录 git stash pop Git检出最新保存一条记录,并将它从栈移除 git stash apply stash@{0} Git检出其中一条记录...合并分支,这跟 merge 很像,还是有本质区别,看下图: 合并过程可能需要先解决冲突,然后执行 git rebase --continue git rebase -i HEAD~~ 打开文本编辑器...如果移动提交记录顺序,将改变历史记录排序。

    27830

    Git 入门到放不下

    Git api很多,其实平时项目中90%需求都只需要用到几个基本功能即可,所以本文将从 实用主义 和 深入探索 2个方面去谈谈如何在项目中使用 Git,一般来说,看完 实用主义 这一节就可以开始在项目中动手用...,完全没有历史记录新分支,当前源分支上所有的最新文件都还在,真是强迫症患者福音,这个新分支必须做一次 git commit 操作后才会真正成为一个新分支。...stash@{0} 移除栈其中一条记录 git stash pop Git检出最新保存一条记录,并将它从栈移除 git stash apply stash@{0} Git检出其中一条记录...合并过程可能需要先解决冲突,然后执行 git rebase --continue git rebase -i HEAD~~ 打开文本编辑器,将看到 HEAD 到 HEAD~~ 提交如下 pick...reset 查到有问题提交ID后回到原分支 更多操作 git submodule 通过 Git 子模块可以跟踪外部版本库,它允许在某一版本库再存储另一版本库,并且能够保持2个版本库完全独立 git

    2.2K31

    Git 入坑到放不下

    Git api很多,其实平时项目中90%需求都只需要用到几个基本功能即可,所以本文将从 实用主义 和 深入探索 2个方面去谈谈如何在项目中使用 Git,一般来说,看完 实用主义 这一节就可以开始在项目中动手用...,完全没有历史记录新分支,当前源分支上所有的最新文件都还在,真是强迫症患者福音,这个新分支必须做一次 git commit 操作后才会真正成为一个新分支。...stash@{0} 移除栈其中一条记录 git stash pop Git检出最新保存一条记录,并将它从栈移除 git stash apply stash@{0} Git检出其中一条记录...合并过程可能需要先解决冲突,然后执行 git rebase --continue git rebase -i HEAD~~ 打开文本编辑器,将看到 HEAD 到 HEAD~~ 提交如下 pick...如果移动提交记录顺序,将改变历史记录排序。

    1.4K30

    保姆级Git入门教程,万字详解

    Git api很多,其实平时项目中90%需求都只需要用到几个基本功能即可,所以本文将从 实用主义 和 深入探索 2个方面去谈谈如何在项目中使用 Git,一般来说,看完 实用主义 这一节就可以开始在项目中动手用...这个命令会创建一个全新,完全没有历史记录新分支,当前源分支上所有的最新文件都还在,真是强迫症患者福音,这个新分支必须做一次 git commit操作后才会真正成为一个新分支。...stash@{0} 移除栈其中一条记录 git stash pop Git检出最新保存一条记录,并将它从栈移除 git stash apply stash@{0} Git检出其中一条记录...合并分支,这跟 merge 很像,还是有本质区别,看下图: 合并过程可能需要先解决冲突,然后执行 git rebase --continue git rebase -i HEAD~~ 打开文本编辑器...如果移动提交记录顺序,将改变历史记录排序。

    6.5K32

    Git学习-06

    2.不同点合并历史记录不同修改历史记录能力不同处理冲突方式不同使用场景不同下面是更详细比较 merge 和 rebase 区别:1.合并历史记录不同使用 merge 命令合并分支会创建一个新合并提交...2.修改历史记录能力不同使用 merge 命令合并分支时,每个分支提交都会被保留,而且可以轻松地撤销合并操作。...当你希望提交历史保持线性,避免出现不必要合并提交时,使用 rebase 命令。当你想要使得你提交历史更加清晰明了,尽可能避免出现分叉时,使用 rebase 命令。...拉取(Pull):远程仓库拉取最新代码并合并到本地。推送(Push):将本地提交推送到远程仓库。拉取请求(Pull Requests):在分布式开发环境,用于请求将你更改合并到主分支。...Git 命令行工具非常强大,同时也有图形用户界面(GUI)客户端,如 GitHub Desktop、SourceTree、GitKraken 等,使得非技术用户也能轻松使用 Git

    8210

    可以说是一门奶奶级Git入门教程了

    Git api很多,其实平时项目中90%需求都只需要用到几个基本功能即可,所以本文将从 实用主义 和 深入探索 2个方面去谈谈如何在项目中使用 Git,一般来说,看完 实用主义 这一节就可以开始在项目中动手用...这个命令会创建一个全新,完全没有历史记录新分支,当前源分支上所有的最新文件都还在,真是强迫症患者福音,这个新分支必须做一次 git commit操作后才会真正成为一个新分支。...stash@{0} 移除栈其中一条记录 git stash pop Git检出最新保存一条记录,并将它从栈移除 git stash apply stash@{0} Git检出其中一条记录...合并分支,这跟 merge 很像,还是有本质区别,看下图: 合并过程可能需要先解决冲突,然后执行 git rebase --continue git rebase -i HEAD~~ 打开文本编辑器...如果移动提交记录顺序,将改变历史记录排序。

    1.7K40

    Git命令和操作

    让我们使用命令git add -A添加文件。此命令会将所有文件添加到索引,这些文件位于目录尚未在索引更新。 ? 现在,新文件已添加到索引,您可以提交它们了。...我想一次提交目录所有更改。请参考下面的快照: ? 该命令将提交工作目录中所有更改快照,仅包括对跟踪文件修改,即,在历史记录某个时刻使用git add添加文件。...pull 命令git pull将更改远程存储库提取到本地存储库。它合并了本地存储库上游更改,这是基于Git协作常见任务。...至此,我希望您对基本Git命令有一个很好了解。现在,让我们更进一步,学习如何Git中进行分支和合并。 分支 Git分支不过是指向特定提交指针,Git通常更喜欢保持其分支尽可能轻量级。...Rebasing优点是它可以用于生成线性提交序列。如果进行了重设,则提交日志或存储库历史记录保持干净。 让我们看看它是如何发生。 ?

    1.8K10

    Git与SVN:区别与选择

    本文将深入探讨两者区别、各自优缺点,以及如何根据项目需求选择合适版本控制工具。 一、Git与SVN区别 分支管理:Git采用轻量级分支,通过文件快照实现,便于创建、切换和合并。...合并操作:Git合并操作相对简单,因为它使用快速三方合并策略。而SVN合并时可能出现大量冲突,需要人工介入解决。...历史记录Git历史记录更为完整,能够记录每一次文件变动,方便回溯和查看。SVN历史记录相对简单。 性能与效率:对于大型项目,Git分布式特性使其在速度上占有优势。...SVN在处理大型项目时可能会显得缓慢。 二、Git优缺点 优点: 高效分支管理:支持快速创建、切换和合并分支,有助于提高团队协作效率。...良好兼容性:SVN有广泛平台支持,Windows到Linux都有良好兼容性。 缺点: 分支管理不便:相比Git,SVN分支管理操作相对繁琐,不易于团队间协作。

    1.7K10

    git merge --ff--no-ff--ff-only 三种选项参数区别

    先说说什么是 Fast-forward 我们从一个正常开发流程来看看: 开发者小王接到需求任务, master 分支创建功能分支,git 指令如下: git checkout -b feature556...合并分支指针如下: ? 通常功能分支(feature556) 合并 master 后会被删除,通过下图可以看到,通过 Fast-forward 模式产生合并可以产生干净并且线性历史记录: ?...merge-non-fast-forward 如何手动设置合并模式 ?...我给出以下推荐: 如果你是小型团队,并且追求干净线性 git 历史记录,那么我推荐使用 git merge --ff-only 方式保持主线模式开发是一种不错选择 如果你团队不大不小,并且也不追求线性...git 历史记录,要体现相对真实 merge 记录,那么默认 git --ff 比较合适 如果你是大型团队,并且要严格监控每个功能分支合并情况,那么使用 --no-ff 禁用 Fast-forward

    1.9K20

    Git - Git Merge VS Git Rebase

    这会保持分支历史线性性,使得历史记录更加清晰。 历史记录清晰度: Git Merge:合并提交保留了分支完整历史记录,但可能会在分支历史引入多余合并提交,使得历史记录变得复杂。...Git Rebase:重写历史可以使分支历史更加清晰,因为它会将提交线性排列在一起,不会引入额外合并提交。这也可能会导致信息丢失,因为原始分支提交ID会更改。...使用场景: Git Merge:通常用于合并公共分支(如主分支)到特性分支或合并多个并行开发特性分支到主分支。它保留了分支完整历史记录,有助于跟踪分支演进。...Git Rebase:通常用于在本地分支上重新排列提交以保持分支历史线性性,以便在合并保持清晰。它也可以用于将自己分支与目标分支保持同步,以便更容易进行合并。...选择哪种方法取决于你更关注是保留完整历史记录还是保持历史记录清晰性。

    28630

    Git简介与工作原理:了解Git基本概念、版本控制系统和分布式版本控制工作原理

    4.1 仓库(Repository) Git仓库是存储项目所有文件、历史记录和元数据地方。它可以理解为项目的数据库,保存了项目创建到最新状态所有信息。...4.4 合并(Merge) 合并是将两个分支更改合并成一个新提交,以使两个分支历史记录保持同步。在合并过程Git会尝试自动合并更改,但有时可能会出现冲突,需要手动解决。...深入了解Git工作原理将帮助我们更好地理解Git如何跟踪文件变化和存储历史记录。...解决代码冲突是团队协作中常见任务,了解如何正确解决冲突对于保持项目的稳定和团队协作非常重要。及时解决冲突并保持代码一致性可以使团队开发更加顺利和高效。 10....这本书着重讲解团队协作如何使用Git进行版本控制,提供了实用工作流程和最佳实践。

    1.4K10

    Git Merge vs. Git Rebase: 选择正确合并策略

    虽然两者都是用于合并代码强大工具,但它们在不同情境下适用性和影响各不相同。本文旨在深入探讨这两种命令,并指导何时以及如何正确使用它们。...使用场景 git merge 特别适用于团队协作环境,其中保留完整历史记录和明确合并点是有价值。...这种情况下,你可以选择使用 git merge 或 git rebase 来解决冲突,每种方法影响略有不同。...2.影响: 这会在你历史创建一个新合并提交,显示你合并了远程更改。 它保留了两个分支完整历史,包括你本地更改和远程更改。...如果你倾向于保持一个清洁、线性历史记录,并且你团队对使用 git rebase 和解决可能出现冲突感到舒适,那么可以选择 git rebase。

    97510

    我看还有谁不动Git

    高效性:Git 设计可以快速地进行代码比较和合并,使得开发者可以快速迭代。 安全性:Git 使用 SHA-1 散列值来保证代码完整性,具有防篡改能力。...总的来说,Git 和 SVN 都是强大版本控制系统,各有优势。Git 更适合多个组织团队,以及需要快速发布和实验项目,而 SVN 则更适合大型团队,并且可以跨多个操作系统使用。...git add:将文件或目录添加到 Git 暂存区git commit:将暂存区修改记录提交到 Git 仓库git clone:远程 Git 仓库克隆一个副本到本地。...git pull:远程 Git 仓库拉取最新代码到本地仓库git push:将本地 Git 仓库修改推送到远程 Git 仓库git checkout:切换到指定分支或提交。...如果Git遇到了冲突,它会提示你手动解决冲突。你需要手动编辑有冲突文件,以解决冲突。 如果合并成功,Git会生成一个新合并提交。在这个提交消息Git会包含有关合并信息,如何合并分支等等。

    1.5K20

    Git和GitHub如何使用分支

    在之前关于 git 版本控制软件两篇教程,我们学习了 使用 git 基本命令,以及 如何使用 GitHub 来建立仓库并将我们项目代码推送到网站。...(在本教程,我们使用 GitHub,其他基于 git 版本控制平台工作方式相同)。 什么是 Git 分支?...GitHub 对所有人(个人开发者到拥有数百名开发人员大型商业项目)都有效全部原因是, main 工作始终是安全。...如何Git 中使用分支 与其直接在主分支上工作,每个人都会主分支创建新分支来进行实验、修复错误,以及进行一般性编辑、添加和更改。...然后(4)将它们合并回本地工作环境主分支。最后,我们(5)将所有内容推送到 GitHub,以便我们项目的所有版本在任何地方都保持一致!

    13410

    三年 Git 使用心得 & 常见问题整理

    # 将当前分支指针指向为指定 commit(该提交之后提交都会被移除),保持暂存区和工作区不变 $ git reset --soft # 将当前分支指针指向为指定...] # 当你在克隆这样项目时,默认会包含该子项目的目录,该目录还没有任何文件 # 初始化本地配置文件 git submodule init # 当前项目中抓取所有数据并检出父项目中列出合适提交...当远程分支和本地分支发生冲突后,git 保持合并状态,你如果没有去解决完所有的冲突,那么 git 会一直保持这个状态,你就无法再提交代码。只有先解除合并状态后,才能继续提交。...合并代码来看,结果都是一样,区别就在于 --no-ff 会让 git 生成一个新提交对象。为什么要这样?...Git」 「如何大型项目中使用Git子模块开发」 「Github API 调用 (v3)」 www.jianshu.com/p/a0c7d0482… developer.github.com/v3/guides

    2.8K50

    通过 41 个 问答方式快速了解学习 Git

    Git Flow 定义了一个项目发布分支模型,为管理具有预定发布周期大型项目提供了一个健壮框架,是由 Vincent Driessen 提出一个 git 操作流程标准、解决当分支过多时 , 如何有效快速管理这些分支...11.当在其他分支添加文件仍然在工作分支显示为未跟踪或修改时,如何重置分支 这通常是“工作索引”不干净时切换分支结果。 在 git 没有内置方法来纠正这一点。...创建 release 分支对于将多个分支工作分组在一起并将它们合并到主分支之前进行整体测试是有益。 由于源分支保持独立和未合并,所以在最后合并拥有更大灵活性。 26....如何 master 获取一些提交?比方说,我不想执行最后一次提交,而是进行一次 rebase。...假设 master 分支是咱们主分支,咱们不希望有选择地历史记录中提取提交,这会以后引起冲突。 咱们想要 merge 或 rebase 分支所有更改。

    1.4K20
    领券