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

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus