我有一个存储库,主分支里有一个名为 foo
的文件。我切换到了 bar 分支并对 foo
进行了一些更改。现在我该如何运行 git diff
命令来比较这个未提交的副本和主分支上的副本呢?
我有一个存储库,主分支里有一个名为 foo
的文件。我切换到了 bar 分支并对 foo
进行了一些更改。现在我该如何运行 git diff
命令来比较这个未提交的副本和主分支上的副本呢?
您正在尝试将工作树与特定的分支名称进行比较,因此您需要执行以下操作:
git diff master -- foo
这是来自 git-diff 的这种形式(请参见 git-diff 手册)
git diff [--options] <commit> [--] [<path>...]
This form is to view the changes you have in your working tree
relative to the named <commit>. You can use HEAD to compare it with
the latest commit, or a branch name to compare with the tip of a
different branch.
顺便提一下,还有一个--cached
(也称为--staged
)选项,用于查看您已暂存的差异而不是工作树中的所有内容:
git diff [--options] --cached [<commit>] [--] [<path>...]
This form is to view the changes you staged for the next commit
relative to the named <commit>.
...
--staged is a synonym of --cached.
git difftool tag/branch filename
没有
-v选项。你是不是想用
-y`? - ks1322另外:git diff master..feature foo
因为对于我来说,git diff foo master:foo
在目录上不起作用。
git diff branch1:foo master:foo
。 - Meepgit diff mybranch master -- file
应该也可以工作
git diff deployment master -- file
和 git diff master deployment -- file
可以与任意两个分支正常工作。 - viktorkho还有其他可行的方法:
git diff master ./relative-path-to-foo
查看与当前分支的本地变更
git diff .
查看本地更改与任何其他现有分支的比较
git diff <branch-name> .
查看特定文件的更改
git diff <branch-name> -- <file-path>
确保在开始时运行git fetch
。
master
的分支和一个名为feature
的分支,并且您想要检查一个名为my_file
的特定文件,那么:
git diff master..feature /Path/to/my_file
显示分支master
和feature
上提交版本的my_file
之间的差异。git diff master -- /Path/to/my_file
显示工作目录(未暂存的文件)和分支master
的my_file
之间的差异。
git diff
的问题时,我总会想起 https://dev59.com/3m435IYBdhLWcg3wuicn#5257065 - VonCgit diff -- master:foo foo
- VonCgit diff foo master:foo
给出了致命错误,而git diff master:foo foo
是可工作的版本!键入--
使它们都能正常工作。有任何解释吗? - Łukasz Kożuchowskigit diff -- master:foo foo
无法正常工作 - 它似乎将参数master:foo
视为不存在的文件名(并忽略它),而不是分支中的文件。尝试交换最后两个参数 - 如果成功了,差异比较应该被反转,但输出不会改变。 - Kelvingit diff master:foo foo
,但不能反过来。我也不理解为什么。在 git 1.7.9.5 / Ubuntu 12.04 中,至少我可以执行git diff -R master:foo foo
来获得我实际想要的差异。当我尝试在 msysgit 1.9.4 / Windows 7 x64 中执行时,会出现fatal: unable to read 0000000000000000000000000000000000000000
的错误。如果不加-R
,则会像你使用 git 1.7.9.5 时一样收到相同的错误消息,但是在 1.9.4 中我会收到fatal: master:foo: no such path in the working tree
的错误消息。 - JMM