使用git diff时出现"fatal: bad revision"错误

9
我正在尝试展示一个特定文件夹的起始状态和变化,我希望它只显示那些添加和修改过的名称,使用以下命令,但是它返回了一个错误。
命令:
git diff --name-only --relative --diff-filter AM origin -- foldername/

错误:

fatal: bad revision 'origin'

为什么突然发生这种情况?我该如何解决它?
编辑
使用另一个存储库和“origin / master”只会返回不同的结果。
C:\gitprojects\samplefolder (master -> origin)
λ git diff --name-only --relative --diff-filter AM origin/master
readme.md

C:\gitprojects\samplefolder (master -> origin)
λ git diff --name-only --relative --diff-filter AM master origin/master
readme.md

C:\gitprojects\samplefolder (master -> origin)
λ git diff --name-only --relative --diff-filter AM origin
Properties/sample.properties
readme.md

1
我的猜测是origin是一个远程而不是修订版本。也许尝试使用origin/master?至少使用origin/master代替origin我就不会出现错误了。虽然我不确定你想要比较什么。也许你可以添加更多关于你期望命令产生的具体细节? - anothernode
我也不理解这个错误,所以才在问。至于预期结果,我希望它能够显示与我所在的任何远程分支不同的文件,而不仅仅是在主分支中。 - Cante Ibanez
1个回答

1
请查看git diffman页面(运行man git-diff)。
描述部分,您可以确定第4种调用git diff的方式是您正在使用的方式。 man页面详细介绍了它的用法:
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.

在您的情况下,您正在使用字符串origin作为要将工作树与之进行比较的<commit>(或修订版本)。这是行不通的,因为origin不是一个修订版/提交。这就是错误消息告诉您的内容。 origin是一个"远程"。远程只是对存储库的另一个远程克隆的引用,git diff无法在整个存储库之间进行比较,只能在修订版/提交之间进行比较。
您可以通过指定要进行比较的提交来解决此问题。一个例子是origin/master,意思是要与名为origin的远程上的master分支的末尾进行比较。要指定哪个提交取决于您要具体找出什么。

使用“git diff”命令可以返回不同的输出,下面是在另一个存储库中工作的diff的示例。C:\gitprojects\samplefolder (master -> origin) λ git diff --name-only --relative --diff-filter AM master origin/master readme.mdC:\gitprojects\samplefolder (master -> origin) λ git diff --name-only --relative --diff-filter AM origin Properties/sample.properties readme.md - Cante Ibanez
也许您在该存储库中创建了一个名为 origin 的分支,因此,在这种情况下,名为 origin 的分支将遮盖名为 origin 的远程分支。 - anothernode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接