git commit -m 与 git commit -am 的区别
字面解释的话,git commit -m用于提交暂存区的文件;git commit -am用于提交跟踪过的文件
要理解它们的区别,首先要明白git的文件状态变化周期,如下图所示
工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区
下面以一个实例说明
在项目文件夹中新增一个文件如'a.txt'时,该文件处于untracked未跟踪状态。未跟踪状态的文件是无法提交的
接下来,使用git add a.txt,使其变成已跟踪状态
这时,如果使用git commit -m 'add a.txt'就可以顺利提交了
但是,git commit -m 和 git commit -am的区别在哪里?在于a.txt文件修改之后的处理
下面,向a.txt添加内容'a'
文件a.txt处于已跟踪,但未暂存状态。这时,如果使用git commit -m是无法提交最新版本的a.txt的,提交的只是最开始空内容的旧版本a.txt
要提交新版本a.txt,即内容为'a'的a.txt,则需要使用git add a.txt,将新版本的a.txt放到staged暂存区,然后才能使用git commit -m进行提交
而如果使用git commit -am,则可以省略git add a.txt这一步,因为git commit -am可以提交跟踪过的文件,而a.txt一开始已经被跟踪过了
总结,使用这两个命令区别的关键就是git add命令
git add命令是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等
我们需要用git add命令来跟踪新文件,但如果使用git commit -am可以省略使用git add命令将已跟踪文件放到暂存区的功能
git commit -am "str"
#等同于
git commit -a -m "str"
我们运行下
man git commit
来获取a
参数的意义即知区别了。
OPTIONS
-a, --all
Tell the command to automatically stage files that have been modified and >deleted, but new files you have not told Git about are not affected.
意思是说
自动把当前所有修改和删除文件放到栈上,但你没有添加过的不会受影响。
拓展
通常我们提交git的时候都是
git add .
git commit -m "some str"
git push
这三大步,而实际上,你只需要两条命令就够了,除非有新的文件要被添加进去。
git commit -am "some str"
git push
git commit -m 与 git commit -am 的区别相关推荐
- git中Please enter a commit message to explain why this merge is necessary.
git中Please enter a commit message to explain why this merge is necessary. git 在执行合并的时候 git merge 出现的 ...
- git commit —amend_Git之修改commit记录
在很多影视作品里,就算主人公乘上了时光鸡,还是无法修改历史(或者说修改后造成十分严重的后果):而现在,在 Git 的强力驱动下,修改历史变得简单又相对安全. 本文叨叨修改 commit 历史的问题 应 ...
- 【错误记录】Git 使用报错 ( no changes added to commit (use “git add“ and/or “git commit -a“) )
文章目录 一.报错信息 二.解决方案 一.报错信息 修改了 Git 版本库中的 file1.txt 文件 , 直接执行 git commit -m "modify file1" 命 ...
- git commit -m 与 git commit -am的区别
字面解释的话,git commit -m用于提交暂存区的文件:git commit -am用于提交跟踪过的文件 要理解它们的区别,首先要明白git的文件状态变化周期,如下图所示 工作目录下面的所有文件 ...
- [git] 如何处理push失败的commit
在使用git及github时,遇到一个问题:commit了一个超过100M的大文件,然后在push时失败,然后就再也无法push了,本地大文件删除了,再commit,再push也还是提示有大文件提交. ...
- 【Git】Git 修改刚提交的 commit message
Git 修改 commit message 修改最近一次的commit 信息 git commit --amend 然后就会进入vim编辑模式 比如要修改的commit是倒数第三条,使用命令: git ...
- GIT项目管理工具(part5)--查看commit 日志记录
本系列BLOG为鄙人学习GIT时的学习笔记.前一个知识点引出后一个知识点,后一个例子接着前一个例子. 文章目录 基本操作 6.查看commit 日志记录 举个例子2(接例子1) 导航 系列文章目录 基 ...
- git commit -m和git commit -am
字面解释的话,git commit -m用于提交暂存区的文件:git commit -am用于提交跟踪过的文件 要理解它们的区别,首先要明白git的文件状态变化周期,如下图所示 工作目录下面的所有文件 ...
- git命令:修改已经commit的注释
在使用git命令时,有时commit后,突然想起来忘记修改commit的注释.修改commit的注释使用下面的命令: git commit --amend 本人也是最近2周才开始使用git,有些也理解 ...
最新文章
- 自定义Android注解Part3:绑定
- maven中打包项目为war包的pom.xml配置
- 面试题目集锦--二叉树
- Loss Function , Cost Function and Kernel Function in ML(To be continued)
- Shell学习笔记 - 环境变量配置文件(转)
- RabbitMQ的5种队列_消息确认模式_入门试炼_第6篇
- MATLAB对一个二维矩阵画三维图
- 计算机网络学习(六)—网络层概述以及相关习题
- Apache 别名与重定向
- Paradox of Our Times--我们这个时代的尴尬
- 联发科想办法与大陆合作是生存的唯一出路
- php的ob缓存详解
- 色环电阻在线计算器(收藏)
- CorelDRAW_X6使用汇总
- python mp3转wav
- Latex中的caption
- python计算等额本金_等额本金还款计算公式
- 以太坊测试网络rinkeby交易测试
- 微信小程序 -语音合成:将文字转为语音(小程序插件:微信同声传译)
- 需求规格说明书RUP版
热门文章
- LOL手游上线!同步专属限量游戏红包封面,还不快来拿?
- 好货不能错过!一款在GitHub上22k+star的人力资源管理系统
- 皮一皮:直男的世界不可揣测!
- 云原生收购潮:思科计划收购Portshift;Kasten加入Veeam
- Spring Framework 5.2 正式发布,14项新特性一览
- 权限提升 T1548.002 绕过UAC
- 御泥坊搜索引擎优化网络诊断_掌握以下这些网络营销搜索引擎优化技巧,你的排名想不靠前都难!...
- CentOS中如何搭建Dubbo
- HRFormer 多分辨率Transformer 参数骤降,性能更强
- 反函数计算 python