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. Java设计模式 —— 享元模式

    14 享元模式 14.1 享元模式概述 Flyweight Pattern: 运用共享技术有效地支持大量细粒度对象的复用. 当系统中存在大量相同或相似的对象时,它通过共享技术实现相同或相似的细粒度对象 ...

  2. MySQL(十四)分析查询语句Explain 七千字总结

    分析查询语句:EXPLAIN 1概述 ​ 定位了查询慢的SQL之后,就可以使用EXPLAIN或者DESCRIBE工具做针对性的分析查询.两者使用方法相同,并且分析结果也是相同的. ​ MySQL中有专 ...

  3. 如何使用Webpack工具构建项目

    起步 webpack 用于编译 JavaScript 模块.一旦完成 安装,你就可以通过 webpack CLI 或 API 与其配合交互.如果你还不熟悉 webpack,请阅读 核心概念 和 对比, ...

  4. Jquery实现复选框的选中和取消

    复选框的选中与取消 我在网上看了好多关于这个问题的解答,好多都是一两个按钮的触发事件,有的甚至没有任何效果,经过自己的调试发现这个方法好用一点: 首先我在页面上添加了这样一个复选框 我的复选框是动态加 ...

  5. 笔记:C++学习之旅 ---string 类、vector和迭代器

    string 类 #include <iostream> #include <string> using namespace std; int main() {         ...

  6. 高阶函数_函数柯里化 以及 setState中动态key

     使用柯里化: 1 state = { 2 username: "", 3 password: "", 4 }; 5 render() { 6 return ( ...

  7. Python学习——Juptyer Notebook快捷键的使用

    1. 运行当前Cell:Ctrl + Enter 2. 运行当前Cell并在其下方插入一个新的Cell:Alt + Enter 3. 运行当前Cell并选中其下方的Cell:Shift + Enter ...

  8. #Python 利用pivot_table,数据透视表进行数据分析

    前面我们分享了,利用python进行数据合并和连接,但是工作中,我们往往需要对数据进一步的聚合或者运算,以求最后的数据结果. 今天我们就来学习一下利用pandas模块,对数据集进行数据透视分析. pi ...

  9. 2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须下降一点。 1) 如果只有一个大炮,返回

    2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度. 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须下降一点. (1) 如果只有一个大炮,返 ...

  10. golang调用sdl2,播放pcm音频,报错signal arrived during external code execution。

    golang调用sdl2,播放pcm音频,报错signal arrived during external code execution. win10 x64下测试成功,其他操作系统下不保证成功. 采 ...