Git commit用于记录版本库中的变化。它是git add之后的下一个命令。每个提交都包含索引数据和提交信息。每个提交都形成了一个父子关系。当我们在 Git 中添加一个文件时,它将发生在暂存区。提交命令是用来从暂存区获取更新到仓库的。
暂存和提交是相互关联的。分期允许我们继续对版本库进行修改,而当我们想把这些修改分享给版本控制系统时,提交允许我们记录这些修改。
提交是项目的快照。每个提交都记录在版本库的主分支中。我们可以调用这些提交,或将其恢复到旧版本。两个不同的提交不会被覆盖,因为每个提交都有自己的commit-id。这个commit-id是一个由SHA(安全哈希算法)算法创建的加密数字。
让我们看看不同种类的提交。
git commit 命令
commit命令将提交修改并生成一个commit-id。没有任何参数的commit命令将打开默认的文本编辑器,并要求提供提交信息。我们可以在这个文本编辑器中指定我们的提交信息。它的运行方式如下。
$ git commit
上面的命令会提示一个默认的编辑器,并要求提供提交信息。我们对newfile1.txt做了一个改动,希望它能提交。可以按以下方式进行。
考虑下面的输出。
当我们运行该命令时,它将提示一个默认的文本编辑器,并要求提供提交信息。该文本编辑器将如下所示。
按Esc键,之后I
表示插入模式。输入一个你想要的提交信息。在:wq
之后按Esc键,保存并退出编辑器。这样,我们就成功地进行了一次提交。
我们可以通过git log命令检查提交情况。请看下面的输出。
在上面的输出中,我们可以看到,日志选项显示了commit-id、作者详情、日期和时间以及提交信息。
要了解更多关于日志选项的信息,请访问 Git Log。
Git commit -a
提交命令还提供了-a选项来指定一些提交内容。它被用来提交所有修改的快照。这个选项只考虑Git中已经添加的文件。它不会提交新创建的文件。请考虑以下情况。
我们对已经暂存的文件 newfile3 进行了一些更新,并创建了一个文件 newfile4.txt。检查版本库的状态并运行提交命令,如下所示。
$ git commit -a
考虑一下输出。
上面的命令会提示我们的默认文本编辑器,并要求输入提交信息。输入一个提交信息,然后保存并退出编辑器。这个过程将只提交已经添加的文件。它不会提交尚未分阶段的文件。请看下面的输出。
从上面的输出中我们可以看到,newfile4.txt没有被提交。
Git commit -m
提交命令的-m选项让你在命令行上写下提交信息。该命令不会提示文本编辑器。它的运行方式如下。
$ git commit -m "Commit message."
上面的命令将做出一个带有给定提交信息的提交。请看下面的输出。
在上面的输出中,一个 newfile4.txt 被提交到我们的版本库中,并有提交消息。
我们也可以对已经暂存的文件使用 -am 选项。这条命令会立即对已经暂存的文件进行提交,并给出提交信息。它的运行方式如下。
$ git commit -am "Commit message."
Git Commit Amend (修改commit message)
修改选项让我们可以编辑最后一次提交的内容。如果不小心,我们提交了一个错误的提交信息,那么这个功能对我们来说就是一个野蛮的选择。它的运行方式如下。
$ git commit -amend
上述命令将提示默认的文本编辑器,并允许我们编辑提交信息。
我们可能需要一些与提交有关的其他基本操作,如恢复提交、撤销提交等,但这些操作并不是提交命令的一部分。我们可以用其他命令来做。以下是一些基本操作。
- Git 撤销提交。访问Git Reset
- Git revert commit:访问Git Revert
- git remove commit:访问Git Rm