当前位置: 首页 > news >正文

Git 创建新的分支但清空提交记录

有时候需要创建新的分支,但是原有分支的提交非常多,不好区分哪些是创建分支之后的提交。

那么就把原分支的提交全部去掉


要从 分支1 创建 分支2,并确保 分支2 不包含任何提交历史,同时文件与 分支1 的最后一次提交一致,可以使用孤立分支(orphan branch)或重置方法。不过,你希望的是保留文件的状态,而不是提交历史。

# 确保当前在分支1
git checkout 分支1 # 创建一个新的孤立分支分支2
git checkout --orphan 分支2 # 将当前分支1的文件状态复制过来
git rm -rf .
git checkout 分支1 -- .# 提交当前文件状态
git commit -m "Initial commit on branch 2 with files from branch 1"

解释

  1. git checkout 分支1

    • 切换到 分支1,确保你从正确的分支开始。
  2. git checkout --orphan 分支2

    • 创建一个名为 分支2 的孤立分支。此时,分支2 没有任何提交历史。
  3. git rm -rf .

    • 删除当前工作区中的所有文件。由于是孤立分支,这一步是必要的,以确保在添加新文件时不会保留旧的内容。
  4. git checkout 分支1 -- .

    • 从 分支1 中检出所有文件,并将其放入当前工作区。这时,分支2 的文件内容与 分支1 完全一致。
  5. git commit -m "Initial commit on branch 2 with files from branch 1"

    • 提交当前文件状态,创建 分支2 的第一次提交。

合并支持

现在,分支2 的提交历史是空的,只有你刚才的初始提交,且文件内容与 分支1 一致。之后,分支2 可以正常进行合并操作。这种方法可以实现你所需的效果:新分支没有旧的提交历史,但文件状态保持一致。


git checkout 分支1 -- . 这个命令用于将 分支1 的文件内容检出到当前工作目录。具体来说,这个命令的组成部分可以解释如下:

各部分的意义

  1. git checkout

    • 这是一个 Git 命令,用于切换分支、恢复文件等。
  2. 分支1

    • 这是你要从中检出的分支的名称。在这个例子中,是指 分支1
  3. --

    • -- 是一个分隔符,用于告诉 Git 后面的内容是文件或路径,而不是分支名。这在处理分支名和文件名可能冲突时特别有用,确保 Git 正确理解命令。
  4. .

    • . 表示当前目录,实际上代表的是当前工作区中的所有文件和文件夹。使用 . 可以指定检出当前目录及其子目录中的所有文件。

整体作用

因此,git checkout 分支1 -- . 的整体作用是将 分支1 中的所有文件(包括子目录中的所有文件)检出到当前工作目录,从而使当前工作目录的文件内容与 分支1 中的内容一致。

这条命令的实际效果是在不切换分支的情况下,将 分支1 的最新文件内容复制到当前分支的工作目录。这样,当前分支(在本例中是孤立分支 分支2)的文件状态就会匹配 分支1

http://www.lryc.cn/news/473962.html

相关文章:

  • SQL PRIMARY KEY
  • 软件测试学习笔记丨Flask操作数据库-对象与数据模型
  • IntelliJ IDEA使用 MybatisX-Generator 插件 自动生成Entity+Mapper+Mapper.xml等代码
  • vue中如何为不同功能设置不同的默认打印设置(设置不同的打印机)
  • 经纬恒润INTEWORK-VBA新版本正式发布
  • 金蝶云数据集成至MySQL的高效解决方案
  • Day02 C++ 环境设置
  • AQS是什么
  • Spring IOC容器简介
  • 【backstopjs】入门安装环境
  • LocalDate 类常用方法详解(日期时间类)
  • kmp desktop实现excel预览
  • OB_GINS_day3
  • 【Python3】【力扣题】405. 数字转换为十六进制数
  • 记录一次企业外部通过ssh 连接数据库的事DBeaver
  • 中聚企服:中聚AI女娲大模型,企业难题迎刃而解!
  • 对镜像精简
  • 老电脑不能装纯净版windows
  • 在Python中实现一个简单的社交媒体应用
  • pytest高版本兼容test_data[“log“] = _handle_ansi(“\n“.join(logs))错误
  • Redis技术入门与实践指南
  • 如何一键完成20个Oracle实例运维脚本部署
  • 【C++刷题】力扣-#598-区间加法 II
  • 优雅的LUA数据记录方法-serpent序列化+LUA Table
  • 初始JavaEE篇——多线程(4):wait、notify,饿汉模式,懒汉模式,指令重排序
  • Apache Solr 身份认证绕过导致任意文件读取漏洞复现(CVE-2024-45216)
  • C#整合Ollama实现本地LLMs调用
  • C++基于opencv的视频质量检测--图像抖动检测
  • Cuda By Example - 11 (Texture Memory 2-D)
  • Go匿名结构体使用场景