Git diff是一个命令行实用程序。它是一个多用途的Git命令。执行时,它在Git数据源上运行一个差异函数。这些数据源可以是文件、分支、提交等。它用于显示提交、提交和工作树等之间的变化。
它比较数据源的不同版本。版本控制系统表示处理文件的修改版本。因此,差异命令是使用Git的有用工具。
但是,我们也可以通过git log命令跟踪变更,使用选项-p。git log命令也可以用作git diff命令。
让我们了解可以利用git diff命令的不同场景。
场景1:跟踪尚未暂存的变更。
git diff命令的常规用法是跟踪尚未暂存的变更。
假设我们已经编辑了newfile1.txt文件。现在,我们想要跟踪尚未暂存的变更。然后,我们可以使用git diff命令来做到这一点。考虑下面的输出:
从上面的输出中,我们可以看到git diff命令显示了在newfile1.txt上所做的更改。由于我们将其编辑为“changes are made to understand the git diff command”,所以输出显示了更改及其内容。上面输出的突出部分是更新文件中的更改。现在,我们可以通过预览更改来决定是否希望像这样分阶段此文件。
场景2:跟踪已经分阶段但尚未提交的更改:
git diff命令允许我们跟踪已经分阶段但尚未提交的更改。我们可以跟踪暂存区中的更改。要检查已经分阶段的更改,使用–staged选项加上git diff命令。
要检查未跟踪的文件,请运行git status命令:
$ git status
上述命令将显示存储库中的未跟踪文件。现在,我们将把它添加到暂存区域。要将文件添加到暂存区域,请运行git add命令:
$ git add < file name>
以上命令将文件添加到暂存区。请考虑下面的输出:
现在,文件已添加到暂存区,但尚未提交。因此,我们也可以跟踪暂存区中的更改。要检查暂存的更改,请运行带有 --staged 选项的git diff命令。用法如下:
$ git diff --staged
上述命令将显示已经暂存文件的更改。参考以下输出:
给出的输出显示了newfile1.txt的变化,该文件已经被暂存。
场景3:提交文件后跟踪变化:
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命令为这两个分支提供了预览,因此在分支上执行任何操作都会很有帮助。