Git
章节 ▾ 第二版

A3.3 附录 C:Git 命令 - 基本快照

基本快照

对于暂存内容并将其提交到历史记录的基本工作流程,只需要几个基本命令。

git add

git add 命令将工作目录中的内容添加到暂存区(或“索引”)中,以便进行下一次提交。当运行 git commit 命令时,默认情况下它只查看此暂存区,因此 git add 用于确定您希望下一次提交快照的确切内容。

此命令是 Git 中一个非常重要的命令,在本手册中多次提及或使用。我们将快速介绍一些可以找到的独特用法。

我们首先在 跟踪新文件 中详细介绍和解释了 git add

我们在 基本合并冲突 中提到了如何使用它来解决合并冲突。

我们在 交互式暂存 中介绍了如何使用它来交互式地仅暂存修改文件的特定部分。

最后,我们在 树对象 中在底层模拟它,以便您可以了解它在幕后做了什么。

git status

git status 命令将显示工作目录和暂存区中文件的不同状态。哪些文件已修改但未暂存,哪些文件已暂存但尚未提交。在其正常形式下,它还将显示一些关于如何在这些阶段之间移动文件的基本提示。

我们首先在 检查文件状态 中介绍了 status,包括其基本形式和简化形式。虽然我们在整本书中都使用了它,但基本上所有可以使用 git status 命令执行的操作都在那里进行了介绍。

git diff

当您想要查看任何两个树之间的差异时,可以使用 git diff 命令。这可能是您的工作环境与您的暂存区之间的差异(git diff 本身),您的暂存区与您的上次提交之间的差异(git diff --staged),或两个提交之间的差异(git diff master branchB)。

我们首先在 查看已暂存和未暂存的更改 中查看了 git diff 的基本用法,其中我们展示了如何查看哪些更改已暂存,哪些更改尚未暂存。

我们使用 --check 选项在 提交指南 中查找可能的空白问题。

我们在 确定引入的内容 中了解了如何使用 git diff A…​B 语法更有效地检查分支之间的差异。

我们在 高级合并 中介绍了如何使用 -b 过滤掉空白差异以及如何使用 --theirs--ours--base 比较冲突文件的不同阶段。

最后,我们使用它结合--submodule有效地比较子模块的更改,如开始使用子模块中所述。

git difftool

git difftool命令简单地启动一个外部工具来显示两个树之间的差异,如果你想使用除内置的git diff命令之外的其他工具。

我们在查看已暂存和未暂存的更改中简要提及了这一点。

git commit

git commit命令获取所有使用git add暂存的文件内容,并在数据库中记录一个新的永久快照,然后将当前分支上的分支指针移动到该快照。

我们首先在提交更改中介绍了提交的基本知识。在那里,我们还演示了如何使用-a标志跳过日常工作流程中的git add步骤,以及如何使用-m标志在命令行中传递提交消息,而不是启动编辑器。

撤销操作中,我们介绍了如何使用--amend选项重做最近一次提交。

分支概览中,我们将更详细地介绍git commit的作用及其工作原理。

我们在签署提交中介绍了如何使用-S标志对提交进行加密签名。

最后,我们在提交对象中查看了git commit命令在后台执行的操作以及其实现方式。

git reset

git reset命令主要用于撤销操作,从动词上就可以看出。它移动HEAD指针,并可选地更改索引或暂存区,如果使用--hard,还可以可选地更改工作目录。此最终选项使该命令在使用不当的情况下可能会丢失你的工作,因此在使用它之前请确保你理解它。

我们首先在取消暂存已暂存的文件中介绍了git reset最简单的用法,在那里我们使用它来取消我们已运行git add的文件的暂存。

然后我们在重置详解中详细介绍了它,该章节完全致力于解释此命令。

我们在中止合并中使用git reset --hard来中止合并,在那里我们还使用了git merge --abort,它是git reset命令的一个包装器。

git rm

git rm命令用于从 Git 的暂存区和工作目录中删除文件。它类似于git add,因为它会将文件的删除操作暂存到下一次提交。

我们在删除文件中详细介绍了git rm命令,包括递归删除文件以及仅从暂存区删除文件但使用--cached将其保留在工作目录中。

本书中git rm的唯一其他不同用法是在删除对象中,我们简要介绍并解释了在运行git filter-branch时使用--ignore-unmatch,它只是在尝试删除的文件不存在时不报错。这对于脚本编写很有用。

git mv

git mv命令是一个简单的便利命令,用于移动文件,然后对新文件运行git add,对旧文件运行git rm

我们仅在移动文件中简要提及了此命令。

git clean

git clean命令用于从你的工作目录中删除不需要的文件。这可能包括删除临时构建工件或合并冲突文件。

我们在清理你的工作目录中介绍了你在使用clean命令时可能遇到的许多选项和场景。

scroll-to-top