Git 的补丁模式

Avatar of Robin Rendle
Robin Rendle

DigitalOcean 为您旅程的每个阶段提供云产品。从 200 美元的免费积分 开始!

假设我们刚刚更改了某个文件中的某些 CSS,并且想要使用 Git 对其进行暂存。 您可能会执行以下操作

git add styles.css

…然后,我们希望使用已暂存的代码进行提交

git commit -m "Fixed the CSS"

我已经这样做了很长时间,但这种方法有很多问题。首先,如果您在 `styles.css` 中更改了不止一件事会发生什么?也许我们更改了某个元素的边框,然后又更改了与第一个元素完全无关的某个元素的背景颜色。好吧,如果我们运行 `git log`,则很难理解提交的历史记录。

这就是 Git 的补丁模式发挥作用的地方。它是一个非常有用的标志,它允许我们将文件的各个部分拆分,以便我们可以分别暂存和提交每个部分。

git add -p styles.css

运行该命令后,我们应该会看到类似以下内容

我们在两个不同的元素上进行了两次更改,但存在各种可以在称为“块”的内容上运行的命令。我们在这里看到的是代码库的一部分或一个块,但要查看所有这些命令的含义,我们只需键入 `?` 即可。这将为我们列出所有命令

在本例中,我们所做的两处更改当前属于同一个块,因此我们需要通过键入 `s` 将其拆分。

现在我们可以看到,只有 `。table` 类上的更改已被选中,这正是我们想要的。然后,我们只需键入 `y` 即可暂存该块。但是,git 会提供给我们暂存更多块的选项,这在我们对代码库的不同部分进行类似更改时非常有用。但是,在这种情况下,我们只想退出此过程,因此我们需要运行 `q`。

当我们在命令行中键入 `git status` 时,这一切都更有意义;我们将看到我们已从 styles.css 中添加了一些代码,如果我们运行 `git diff styles.css`,我们将看到只有一行 CSS 已被暂存

剩下的就是进行提交,同时确保为将来参考编写一些难忘的内容,例如

git commit -m "fixed the border of the form"

这样,我们就可以扫描我们的提交历史记录并更容易地理解它。

Git 的补丁模式万岁!