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

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.kler.cn/a/373044.html

相关文章:

  • 快速入门HTML
  • Leetcode224 -- 基本计算器及其拓展
  • Zig 语言通用代码生成器:逻辑,冒烟测试版发布二
  • @tarojs/components 和 taro-ui 中的组件之间的区别
  • 【Stable Diffusion - Ai】小白入门必看(涂鸦、涂鸦重绘、局部重绘和重绘蒙版篇)!真材实料!不卖课!!!
  • Web3的去中心化社交网络:区块链技术如何改变互动方式
  • Linux 中,flock 对文件加锁
  • 智能听诊器:宠物健康监测的新纪元
  • [0260].第25节:锁的不同角度分类
  • 【简道云 -注册/登录安全分析报告】
  • 【STM32 Blue Pill编程实例】-I2C主从机通信(中断、DMA)
  • 1.STM32之定时器TIM---第一部分(基本定时器)(功能最强大结构最复杂的一个外设)(实验基本定时功能)-----定时器定时中断(利用内部时钟72M)
  • OpenCV视觉分析之目标跟踪(7)目标跟踪器类TrackerVit的使用
  • VueRouter引入步骤
  • QT——记事本项目
  • QT 实现自定义开机加载动画一
  • 网络准入控制
  • QNAP威联通NAS第三方动态域名解析之docker部署DDNS GO
  • CPU算法分析LiteAIServer视频智能分析平台噪声检测功能在视频监控中的应用与优势
  • 图像处理 -- 白平衡处理简介
  • 企业物流管理数据仓库建设的全面指南
  • 在 Ubuntu 22.04 LTS 上安装 NVM (Node Version Manager) 管理和切换不同版本的 Node.js npm
  • 聚焦汽车智能化与电动化︱AUTO TECH 2025 华南展,以展带会,已全面启动,与您相约11月广州!
  • Linux 服务器中完整导出MySQL的某个库
  • PHP + Windows小皮面板 + VScode 安装教程
  • 【Linux】安装并配置 Microsoft SQL Server 数据库(Ubuntu 22.04)