01 git commit
如果没有设置 -m 选项,直接运行 git commit 会出现什么情况呢?
答案是: Git 会尝试为你打开一个编辑器以填写提交信息。 如果 Git 在你对它的配置中找不到相关信息,默认会打开 vim 。如下图: 接下来,需要键盘敲 i 进入编辑模式,而后在第一行,即红色区域部分填写提交信息: 信息编辑好之后按 ESC ,键盘敲 :wq ,即保存并退出: 最后你会看到控制台的返回消息:
$ git add .
$ git commit
[master 1bbbda5] init hello
1 file changed, 1 insertion(+)
create mode 100644 hello.js
02 git commit -m
git commit -m <msg>
git commit --message=<msg>
描述 :使用给定 msg 作为提交消息,即 Git 就不会打开编辑器了,也就省略了上面的步骤了。
注意 :-m 和 -c -C -F 是相互排斥的!
03 git commit -a
git commit -a
git commit --all
描述 :修改文件后不需要执行 git add 命令,直接就可以提交。
注意 :新建的文件除外!
04 git commit -p
git commit -p
git commit --patch
描述 :使用交互式界面来选择要提交的更改,让用户有机会在将修改后的内容提交前查看差异。
使用示范 :
$ git commit -p
diff --git a/hello.js b/hello.js
index 2ccb4c8..31b09bc 100644
--- a/hello.js
+++ b/hello.js
@@ -1,2 +1,3 @@
-let hello = 1;
+let hello = 123;
let world = 456;
+let people = 789;
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
# --------- 下面是每个选项的意思 ----------
y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
e - manually edit the current hunk
? - print help
# --------- 上面是每个选项的意思 ----------
05 git commit -C
git commit -C
git commit --reuse-message=<commit>
描述 :获取现有的提交对象 commitId ,并在创建提交时重用日志消息和作者信息(包括时间戳)。换句话说就是重新使用之前提交过的信息去提交新的更改。
使用示范 :
$ git log
commit aa63767da23f357136333b7ce18175c414b189ec (HEAD -> master)
Author: xxxxxx<xxxxxx.com>
Date: Mon Oct 25 16:30:41 2021 +0800
change hello
commit fcadef453058fb4b97b7c0cbc2994bed3a81302e
Author: xxxxxx<xxxxxx.com>
Date: Mon Oct 25 16:30:06 2021 +0800
init
$ git commit -C fcadef453058fb4b97b7c0cbc2994bed3a81302e
[master e82bdf2] init
Date: Mon Oct 25 16:30:06 2021 +0800
1 file changed, 1 insertion(+), 1 deletion(-)
结果如下:(作者,时间和信息都是一样的噢)
06 git commit -c
git commit -c
git commit --reedit-message=<commit>
描述 :与 -C 类似,但使用 -c 会调用编辑器,以便用户可以进一步编辑提交消息,即与 -C 相比多了一项修改编辑的步骤。
07 git commit -n
git commit -n
git commit --no-verify
描述 :这个选项可以绕过 pre-commit 和 commit-msg 。
08 git commit --amend
描述 :通过创建新提交来替换当前分支的提交信息。
使用示范 1 :修改上一次的提交信息。
$ git log
commit 155f771f90997b88dd71d4952dee3cf15618af1b (HEAD -> master)
Author: xxxxxx<xxxxxx.com>
Date: Mon Oct 25 17:15:08 2021 +0800
edit test
commit 69322b677a3a6be363ba559610988607480677ce
Author: xxxxxx<xxxxxx.com>
Date: Mon Oct 25 17:11:30 2021 +0800
init
执行命令 git commit --amend ,会出现下面的编辑界面,将红色框选区中修改为想要的信息: 结果预览:修改之后查看提交记录,发现提交信息已经按照预期进行了修改,同时需要注意 commitId 也发生了变化。
使用示范 2 :将最近的修改追加到上一次的提交上。
$ git log
commit 6681933eee000dcb99acc18f6c0fb246c551a7ad (HEAD -> master)
Author: xxxxxx<xxxxxx.com>
Date: Mon Oct 25 17:15:08 2021 +0800
modify test
commit 69322b677a3a6be363ba559610988607480677ce
Author: xxxxxx<xxxxxx.com>
Date: Mon Oct 25 17:11:30 2021 +0800
init
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: test.js
no changes added to commit (use "git add" and/or "git commit -a")
$ git add .
$ git commit --amend
modify test
~
~
~
"~/Documents/code/test/.git/COMMIT_EDITMSG" 11L, 266B
结果预览:追加提交完成, commitId 也发生了变化。
|