git修补历史提交

2024-01-10 02:10
文章标签 历史 提交 git 修补

本文主要是介绍git修补历史提交,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.使用修补命令git commit --amend,用于对最新的提交进行重新提交以修补错误的提交说明或者错误的提交文件。补提交命令实际上相当于执行了下面两条命令:

git reset --soft HEAD^
git commit -e -F .git/COMMIT_EDITMSG /* 编辑从 -F 指定文件中获取提交消息 */

引用和暂存区会回退到上一次提交之前,从COMMIT_EDITMSG(文末有解释)获取提交消息并开始编辑。
2.先使用git reset HAED^^将HEAD指向待修复提交的前一个提交并保持工作区不变,这时就对工作区的文件或提交信息进行修改并提交,可以用实现对提交的压缩或拆分。
3. rebase -i交互式变基,可以修改git提交的过程,可以实现对提交重排、压缩、拆分、丢弃等操作。
例如,当我们发现最近5次提交都有些不尽人意,这个时候我们只要对5次提交的前一次提交进行伪变基git rebase -i HEAD~6,就可以进入交互式变基界面,可以对提交列表进行编排。
在这里插入图片描述
常用选项参数:
pick 应用此提交,默认值
reword应用此提交,可以修改提交说明
edit应用此提交,但是会在应用时停止,会打开外部编辑器,可以对其编辑
squash压缩,将此标记的提交和上一次提交压缩为一个提交
fixup类似squash动作,但是此提交的提交说明被丢弃,即已提交的说明被丢弃
drop移除此提交
提交列表的顺序可以编排,从该改变提交顺序
4.用git commit --fixup/--squash以及git rebase -i --autosquash修改历史,这种方法和上述第3种类似,只不过操作顺序上有点区别而已,这种方式是先提交,后修改历史;提交过程种标记上,然后再批量整理提交历史。--fixup--squash参数对新创建的提交来进行标记,新提交会包含前缀"fixup!"、“squash!”,这样的提交在提交整理时将会融合到它所修复的提交当中去。
git commit --fixup=<commit>创建对<commit>提交进行修正的提交
gti commit --squash=<commit>创建对<commit>提交压缩的提交
在提交了一系列修复提交之后,就可以使用git rebase -i --autosquash自动进行提交的修复。
git目录
.git/根目录
.git/hooks/存放一些shell脚本
.git/info/exclude仓库的一些注释信息
.git/logs/存放所有更新的引用记录
.git/objects/存放所有的Git对象,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名。
.git/refs/存放了所有引用内容
.git/refs/heads/本地引用
.git/refs/remotes/远端引用
.git/refs/tags/标签引用
.git/CHERRY_PICK_HEAD使用cherry-pick命令会更新此commit
.git/COMMIT_EDITMSG最新一次commit所附带的描述
.git/config仓库的配置信息
.git/description仓库的描述信息
.git/FETCH_HEAD使用fetch命令后会更新此commit,用于组合操作中的引用暂存,pull会先fetch再merge
.git/HEAD当前检出的commit
.git/index暂存区(二进制文件)
.git/MERGE_HEAD使用merge命令会更新此commit,对应合并进当前分支的commit
.git/ORIG_HEAD指向操作前的Head,用于某些命令的回退
.git/packed-refs存放git运行垃圾回收机制后的一些引用,用于提高性能,垃圾回收不影响正常的Git功能,refs/文件夹下的一些内容有可能会被压缩到该文件内
.git/REBASE_HEAD使用rebase命令会更新此commit

切记:不要改变共享的历史记录

这篇关于git修补历史提交的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/589201

相关文章

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

MySQL中的两阶段提交详解(2PC)

《MySQL中的两阶段提交详解(2PC)》:本文主要介绍MySQL中的两阶段提交(2PC),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录引言两阶段提交过程sync_binlog配置innodb_flush_log_at_trx_commit配置总结引言在Inn

Python实现剪贴板历史管理器

《Python实现剪贴板历史管理器》在日常工作和编程中,剪贴板是我们使用最频繁的功能之一,本文将介绍如何使用Python和PyQt5开发一个功能强大的剪贴板历史管理器,感兴趣的可以了解下... 目录一、概述:为什么需要剪贴板历史管理二、功能特性全解析2.1 核心功能2.2 增强功能三、效果展示3.1 主界面

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行