如何手动检查两次 git 提交之间的差异?

How do I manually check the difference between two git commits?

如何手动检查同一 git 文件夹中两次提交之间的文件差异。

这里有很多关于如何配置 git 以使用 kdiff3 作为默认合并工具的帖子,但这个问题涉及手动附加目录,以便我可以比较提交之间的差异。

解决以下评论:

假设我有一个文件路径为 /path/to/dir/filename.txt 的文件。 /path/to/dir/ 是一个 git 目录(用 git init 实例化)。

我正在尝试查看 commitid=bacfa3 的 /path/to/dir/filename.txt 和 commitid=aafaf8 的 /path/to/dir/filename.txt 的区别。我宁愿不使用 git 的命令行界面 git diff 来执行此操作,而是仅使用 kdiff3 UI.

查看这些更改

解决下面的附加答案:

我附上了an image to the kdiff3 UI。有一个选项可以添加文件和目录。是否可以 select 一个文件 /path/to/dir/filename.txt 在特定的提交 (bacfa3) 和同一文件在另一个提交 (aafaf8) 并比较两个文件 使用 kdiff3 UI(无命令行界面)。

您可以使用 git difftool :

# from /path/to/dir/ :
git difftool bacfa3 aafaf8 -- filename.txt

如果您想比较多个文件,或在目录比较模式下打开差异查看器,请添加 -d 选项:

git difftool -d bacfa3 aafaf8
git difftool -d bacfa3 aafaf8 -- some/dir
# the following will compare the 2 commits, restricting the compared files
# to only the files named on the command line :
git difftool -d bacfa3 aafaf8 -- file1.txt file2.txt path/to/file3.txt

注意:上面命令中的 -- 大部分是可选的,它是标准的说法“之后是 不是 分支名称,或者标签名称,或提交引用,或命令行选项(如果文件以 - 开头,例如),它只是路径。
当没有歧义时,git 知道用 git difftool bacfa3 Readme.md.

寻找什么

要将 kdiff3 作为标准查看器:


git difftool 的基本用法是:git diff(*) 理解的任何选项和参数集也将被 git difftool 理解,并且 git difftool -d

(*) 好吧,可能会有一两个例外,比如--word-diff--histogram,因为git不再控制如何差异查看器的行为。


[edit] 回答“我可以只从 kdiff3 GUI 做到这一点吗?”点数:

我认为您不能单独从 kdiff3(除非您在菜单中某处看到“VCS”条目?),查看 GUI 前端 到 git :

官方 git 站点上有一个很好的 GUI 工具列表:

我对 Git extensions 有很好的体验(如果你是 运行 Windows),gitk 与 git 的开发非常紧密,其他工具非常有名,例如 Gitkraken、Sourcetree ...

通过这些工具,您将有一个 GUI 来 select 您想要比较的提交和文件,并且它们都有一个“在 [图形差异查看器] ... 中打开”操作。