Git是目前IT行业使用率最高的版本控制系统,相信大家在日常工作中也经常使用,每次Git提交都会包含提交信息,常用的包括说明、提交人和提交时间等,此篇文章主要向大家介绍下如何修改这些信息,这些命令在正常使用时可能不常用,但还是建议收藏以备不时之需。

新提交

指定提交信息

在使用git commit命令时,通过-m或者--message参数指定本地提交的信息,示例如下:

git commit -m "<提交信息>"

指定提交日期

正常的git提交会默认使用当前时间,但在提交时可以通过--date参数来指定提交时间,不过时间内容的格式与日常使用的格式不一致,此处可以通过git log查看历史后复制出来然后进行修改。

git commit -m "<提交信息>" --date "Thu Jun 29 06:59:36 2023 +0800"



可以看到通过手动指定后第二次提交的时间在第一次提交之前,这与正常提交是不相符的。修改时间可能会导致git记录错乱,仅建议在明确需要修改时间的场景下使用。

指定提交人

正常在提交时git会默认使用当前项目设置的作者信息,如果未设置则使用本机git全局配置,但在提交时可以通过--author参数指定提交人,参数格式必须为name<email>

git commit -m "change author" --author "aotian<7610aotian@sina.com>"



可以看到最新一次的提交作业已经与前两次的不一致了。

追加提交

在工作中偶尔也会遇到提交完了以后发现漏下了某个文件的问题,再提交一次虽然可以解决,但git提交记录会比较难看,强迫症患者看了那是浑身难受,其实我们可以通过追加的方式进行处理,这样可以仅保留同一个记录。追加提交时也可以使用以上提到的参数修改提交信息。

git commit --amend



可以看到ammend之后最近一次提交的信息已经被修改,但作者和时间并没有变化。

历史提交

修改提交说明

​如果我们有整理git提交记录的习惯,那工作中肯定需要去修改历史提交,此时我们需要先回退到要修改的提交之前,然后进行修改,还是上边的例子,如果我们需要修改第二次提交,那么我们需要先回退到第一次提交。

git rebase -i d3dabbe3dce8717b264bba23ee78f19c58bb6fed

执行后会打开一个临时文件,在文件头部会列出当前提交后续所有的提交(请注意这个列表的顺序是按照提交时间顺序排列的),每个提交行首的pick字段代表需要执行的操作,具体选项已经在下方注释中进行了说明,常用的包括默认的pick,修改时使用的rewordedit,二者区别是reword提交后会自动合并,所以只能编辑提交信息,而edit提交后会停留在修改的提交,之后可以通过ammend修改提交内容,此处我们仅需要修改提交信息,所以将第一行pick修改为reword,之后保存即可。这一部分的操作会因git设置的不一致可能有所差异,有的命令行里的vim,有的是外部的编辑器(例如Visual Studio Code等)。



保存后会自动打开另外一个临时文件,这个文件里展示的就是上一步中指定的要修改的提交,文件第一行就是提交信息,修改后保存即可完成修改,如果提交信息内容为空则会中止此次修改,具体内容如下图:



修改后执行git log查看提交记录即可发现中间的内容已经被修改

修改作者或日期

在上一部分我们修改了提交信息,中间提到过rewordedit的区别,而此处我们修改作者或提交日期则需要使用到edit,同样使用git rebase -i回退到要修改的内容之前,然后在编辑临时文件时将第一行修改为edit,然后保存,之后我们会看到如下信息:



此时提交停在了第二个提交处,也就是我们要修改的提交,在控制台的提示中可以看到通过git rebase --continue可以回到最新提交,而我们要修改作者或提交日期则需要使用git commit --amend,这个命令同样可以使用--date--author参数。

git commit --amend --author "aotian<7610aotian@sina.com>" --date "Thu Jun 30 16:59:36 2023 +0800"

执行后会打开临时文件确认提交信息,直接保存即可,保存后执行git rebase --continue回到最新提交,然后执行git log查看提交信息即可发现中间的提交已经被修改,且时间晚于排在它后面的提交。

