章节 ▾ 第二版

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 指针,并可选择更改 index 或暂存区域,如果使用 --hard,还可以选择更改工作目录。 如果使用不当,最后一个选项可能会导致你丢失工作,因此请务必在使用前了解它。

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

然后在reset解密中相当详细地介绍了它,该章节完全致力于解释这个命令。

我们在放弃合并中使用 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