📜  在 Git 中使用补丁

📅  最后修改于: 2021-10-24 12:51:40             🧑  作者: Mango

GIT 补丁或 GIT diff 用于将您所做的更改共享给其他人,而无需将其推送到存储库的主分支。通过这种方式,其他人可以从您所做的 GIT 补丁文件中检查您的更改,并提出必要的更正建议。完成所有更正后,您可以将更改推送到存储库的主分支。

有多种方法可以创建 GIT 补丁。我们将一一介绍它们。在这里,我们为本教程制作了一个名为git-patch-tut的演示存储库,其中有一个名为gfg-intro.txt 的文本文件,其中包含几行描述。我们将对这个文本文件进行所有操作,以便更好地理解。

为单个文件创建补丁

假设 gfg.txt文件中的描述被更改,则执行git diff –cached gfg.txt来检查所做的更改。文件暂存后,可以使用git-diff –cached 查看更改。如果在存储库中插入了一个新文件,它将不会显示git-diff的更改,除非与它一起使用 –cached。

现在,假设用户想要为这个已编辑的单个文件创建补丁。 git diff > gfg-intro.patch将用于gfg-intro是补丁名称的地方。

为二进制图像创建补丁

如果在存储库(项目文件夹)中添加了二进制图像,如jpgpng 文件。可以使用 git diff –staged –binary > image.jpg查看二进制文件的变化,其中“image.jpg”是文件名。这里使用了–staged ,因为我们首先将文件添加到暂存区,然后使用git-diff查看更改。

现在,要为这个新添加的二进制文件创建补丁,可以使用git diff –staged –binary > binary.patch其中 binary是补丁名称。和上面一样,唯一的区别是在创建补丁时使用-binary。

从提交中创建补丁

要为特定分支中的所有提交创建补丁文件,可以使用 git format-patch -1 test-patch ,其中“test-patch”是分支名称, -1是要提交的数量包括用于创建补丁。在下面的示例中,我们使用了-1并且生成的补丁被命名为0001-Add-description.patch 。请注意,文件的名称基于该特定分支上的提交名称。通过这种方式,可以在特定分支中为多个提交创建多个补丁文件。在下面的示例中,它只为最新提交生成了 1 个补丁文件。您还可以使用git format-patch -1 HEAD ,其中 HEAD 是指向标头的提交的sha。

创建从一个提交到另一个提交的补丁文件,即一个补丁文件,其中的更改包括从开始提交和结束提交的所有提交。它是由git diffstarting-commit-shaending-commit-sha myPatch.patch 完成的,其中“myPatch”是补丁名称,包括提交的开始和结束 sha。

应用补丁

假设有一个已完成更改的补丁文件,在我们的gfg.txt文件示例中。如果用户想检查这些更改是否正确,则从 master 创建一个不同的分支并应用补丁来检查更改。这就是补丁在新分支中的应用方式。

应用由git apply 0001-Add-description.patch 完成,其中“0001-Add-description.patch”是要应用的补丁名称。应用补丁后,相关文件将使用该补丁文件中所做的更改进行修改,并且可以进行审查,然后再将其推送到主存储库的主分支。