从大型git历史记录中切片,但保持合并/重设基址的能力,可以通过以下步骤实现:
- 首先,使用git命令克隆完整的git仓库到本地机器上。例如,使用以下命令克隆一个名为"myrepo"的仓库:
- 首先,使用git命令克隆完整的git仓库到本地机器上。例如,使用以下命令克隆一个名为"myrepo"的仓库:
- 进入克隆的仓库目录:
- 进入克隆的仓库目录:
- 使用git命令查看仓库的历史记录,获取需要切片的提交范围。例如,假设需要切片的提交范围是从commit A到commit B:
- 使用git命令查看仓库的历史记录,获取需要切片的提交范围。例如,假设需要切片的提交范围是从commit A到commit B:
- 通过查看提交的哈希值和提交信息,确定需要切片的起始和结束提交。
- 创建一个新的分支来保存切片后的历史记录。例如,创建一个名为"slice"的分支:
- 创建一个新的分支来保存切片后的历史记录。例如,创建一个名为"slice"的分支:
- 切换到新创建的分支:
- 切换到新创建的分支:
- 使用git命令进行交互式重写历史记录。在这个步骤中,你可以选择保留或删除特定的提交,以达到切片的目的。例如,使用以下命令来重写历史记录并保留从commit A到commit B的提交:
- 使用git命令进行交互式重写历史记录。在这个步骤中,你可以选择保留或删除特定的提交,以达到切片的目的。例如,使用以下命令来重写历史记录并保留从commit A到commit B的提交:
- 在打开的交互式界面中,将需要保留的提交前面的"pick"改为"edit",然后保存并关闭文件。
- git会在每个需要编辑的提交处停下来,你可以对提交进行修改或删除。如果你想保留提交,可以直接继续,如果你想删除提交,可以使用以下命令:
- git会在每个需要编辑的提交处停下来,你可以对提交进行修改或删除。如果你想保留提交,可以直接继续,如果你想删除提交,可以使用以下命令:
- 这将撤销最后一个提交,但保留更改。
- 重复步骤7,直到你完成了对历史记录的切片。
- 完成切片后,使用以下命令将切片后的历史记录推送到远程仓库:
- 完成切片后,使用以下命令将切片后的历史记录推送到远程仓库:
- 这将把切片后的历史记录推送到名为"slice"的分支上。
通过以上步骤,你可以从大型git历史记录中切片,同时保持合并/重设基址的能力。请注意,这个过程是对git历史记录进行修改,因此在执行此操作之前,请确保你了解并理解对历史记录进行修改可能带来的潜在风险,并在进行任何修改之前备份你的仓库。