Git 中允许修改已经提交的commit,包括最近一次提交以及最近多次提交。修改最近多次提交比较复杂,以后会有介绍。本文主要是解释下开发过程中遇到频次比较高的修改最近一次提交amend命令。

从一个简单的例子入手。

# 初始化一个git项目
git init
# 添加一个文件,并输入一些内容
vim a.txt

之后提交当前文件

# 暂存
git add .
# 提交
git commit -m "v1"

可以看到当前的状态,我这里使用了可视化的工具sourcetree

接着,比如我有做了一些调整,再一次提交V2。

结果没成想,手一抖,2写成了3。真是惭愧,咋整呢?其实有两种方法:

  • 其一是reset到上一次提交,然后重新提交。
  • 其二是本文介绍的amend

amend使用起来非常简单:

git commit --amend

输入以上命令之后,命令行窗口会进入到交互式的界面。你完全可以理解为就是vim的编辑界面

如图所示,按以下步骤操作(和vim一样):

  1. i进入编辑模式
  2. 修改提交信息
  3. esc退出编辑模式
  4. shift+; 然后再输入wq回车退出

此时就已经完成了修改message的操作


怎么样是不是很简单。但是我还要扩展一下…

第一,不知道细心的同学是否已经发现,两次提交的id发生了变化。那么这会有什么影响呢?其实如果你代码没有Push,那么问题不大,这也正是amend优雅的使用场景,即代码还未push到远端。但如果已经push到远端,那么会产生这样一种情况:

以上相当于你本地和远端已经产生分支,需要合并。也就是这一次amend之后,你是推不上代码的。你不得不pull代码下来后进行合并,再次提交一次,但这实在有违初衷。

don’t amend your last commit if you’ve already pushed it.

第二,如果你不仅想修改提交信息,也需要提交内容进行修改,也同样是没有问题的。毕竟这个命令本身就是执行一次提交git commit。这里的例子见下文。

最后,如果如只想提交文件的变动而不是提交信息的修改。那么可以使用如下命令

git commit --amend --no-edit


如上,我将a.txt文件做了一些调整。然后直接执行以上的命令,那么将得到以下的结果。

也就是我既将修改的代码提交了,也没有添加任何描述。但复用了以前的描述。

好了,基本上涉及到amend的参数就是这些了,如果有什么其他的问题,欢迎评论区指出,我及时调整。

Git amend:修改最近一次提交相关推荐

  1. git commit --amend 修改最近一次提交

    修改上一次提交的代码 如果您使用的 Gerrit 管理的代码,不必 abandon 本次提交,不必 reset,直接修改出问题的文件, 修改好代码之后执行 git commit -a --amend ...

  2. git常用命令(克隆、分支、tag标签、推送、日志查看,常用命令总结)、将本地代码第一次提交到远程git仓库、过滤掉不提交的内容

    1.1 克隆Git代码 $ git clone http://xxxx.git --branch master 为自己的写新项目添加git版本控制,进入项目目录执行以下命令: git init . 2 ...

  3. 基于Git rebase修改历史提交信息

    说明 关于为什么要修改历史提交的作者信息和提交信息,我就不多说了,也许是项目规范要求,也许是自己强迫症,总之是有这样的需求. 开始之前先说明一下: 本文介绍的方法只适用于本地仓库,提交到远程以后,我没 ...

  4. 通过 $ git commit --amend 修改 commit 的 message

    $ git commit --amend 代码场景 --amend 代码场景 在提交代码的时候,commit 的时候 -m 后的 msg 写错了 $ git commit --amend -m '新的 ...

  5. 【Git】Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 feature1 分支并提交 | 修改 master 主版本并提交 )

    文章目录 一.创建并切换分支 git switch -c feature1 二.修改 feature1 分支并提交 三.修改 master 主版本并提交 一.创建并切换分支 git switch -c ...

  6. git 将暂存区文件提交_Git知识

    Git 快速开始 一. 下载git 地址 : https://git-scm.com/downloads 二.git基础 1.git config 相关命令 # local 只对某一个仓库有效git ...

  7. Git之深入解析如何重写提交历史

    一.Git 的提交原则 了解了管理或者维护 Git 仓库.实现代码控制所需的大多数日常命令和工作流程,尝试跟了踪和提交文件的基本操作,并且掌握了暂存区和轻量级地分支及合并的威力.如果想进一步对 Git ...

  8. Git撤销修改、回退版本相关命令

    取消对文件的修改.还原到最近的版本.废弃本地做的修改. git checkout file.txt# 如果是当前项目的所有修改过的文件 git checkout . 取消已经暂存的文件,即撤销先前&q ...

  9. Git如何修改commit信息

    一.git 如何修改最近一次的commit信息 1. git commit --amend        2. 进入vim操作界面之后, 点击字母键 i 然后进入INSERT模式,然后对commit信 ...

  10. Git---git commit --amend -m ‘信息‘ 实现追加提交为一次提交

    番外:跳过使用暂存区域 git commit -a -m '信息'   ==>>(等价于) git add .  &&  git commit -m '信息' 有时候我们提 ...

最新文章

  1. python精彩编程200例百度_Python趣味编程与精彩实例
  2. ios php 序列化,PHP常见的序列化与反序列化操作实例分析
  3. 苹果ipa签名工具免越狱下载_苹果iphone免越狱使用iTunes 一键下载旧版本app
  4. 【直播回放】新手如何入门并学习计算机视觉?
  5. 独立成分分析 ( ICA ) 与主成分分析 ( PCA )再解析
  6. [转]在ROS下使用zeroconf配置多机通信
  7. 利用matlab guide制作简易计算器
  8. 作者:冯是聪(1973-),男,博士,北京明略软件系统有限公司联合创始人兼CTO。...
  9. python3 socketserver源码解析_解读python中SocketServer源码
  10. Matplotlib 中文用户指南 7.1 交互式导航
  11. Android 应用开发(18)---在运行时请求权限
  12. 红包封面发货平台卡密系统 全新红包封面平台可搭建分站独立后台的源码
  13. 将 .json 格式 转换成 .xml格式
  14. 勒索病毒数据库恢复 勒索病毒解密恢复 中勒索病毒解密恢复数据
  15. c语言各类型数据混合运算
  16. 怎样在计算机上登录qq音乐,如何使用手机控制电脑qq音乐播放
  17. mysql数据库默认密码在哪看_怎么查看mysql数据库的登录名和密码
  18. 须知年少凌云志 曾许人间第一流
  19. JAVA+MySQL 图书馆借阅信息管理系统
  20. 电脑公司GHOST WIN7 装机旗舰版 2013 09

热门文章

  1. python小学口算题库生成器_口算题自动生成的小程序-L.A.SMILE自家用软件-口算题生成下载20060207-西西软件下载...
  2. 简单的外网映射工具natapp操作
  3. 婚纱租赁APP开发功能模块解析
  4. 【mcuclub】温度传感器DS18B20
  5. 一个游戏出中文版需要通过什么审核?(转自知乎)
  6. 主分区、扩展分区、逻辑分区和活动分区的区别
  7. 统计|(可/无)重复双因素方差分析一般步骤及分析表
  8. 如何将 Excel 数据分组后按次序横向排列
  9. 微信Log日志分析——初步探索
  10. Android手机无法上网怎么办,为什么android手机已经连接WIFI还是不能上网?