git命令——git commit
功能
将暂存区中的更改记录到仓库。
加到staging area里面的文件,是表示已经准备好commit的。所以在commit修改之前,务必确定所有修改文件都是staged的。对于unstaged的文件,git commit后也不会被记录。
参数
不带参数
最简单的提交命令是
$ git commit
这种方式会启动文本编辑器以便输入本次提交的说明。 (默认会启用 shell 的环境变量 $EDITOR 所指定的软件,一般都是 vim 或 emacs。当然也可以使用 git config --global core.editor 命令设定你喜欢的编辑软件。)编辑器会显示类似下面的文本信息(本例选用 Vim 的屏显方式展示):
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # new file: README # modified: CONTRIBUTING.md # ~ ~ ~ ".git/COMMIT_EDITMSG" 9L, 283C
可以看到,默认的提交消息包含最后一次运行 git status 的输出,放在注释行里,另外开头还有一空行,供你输入提交说明。 你完全可以去掉这些注释行,不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。 (如果想要更详细的对修改了哪些内容的提示,可以用 -v 选项,这会将你所做的改变的 diff 输出放到编辑器中从而使你知道本次提交具体做了哪些修改。) 退出编辑器时,Git 会丢掉注释行,用你输入提交附带信息生成一次提交。
-m
在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行,如下所示:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
$ git commit -m "Story 182: Fix benchmarks for speed" [master 463dc4f] Story 182: Fix benchmarks for speed 2 files changed, 2 insertions(+) create mode 100644 README
好,现在你已经创建了第一个提交! 可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添加和删改过。
请记住,提交时记录的是放在暂存区域的快照。 任何还保留unstaged 且 modified状态的文件,可以在下次提交时纳入版本管理。 每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。
-a
使用暂存区域可以让我们精心准备要提交的细节,但有时候这么做略显繁琐。 Git 提供了一个跳过使用暂存区域的方式, 只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有tracked且modified的文件暂存起来一并提交,从而跳过 git add 步骤:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: CONTRIBUTING.md no changes added to commit (use "git add" and/or "git commit -a") $ git commit -a -m 'added new benchmarks' [master 83e38c7] added new benchmarks 1 file changed, 5 insertions(+), 0 deletions(-)
看到了吗?提交之前不再需要 git add 文件“CONTRIBUTING.md”了。
--amend
如果你很早之前就commit,后来发现有几个文件忘记一起提交了。又或者commit的时候你搞错了提交注释信息。如果你想重新再提交一次,请使用--amend选项。
由于git commit的工作原理是提交暂存区中的变化。所以如果在上次提交后马上执行了此命令,那么暂存区中是没有变化的,此时git commit --amend修改的只是提交信息(commit message,就是-m时后面写的注释那句话)
如果你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
$ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend
最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。
相关文章
- git 连接gitlab,生成密钥
- Git提交空目录
- 【转】Git命令大全(非常齐全)
- git 命令
- Git服务器搭建全过程分步详解
- git简明教程
- Git 实战(三) | Github 必会高频基础命令与 IDE 的 Git 集成
- git 同步远程已删除的分支和删除本地多余的分支
- git拉取远程分支到本地
- 如何用git将项目代码上传到github
- git 录制简单实用好工具 LICEcap
- 执行git pull命令报告"fatal: early EOF fatal: index-pack failed error: Could not fetch origin fatal: read error: Connection timed out"如何处理?
- git clone error: RPC failed; curl 18 transfer closed with outstanding read data remaining
- git关于文件权限修改引起的冲突及忽略文件权限的办法
- Git回滚代码到某个commit
- 2015第28周六SVN和Git
- Git文件比较不比较空格,Git Compare 空格问题
- 精通Git(三)——Git分支机制
- git log 命令
- 基于git和markdown的个人笔记
- 16.git命令汇总
- 使用Git Submodule管理子模块
- sourcetree和Git的使用教程
- git reset命令使用
- 异常排查 | warning: push.default is unset; its implicit value is changing in Git 2.0
- git根据标签或者commit进行导出改动的文件
- 向西项目管理工具Git一片
- git报错:git commit命令后显示Author identity unknown的解决方法
- git-命令查看版本记录