git diff给出了暧昧的论证错误

时间:2015-10-15 15:35:56

标签: git git-diff

我最近从SVN转到git,并尝试学习git的方法。 我需要找到我的存储库的2个分支之间已更改的文件。我使用以下命令:

git diff branch_2..branch_1

我得到了以下错误:

fatal: ambiguous argument 'branch_2..branch_1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

git branch给出了以下o / p:

git branch -a
* branch_1
master/origin
remotes/origin/HEAD -> origin/master
remotes/origin/branch_2
remotes/origin/branch_1

2 个答案:

答案 0 :(得分:18)

如果您只是这样做:

git diff branch2..branch1

这不会起作用,如您的git分支列表中列出的,您的&#39;遥控器&#39;被指定为&#34; origin&#34;。这实际上意味着您在遥控器上有这些分支,但它们实际上并未在本地检出。

所以你有两个选择。试试这些,让我知道它是怎么回事。

根据提供的分支列表:

使用origin /

进行差异
git diff origin/branch2..branch1

如果您想在本地签出这些分支以执行差异,并且可能在您的工作站上使用它们。此外,支持这种格式的差异:

git diff branch2..branch1

您需要做的就是检查这些分支,将它们设置为远程的本地分支。只需这样做:

git checkout branch2

然后你可以做

git diff branch2..branch1

答案 1 :(得分:0)

有时候您会得到一个shallow git repo,它是使用

创建的
git clone --depth 1 <repo-url>

尝试git diff失败并带有fatal: ambiguous argument error

fatal: ambiguous argument [...]: unknown revision or path not in the working tree.

然后,您需要在本地提供参考。将浅层git repo从浅层git repo转换为完整(非浅层)repo,请参见git deep fetchgit unshallow

然后它应该能够git diff分支:

git diff branch1

上述示例将branch1与活动的工作分支进行比较。

HTH