-
A1. 附录 A:其他环境中的 Git
- A1.1 图形界面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 总结
-
A2. 附录 B:在应用程序中嵌入 Git
-
A3. 附录 C: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
命令的包装。