Git Diff17 Mar 2025 | 5 分钟阅读 Git diff 是一个命令行实用程序。它是一个多用途的 Git 命令。当它被执行时,它会在 Git 数据源上运行一个 diff 函数。这些数据源可以是文件、分支、提交等等。它用于显示提交之间、提交和工作树之间的更改等。 它比较不同版本的数据源。版本控制系统代表着使用已修改版本的文件。因此,diff 命令是使用 Git 的一个有用工具。 但是,我们也可以借助带有 -p 选项的 git log 命令来跟踪更改。git log 命令也将作为 git diff 命令运行。 让我们了解一下可以使用 git diff 命令的不同场景。 场景 1:跟踪尚未暂存的更改。 git diff 命令的常用用法是我们可以跟踪尚未暂存的更改。 假设我们编辑了 newfile1.txt 文件。现在,我们想跟踪尚未暂存的更改。然后我们可以从 git diff 命令中做到这一点。考虑以下输出 ![]() 从上面的输出中,我们可以看到 git diff 命令显示了对 newfile1.txt 所做的更改。由于我们将其编辑为“进行更改以理解 git diff 命令”。因此,输出显示了带有其内容的更改。上述输出的突出显示部分是更新文件中的更改。现在,我们可以通过预览更改来决定是否要像这样暂存该文件。 场景 2:跟踪已暂存但未提交的更改 git diff 命令允许我们跟踪已暂存但未提交的更改。我们可以在暂存区中跟踪更改。要检查已暂存的更改,请将 --staged 选项与 git diff 命令一起使用。 要检查未跟踪的文件,请运行 git status 命令,如下所示 上面的命令将显示来自存储库的未跟踪文件。现在,我们将把它添加到暂存区。要将文件添加到暂存区,请运行 git add 命令,如下所示 上面的命令会将文件添加到暂存区。考虑以下输出 ![]() 现在,文件已添加到暂存区,但尚未提交。因此,我们也可以跟踪暂存区中的更改。要检查已暂存的更改,请运行 git diff 命令以及 **--staged** 选项。它将如下使用 上面的命令将显示已暂存文件的更改。考虑以下输出 ![]() 给定的输出显示了已暂存的 newfile1.txt 的更改。 场景 3:在提交文件后跟踪更改 Git,让我们在提交文件后跟踪更改。假设我们已经为存储库提交了一个文件,并在提交后进行了一些额外的更改。因此,我们也可以在这个阶段跟踪文件。 在下面的输出中,我们已经提交了对 newfile1.txt 所做的更改。考虑以下输出 ![]() 现在,我们再次更改了 newfile.txt 文件,改为“提交文件后进行更改”。要跟踪此文件的更改,请使用 **HEAD** 参数运行 git diff 命令。它将按如下方式运行 上面的命令将在终端中显示更改。考虑以下输出 ![]() 上面的命令在突出显示的部分中显示了文件 newfile1.txt 的更新。 场景 4:跟踪两次提交之间的更改 我们可以跟踪两个不同提交之间的更改。Git 允许我们跟踪两次提交之间的更改,无论是最新的提交还是旧的提交。但是,为此所需的是我们必须有一个提交列表,以便我们可以进行比较。列出 Git 中提交的常用命令是 git log 命令。要显示最近的提交,我们可以运行以下命令 上面的命令将列出最近的提交。 假设,我们要跟踪特定文件从早期提交中的更改。为此,我们需要该指定文件的提交。要显示任何指定文件的提交,请运行 git log 命令,如下所示 上面的命令将显示指定文件的所有提交。考虑以下输出 ![]() 上面的输出显示了 newfile1.txt 的所有提交。假设我们要跟踪提交 **e553fc08cb** 和 **f1ddc7c9e7** 之间的更改。git diff 命令允许跟踪两次提交之间的更改。它将被命令为 上面的命令将显示两次提交之间的更改。考虑以下输出 ![]() 上面的输出显示了在提交 **e553fc08cb**(最近)到提交 **f1ddc7c9e7**(上一个)的 **newfile1.txt** 上所做的所有更改。 Git 差异分支Git 允许比较分支。如果你是分支的专家,那么你可以理解在合并之前分析分支的重要性。如果你在没有比较的情况下合并分支,可能会出现很多冲突。因此,为了避免这些冲突,Git 允许许多方便的命令来预览、比较和编辑更改。 我们可以使用 git status 命令跟踪分支的更改,但更多命令可以更详细地解释它。git diff 命令是跟踪更改的常用工具。 git diff 命令允许我们比较不同版本的分支和存储库。要获取分支之间的差异,请按如下方式运行 git diff 命令 上面的命令将显示分支 1 和分支 2 之间的差异。这样你就可以决定是否要合并分支。考虑以下输出 ![]() 上面的输出显示了我的存储库分支 **test** 和 **test2** 之间的差异。git diff 命令正在预览这两个分支。因此,它将有助于对分支执行任何操作。 下一主题Git 状态 |
我们请求您订阅我们的新闻通讯以获取最新更新。