致命的:模糊的论证'起源':未知的修订或路径不在工作树中

gue*_*tli 37 git

我过去git diff origin经常使用.

在不同的环境中,它不起作用.我不知道为什么.

user@host> git diff origin
fatal: ambiguous argument 'origin': unknown revision or path 
       not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Run Code Online (Sandbox Code Playgroud)

状态:

user@host> git status
On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

遥控器:

user@host> git remote -v
origin  https://example.com/repos/djangotools (fetch)
origin  https://example.com/repos/djangotools (push)
Run Code Online (Sandbox Code Playgroud)

版:

user@host> git --version
git version 2.7.4
Run Code Online (Sandbox Code Playgroud)

用"git版本1.8.1.4" git diff origin工作.

顺便说一句,如果我使用"git diff origin/master",我会看到相同的错误信息

BTW2,我认为"/ master"是多余的.理所当然的默认设置是将本地分支与远程站点上的同一分支进行比较.

Chr*_*ris 31

git diff命令通常需要一个或多个提交哈希来生成diff.您似乎提供了遥控器的名称.

如果你有一个名为originbranch的分支,那么如果提供origin给diff命令,则会使用分支顶端的提交哈希,但是当前(没有相应的分支)命令将产生你看到的错误.可能是您以前使用名为的分支的情况origin.

另一种方法是,如果您正在尝试查看本地分支与远程分支之间的差异,则可能会出现以下情况:

git diff origin/<branchname>

git diff <branchname> origin/<branchname>

或其他记录的变体.

编辑:进一步阅读,我意识到我有点错误,git diff origin是对指定遥控器的头部进行差异的简写,所以git diff origin= git diff origin/HEAD(比较本地git分支与远程分支?,为什么在运行"git时显示"origin/HEAD"分支-r"?)

听起来你的起源没有HEAD,在我的情况下,这是因为我的遥控器是一个从未有HEAD设置的裸存储库.

运行git branch -r将显示是否origin/HEAD已设置,如果已设置,它将指向哪个分支(例如origin/HEAD -> origin/<branchname>).

  • 非常感谢你.是的,`git branch -r`在一个repo中是空的,而在另一个repo中它不是空的.这就是为什么`git diff origin`在一个repo中工作而不在另一个repo中. (2认同)

cos*_*ust 10

我遇到了同样的情况,其中诸如git diff origin或的命令git diff origin master产生了问题中报告的错误,即Fatal: ambiguous argument...

为了解决这种情况,我运行了命令

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master

将refs / remotes / origin / HEAD设置为指向origin / master分支。

运行此命令之前,输出git branch -a为:

* master
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

运行命令后,错误不再发生,并且输出git branch -a为:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

(其他答案已经确定错误的来源是未将HEAD设置为起源。但是,我认为提供一个可用于修复所涉及的错误的命令会有所帮助,尽管对于某些用户而言这可能是显而易见的。)


附加信息:

对于喜欢尝试并在设置和取消设置ref / remotes / origin / HEAD之间来回移动的任何人,这里有一些示例。

取消设置:
git remote set-head origin --delete

要设置:(
除了此答案开头显示的方式之外,还有其他方式)
git remote set-head origin master可以显式设置原点/头部,
或者
git remote set-head origin --auto可以查询遥控器并自动将原点/ HEAD设置为遥控器的当前分支。

参考文献:

  • 这个答案
  • SO评论及其相关答案
  • git remote --help 见机头说明
  • git symbolic-ref --help


小智 8

对于那些在 CI/CD 上遇到此错误的人,在运行后立即在我的 GitHub Actions CI/CD 工作流程中添加以下行对我有用pip install pyflakes diff-cover

git fetch origin master:refs/remotes/origin/master

这是来自 diff-cover github repo 的解决方案的片段:

解决方案:diff-cover 将覆盖率 XML 报告中的源文件与 git diff 中的源文件进行匹配。出于这个原因,文件的相对路径匹配很重要。如果您使用coverage.py 生成覆盖XML 报告,请确保从同一工作目录运行diff-cover。

我在下面的链接上得到了解决方案。这是一个记录在案的diff-cover错误。

https://diff-cover.readthedocs.io/en/latest//README.html https://github.com/Bachmann1234/diff_cover/blob/master/README.rst

希望这可以帮助 :-)。


hum*_*zed 6

如果您在 GitHub 操作中遇到此问题,您需要添加:

fetch-depth: 0
Run Code Online (Sandbox Code Playgroud)

所以步骤是

steps:
  - name: Checkout repository
    uses: actions/checkout@v3
    with:
      fetch-depth: 0
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看https://github.com/actions/checkout/issues/296


归档时间:

查看次数:

54212 次

最近记录:

6 年,2 月 前