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 指针,并可以选择更改 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