-
1. 起步
-
2. Git 基础
-
3. Git 分支
-
4. 服务器上的 Git
- 4.1 协议
- 4.2 在服务器上部署 Git
- 4.3 生成 SSH 公钥
- 4.4 架设服务器
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方托管服务
- 4.10 小结
-
5. 分布式 Git
-
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 命令的包装器。