【干货向】我想试试教会你如何修改Git提交信息的更多相关文章

  1. vue+node+mongoDB 火车票H5(三)---git提交时忽略不想提交的文件

    想要把项目通过git提交到GitHub上,但提交时并不想提交node_modules文件夹,这个文件夹太大 git 提交代码时不提交配置文件夹node_modules 在.gitignore文件中添加 ...

  2. 【干货干货】hyperledger fabric 之动态添加组织/修改配置 (Fabric-java-sdk) 下

    我们接着上一节来讲: 在熟悉动态增加组织或修改配置的步骤后,我们就可以使用java的api来完成动态增加组织或修改配置了: 废话不多说,直接上干货: 1,预制条件 org3的证书以及组织3的MSP详情 ...

  3. git stash--在不想commit的情况下进行git pull

    公司的git开发模式是“主干发布,分支开发”,大多数情况下是多个开发在同一dev分支上进行开发,因此需要经常pull代码,如果本地工作区存在代码修改,那么pull肯定失败,提示需要先commit已修改 ...

  4. IDEA忽略文件,防止git提交不想提交的文件

    IDEA忽略文件,防止git提交不想提交的文件 方法一(只对没有add到仓库的文件有效): 方法二(只对没有add到仓库的文件有效): 在IDEA中安装.ignore插件.创建好了之后: 安装.git ...

  5. 教会舍友玩 Git (再也不用担心他的学习)

    舍友长大想当程序员,我和他爷爷奶奶都可高兴了,写他最喜欢的喜之郎牌Git文章,学完以后,再也不用担心舍友的学习了(狗头)哪里不会写哪里 ~~~ 一 先来聊一聊 太多东西属于,总在用,但是一直都没整理的 ...

  6. 干货分享:想要写好Proposal,这四个问题必须解决

    当大家确定了毕业论文选题之后,下一步就是着手写开题报告,也就是proposal.开题报告或者说是研究计划要回答四个问题:为什么这个问题重要,为什么这个问题很难解决,为什么现在要考虑解决这个问题,为什么 ...

  7. C/C++编程笔记:C语言开发球球大作战(源码分享),你想试试吗?

    游戏背景 <球球大作战>是Superpop一款自主研du发的免费手机网络游戏. 以玩家间的实时互动PK产生游戏乐趣为设计宗旨,通过简单的规则将玩家操作直接转化为游戏策略,体验智谋碰撞的战斗 ...

  8. git push完代码 想撤回 并保留之前修改的代码 / 修改完代码 发现分支不对 想切换分支 /恢复已修改的文件

    git reset --soft xxxx // xxxx是版本号 回退 git stash //保留当前分支修改的代码 git checkout xxx //切换到xxx分支 git stash l ...

  9. 轻松六步教会你如何修改system.img.ext4文件

    http://bbs.xiaomi.cn/thread-2943923-1-1.html 希望更多的ROM作者,看了此教程后,学会ROM制作,给大家带来更多更好的ROM 首先下载如下包 Linux U ...

  10. webservice为什么不能用List参数,而只能用数组代替,我想是否因为List没有具体的类型信息,但用泛型的List(如:List<customer>)为什么也不行。如果用作参数的类中含有List<T>字段该如何处理?webservice参数是否支持

    转自:https://social.microsoft.com/Forums/zh-CN/aded4301-b5f1-4aa6-aa46-16c46a60d05e/webservice20026201 ...

随机推荐

  1. [数据库]MySQL之备份与恢复【未完待续】

    1 恢复 方式一 source sqlFile.sql 登陆MySQL 创建数据库db (create database db;) 进入/使用 数据库db (use db;) 将要导入的sql文件放到 ...

  2. JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

    一.什么是BeanShell? BeanShell是用Java写成的,一个小型的.免费的.可以下载的.嵌入式的Java源代码解释器,JMeter性能测试工具也充分接纳了BeanShell解释器,封装成 ...

  3. YII框架(1.7&2.0基础版&2.0高级版)应用程序模板安装方法

    YII1.7 安装方法: ① 鼠标右键我的电脑图标-> 选择弹出窗的"属性"选项-->点击"高级"选项卡->在选项卡下面找到"环境变 ...

  4. 扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性查找法

    1.算法描述 在数组中逐个查找元素,即遍历. 2.上一篇文的实现结果 在 扎实打牢数据结构算法根基,从此不怕算法面试系列之003 week01 02-03 代码实现线性查找法中,我们实现了如下代码: ...

  5. Java中方法的定义及注意事项

    一.方法 什么是方法: 方法(method)是程序中最小的执行单元 实际开发中,什么时候用到方法: 重复的代码.具有独立功能的代码可以抽取到方法中 实际开发中,方法有什么好处: 可以提高代码的复用性 ...

  6. Qt+MySql开发笔记:Qt5.9.3的msvc2017x64版本编译MySql8.0.16版本驱动并Demo连接数据库测试

    前言   mysql驱动版本msvc2015x32版本调好, mysql的mingw32版本的驱动上一个版本编译并测试好,有些三方库最低支持vs2017,所以只能使用msvc2017x64,基于Qt5 ...

  7. 一文理解TS泛型

    当我们在编写 TypeScript 代码时,经常会遇到需要通用(Generic)的情况,这时候,泛型就是我们的好帮手了.在本篇文章中,我们将深入介绍 TypeScript 泛型的概念以及如何使用. 什 ...

  8. Python_16 配置文件与封装

    一.查缺补漏 1. ctrl + alt +L 规范格式 2. Python 使用 ini&yaml 配置文件 http://testingpai.com/article/1621245437 ...

  9. 音视频八股文(12)-- ffmpeg 音频重采样

    1重采样 1.1 什么是重采样 所谓的重采样,就是改变⾳频的采样率.sample format.声道数等参数,使之按照我们期望的参数输出. 1.2 为什么要重采样 为什么要重采样?当然是原有的⾳频参数 ...

  10. 2023-03-26:给定一个二维数组matrix, 每个格子都是正数,每个格子都和上、下、左、右相邻。 你可以从任何一个格子出发,走向相邻的格子, 把沿途的数字乘起来,希望得到的最终数字中,结尾的0

    2023-03-26:给定一个二维数组matrix, 每个格子都是正数,每个格子都和上.下.左.右相邻. 你可以从任何一个格子出发,走向相邻的格子, 把沿途的数字乘起来,希望得到的最终数字中,结尾的0 ...