首页
学习
活动
专区
工具
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 注意: 提交冲突只会出现在三路合并中。在快速向前合并中,我们不可能出现冲突的更改。

98820
  • 肝了几夜的 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~~ 打开文本编辑器...如果移动提交记录的顺序,将改变历史记录中的排序。

    29130

    可以说是一门奶奶级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.8K40

    保姆级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.8K32

    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栈中检出其中一条记录...合并过程中可能需要先解决冲突,然后执行 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 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的分支管理操作相对繁琐,不易于团队间的协作。

    2.3K10

    从层到功能:探索 .NET 中的垂直切片体系结构

    ReserveBookQuery.csUserRepository.GetUsers() 解决方案:保持切片的整洁但相互连接 我们希望保持 slice 的独立性,但有时 slice 需要相互通信。...示例: “Books” 切片用于在有人借书时获取用户信息。UserService 2. 事件驱动的通信 切片发布和订阅事件类似于在整个应用程序中触发操作,同时保持松散耦合。...BookBorrowedEvent 该图显示了在运行 后在共享内核中触发 的 书籍功能。Users 功能侦听此事件并更新 中的用户历史记录。...即时聚焦:开发人员只关注该功能,减少上下文切换并允许更快的迭代。 2. 减少合并冲突 隔离的功能切片:由于切片是自包含的,因此接触相同文件的开发人员较少,从而减少了大型团队中发生合并冲突的机会。...代码复制与重用 受控重复:您可能会遇到需要在多个切片中出现相同逻辑的情况。虽然一些重复是可以接受的,但请避免过度依赖共享服务以保持切片独立性。

    8510

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

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

    1.7K10

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

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

    1.1K10

    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

    2.1K20

    Git - Git Merge VS Git Rebase

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

    30230

    我看还有谁不动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.6K20

    在Git和GitHub中如何使用分支

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

    16710

    三年 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
    领券