致命错误:'<branch_name>'参数不明确:既包含修订版本又包含文件名。

50

这是我所做的:

  • 我运行了 git checkout -b 分支名
  • 我在 分支名 上进行了一些提交。
  • 我切换到了 master 分支,并进行了快进式合并。

当我运行 git log 分支名 --oneline 命令时,会得到以下信息:

fatal: ambiguous argument 'branch_name': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

可能出了什么问题?

3个回答

66

这段话告诉你有一个名为'branch_name'的分支,同时也有一个名为'branch_name'的文件或目录。

如果你想让命令将'branch_name'视为一个分支,请使用:

git log --oneline branch_name --

如果您希望将“branch_name”视为文件进行处理,请使用

git log --oneline -- branch_name

1
这比错误信息本身更具信息量吗? - jub0bs
13
有些人很难理解“分支”是“修订版本”的概念,所以我试图解释清楚。 - Andrew C
1
请注意,仅使用 gitk branch_name 报告了“模糊参数”行,而没有说明如何修复它。这个答案同样适用于 gitk - reece
@Jubobs 我在特定版本(例如 git show HEAD:some/file.txt)上运行 git show 命令时遇到了错误。在这种情况下,错误信息为“fatal: ambiguous argument 'HEAD:some/file.txt': both revision and filename”,但这并没有提供太多帮助,尤其是因为 git show HEAD -- some/file.txt 执行的是完全不同的操作。 - Ajedi32
@Ajedi32 好的,没问题 :) - jub0bs

3
如果有人在尝试以下操作时遇到问题并出现上述错误,请使用以下解决方法。
问题:
#In master branch
git checkout -b feature-a

#changed to feature-a branch
vi a.txt
git commit -m "adding a file" a.txt
git push
git diff master

fatal: ambiguous argument 'master': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

解决方案:-
git diff origin/master

1
通常情况下,我会像这样使用diff:
git diff -r 2e706c4dd3 -r 838112ed50 > codereview.txt

我要制作一个好的codereview.txt文件。结果,我不小心运行了这个命令:

git diff -r 2e706c4dd3 -r 838112ed50 > 838112ed50

这使文件838112ed50本身成为了问题,因此git diff命令不明确,无法确定我是要diff文件还是分支。

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