当前位置:首页 > 编程技术 > 正文内容

git commit 命令详解

yc8881年前 (2022-12-18)编程技术270

1. 前言


git commit 将暂存区内容提交到版本库

本文主要记录 git commit 几个常用用法,日常开发中,这几个参数基本够用了

  1. // 将暂存区内容提交到版本库
  2. git commit -m [message]
  3. // 跳过 git add,将所有已被跟踪的文件更改直接提交到版本库
  4. git commit -am [message]
  5. // 修改上一次的提交信息 (删除当前最新的一条记录,重新提交)
  6. git commit --amend -m <message>

2. git commit -m


基本使用

  1. git commit -m [message]

将某些文件提交到版本库 (可以跳过 git add,但必须是已被跟踪的文件)

  1. git commit [file1] [file2] -m [message]

3. git commit -am


如果需要将所有已被跟踪的文件更改内容,不想使用 git add,直接添加到版本库

总结: git commit -m 用于提交暂存区中的文件,git commit -am 用于提交已被跟踪的文件

  1. # 将已被跟踪的文件提交的本地库中
  2. git commit -am <message>

commit 命令的 -am 参数等价于执行了下面两个命令

  1. # 将已被跟踪的文件提交到暂存区
  2. git add -u
  3. # 将暂存区中的文件提交到本地库
  4. git commit -m <message>

4. 修改上次提交的备注信息


在日常开发中,难免会出现提交时备注信息打错了,想要修改它。

  1. # 进入 vi 编辑模式,最上方就是提交时填写的备注信息
  2. git commit --amend
  3. # 无需进入 vi 编辑模式,修改上次提交记录的备注信息
  4. git commit --amend -m <message>

修改备注信息后,保存退出即可。该操作会修改上次提交的索引 id

5. commit 背后到底发生了什么


创建一个 git 仓库,用于测试 git commit 背后做了什么操作

  1. echo 'hello git' >> 1.txt
  2. echo 'hello svn' >> 2.txt
  3. git init
  4. git add .
  5. # 提交到版本库,注意 .git 目录下的变化
  6. git commit -m 'add 1.txt 2.txt'

一、执行 git commit 后会在 .git/objects 目录中下面生成两个文件(一个是 commit 类型,一个是 tree 类型)

第二次执行 commit 后,查看这次 commit id 的文件内容,其中 parent 后面的值是上一次提交记录的 commit id

当文件存放在目录中时,tree 类型的 objects 文件中还会有一个 tree(新增了一个 user/4.txt 文件)

二、假设当前在 master 分支,那么执行 git commit 后会在 .git/refs/heads/master 中写入最新提交记录的 commit id

  1. $ cat .git/refs/heads/master
  2. f08f522f3210eccbcff1d5e16c3da72435583f5e

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10242.html

标签: git
分享给朋友:

“git commit 命令详解” 的相关文章

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...

【说站】linux中redis如何以redis用户重启?

【说站】linux中redis如何以redis用户重启?

通过上图我们可以看到,目前状态是已经以 redis 用户启动着,我想修改下 redis 的密码,然后怎么以 redis 用户重启呢?redis 是 nologin 用户,不能通过 su redis 切...

【说站】使用systemctl配置dnspod-shell实现ddns

【说站】使用systemctl配置dnspod-shell实现ddns

这个是毛子路由器上用的脚本,由于碳云的nat服务器公网IP不断的变,因此只好通过ddns来稳定连接nat服务器了。顺便水一篇文章,大家新年快乐。使用前需要将域名添加到 DNSPod 中,并添加一条A记...