在 2 branches/commits 之间按文件检查差异文件的最佳方法?
Best way to check diff file by file between 2 branches/commits?
我刚刚完成了一个相当大的分支,我已经为此工作了 2 个多月。我只是将 master 重新定位到它并且不得不解决一些冲突。既然我已经重新定位了我的功能分支,我该如何逐个文件查看特色分支与主分支上比较的突出差异,以确保正确完成重新定位?
像这样:
git diff master
您一次可以提供一个文件:
git diff master -- some-file-path
git diff branch1..branch2
使用此命令,Git 将比较两个分支的尖端(也称为 HEAD)并显示可用于查看修改的“差异”重述。
简而言之,它将向您显示“branch2”拥有但不在“branch1”中的所有提交。
git diff branch1...branch2
使用带有三个点的“git diff”比较右分支的顶部(HEAD)与两个分支的共同祖先。
此处的大多数答案建议使用 git diff
,但该方法的 con 是它在控制台中显示差异,这并不总是很方便。
这里有一些替代方案,它们将改为打开 GUI。
使用 Gitk
通常,当 git(尤其是 Windows 和 git-scm)时,您会得到一个名为 GitK 的 GUI 工具,可用于显示更改。所以,只需输入:
gitk --all
并且将打开 GUI,您可以在其中查看提交和每次提交所做的更改。
使用 DiffTool
改用 git difftool
,并在首选差异工具中显示差异。
只需在控制台中键入 difftool
而不是 diff
,如下所示:
查看两个分支之间的变化:
# For all the files
git difftool branch1..branch2
# For a single file
git difftool branch1..branch2 "filepath"
查看上次提交的更改
# For all the files
git difftool HEAD~1
# For a single file
git difftool HEAD~1 "filepath"
使用 ID(all/single 文件)查看自提交以来的更改:
# For all the files
git difftool commitId
# For a single file
git difftool commitId "filepath"
查看两次提交之间的变化:
# For all the files
git difftool commitId1..commitId2
# For a single file
git difftool commitId1..commitId2 "filepath"
备注
difftool
将打开您的默认差异工具,通常设置为 VimDiff。
但是,如果您想将其更改为其他内容,只需将 id 更改为 this.
在我的例子中,我使用了 Visual Studio as a diff tool,它是这样工作的:
- 如果您仍然想在控制台中看到更改,只需将上面的命令与
git diff
一起使用,而不是 git difftool
,方法是离开参数相同。
我刚刚完成了一个相当大的分支,我已经为此工作了 2 个多月。我只是将 master 重新定位到它并且不得不解决一些冲突。既然我已经重新定位了我的功能分支,我该如何逐个文件查看特色分支与主分支上比较的突出差异,以确保正确完成重新定位?
像这样:
git diff master
您一次可以提供一个文件:
git diff master -- some-file-path
git diff branch1..branch2
使用此命令,Git 将比较两个分支的尖端(也称为 HEAD)并显示可用于查看修改的“差异”重述。 简而言之,它将向您显示“branch2”拥有但不在“branch1”中的所有提交。
git diff branch1...branch2
使用带有三个点的“git diff”比较右分支的顶部(HEAD)与两个分支的共同祖先。
此处的大多数答案建议使用 git diff
,但该方法的 con 是它在控制台中显示差异,这并不总是很方便。
这里有一些替代方案,它们将改为打开 GUI。
使用 Gitk
通常,当 git(尤其是 Windows 和 git-scm)时,您会得到一个名为 GitK 的 GUI 工具,可用于显示更改。所以,只需输入:
gitk --all
并且将打开 GUI,您可以在其中查看提交和每次提交所做的更改。
使用 DiffTool
改用 git difftool
,并在首选差异工具中显示差异。
只需在控制台中键入 difftool
而不是 diff
,如下所示:
查看两个分支之间的变化:
# For all the files
git difftool branch1..branch2
# For a single file
git difftool branch1..branch2 "filepath"
查看上次提交的更改
# For all the files
git difftool HEAD~1
# For a single file
git difftool HEAD~1 "filepath"
使用 ID(all/single 文件)查看自提交以来的更改:
# For all the files
git difftool commitId
# For a single file
git difftool commitId "filepath"
查看两次提交之间的变化:
# For all the files
git difftool commitId1..commitId2
# For a single file
git difftool commitId1..commitId2 "filepath"
备注
difftool
将打开您的默认差异工具,通常设置为 VimDiff。
但是,如果您想将其更改为其他内容,只需将 id 更改为 this.
在我的例子中,我使用了 Visual Studio as a diff tool,它是这样工作的:- 如果您仍然想在控制台中看到更改,只需将上面的命令与
git diff
一起使用,而不是git difftool
,方法是离开参数相同。