Git diff 是一个命令行实用程序。这是一个多用途的 Git 命令。当它被执行时,它会在 Git 数据源上运行一个 diff 函数。这些数据源可以是文件、分支、提交等。它用于显示提交、提交和工作树等之间的更改。
它比较了不同版本的数据源。版本控制系统代表处理文件的修改版本。因此,diff 命令是使用 Git 的有用工具。
但是,我们也可以在带有选项 -p 的 git log 命令的帮助下跟踪更改。git log 命令也可以用作 git diff 命令。
让我们了解可以使用 git diff 命令的不同场景。
Scenerio1:跟踪尚未上演的更改。
通常使用 git diff 命令,我们可以跟踪尚未上演的更改。
假设我们已经编辑了 newfile1.txt 文件。现在,我们要跟踪哪些更改尚未上演。然后我们可以从 git diff 命令中这样做。考虑以下输出:
从上面的输出中,我们可以看到 git diff 命令显示了对 newfile1.txt 所做的更改。正如我们将其编辑为“进行了更改以理解 git diff 命令”。因此,输出显示其内容的变化。上述输出中突出显示的部分是更新文件中的更改。现在,我们可以通过预览更改来决定是否要像这样暂存此文件。
Scenerio2:跟踪已上演但未提交的更改:
git diff 命令允许我们跟踪已暂存但未提交的更改。我们可以跟踪暂存区的变化。要检查已经暂存的更改,请使用 --staged 选项和 git diff 命令。
要检查未跟踪的文件,请按以下方式运行 git status 命令:
$ git status
上面的命令将显示存储库中未跟踪的文件。现在,我们将其添加到暂存区。要将文件添加到暂存区,请运行 git add 命令,如下所示:
$ git add < file name>
上面的命令会将文件添加到暂存区。考虑以下输出:
现在,文件已添加到暂存区,但尚未提交。因此,我们也可以跟踪暂存区的变化。要检查暂存更改,请运行 git diff 命令和--staged选项。它将用作:
$ git diff --staged
上述命令将显示已暂存文件的更改。考虑以下输出:
给定的输出显示已暂存的 newfile1.txt 的更改。
Scenerio3:提交文件后跟踪更改:
Git,让我们在提交文件后跟踪更改。假设我们已经为存储库提交了一个文件,并在提交后进行了一些额外的更改。所以我们也可以在这个阶段跟踪文件。
在下面的输出中,我们提交了对 newfile1.txt 所做的更改。考虑以下输出:
现在,我们再次将 newfile.txt 文件更改为“提交文件后进行更改”。要跟踪此文件的更改,请运行带有HEAD参数的 git diff 命令。它将按如下方式运行:
$ git diff HEAD
上面的命令将在终端中显示更改。考虑以下输出:
上面的命令在突出显示的部分显示文件 newfile1.txt 的更新。
场景 4:跟踪两次提交之间的更改:
我们可以跟踪两个不同提交之间的更改。Git 允许我们跟踪两次提交之间的更改,无论是最新提交还是旧提交。但是这样做的必要条件是我们必须有一个提交列表,以便我们可以进行比较。在 git log 命令中列出提交的常用命令。要显示最近的提交,我们可以运行以下命令:
$ git log
上面的命令将列出最近的提交。
假设,我们要跟踪较早提交中指定的更改。为此,我们必须需要该指定文件的提交。要显示任何指定的提交,请运行 git log 命令:
$ git log -p --follow -- filename
上面的命令将显示指定文件的所有提交。考虑以下输出:
上面的输出显示了 newfile1.txt 的所有提交。假设我们要跟踪提交e553fc08cb和f1ddc7c9e7之间的更改。git diff 命令可以跟踪两次提交之间的更改。它将被命令为:
$ git diff <commit1-sha> <commit2-sha>
上面的命令将显示两次提交之间的更改。考虑以下输出:
上面的输出显示了从提交e553fc08cb(最近)到提交f1ddc7c9e7(以前)对newfile1.txt所做的所有更改。
Git Diff 分支
Git 允许比较分支。如果您是分支高手,那么您可以理解在合并之前分析分支的重要性。如果合并分支而不进行比较,可能会出现许多冲突。因此,为了避免这些冲突,Git 允许使用许多方便的命令来预览、比较和编辑更改。
我们可以使用 git status 命令跟踪分支的变化,但更多的命令可以详细解释它。git diff 命令是一种广泛使用的工具来跟踪更改。
git diff 命令允许我们比较不同版本的分支和存储库。要获取分支之间的差异,请按如下方式运行 git diff 命令:
$ git diff <branch 1> < branch 2>
上面的命令将显示分支1和分支2之间的差异。以便您决定是否要合并分支。考虑以下输出:
上面的输出显示了我的存储库分支test和test2之间的差异。git diff 命令提供两个分支的预览。因此,在分支上执行任何操作都会很有帮助。****