git fatal:不明确的参数'origin':未知修订或路径不在工作树中

watbbzwu  于 2022-12-10  发布在  Git
关注(0)|答案(9)|浏览(528)

我过去经常使用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>...]'

状态:

user@host> git status
On branch master
nothing to commit, working directory clean

遥控器:

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

版本号:

user@host> git --version
git version 2.7.4

与“git版本1.8.1.4“git diff origin的作品。
顺便说一句如果我使用“git diff origin/master”,我会看到相同的错误消息
顺便说一句,我认为“/master”是多余的。明智的默认设置是将本地分支与远程站点上的相同分支进行比较。

rur96b6h

rur96b6h1#

运行以下设置,然后您将准备使用brew
运行unintsall脚本:-/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
设置Git压缩:-git config --global core.compression 0
设置Git缓冲区大小:-git config --global http.postBuffer 1048576000
运行安装脚本:-/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

htzpubme

htzpubme2#

这对我来说很有效,用文件的相对路径替换REL_PATH_TO_FILE以删除Removing sensitive data from a repository。文档说是完整路径-但这对我来说是错误的-所以我尝试了rel路径,它成功了。

<from the repo dir>git filter-branch --force --index-filter "git rm --cached --ignore-unmatch REL_PATH_TO_FILE" --prune-empty --tag-name-filter cat -- --all
ulydmbyx

ulydmbyx3#

尝试安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

然后,安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
9gm1akwq

9gm1akwq4#

git diff命令通常需要一个或多个提交哈希来生成您的diff。您似乎提供了一个远程对象的名称。
如果你有一个名为origin的分支,如果你在diff命令中提供了origin,那么在分支的顶端会使用commit hash,但是当前(没有对应的分支)命令会产生你看到的错误。
如果您要查看本地分支和远程分支之间的区别,另一种方法是:
git diff origin/<branchname>
git diff <branchname> origin/<branchname>
Or other documented variants

**编辑:**进一步阅读后,我意识到我有一点错,git diff origin是对指定遥控器头进行比较的简写,因此git diff origin = git diff origin/HEADcompare local git branch with remote branch?Why is "origin/HEAD" shown when running "git branch -r"?

这听起来像你的源没有一个HEAD,在我的情况下,这是因为我的远程是一个空的仓库,从来没有一个HEAD设置。
运行git branch -r将显示是否设置了origin/HEAD,如果设置了,它指向哪个分支(例如origin/HEAD -> origin/<branchname>)。

8mmmxcuj

8mmmxcuj5#

我遇到了同样的情况,其中git diff origingit diff origin master等命令产生了问题中报告的错误,即Fatal: ambiguous argument...
为了解决这个问题,我运行了命令
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
设置refs/remotes/origin/HEAD指向原始/主分支。
运行此命令之前,git branch -a的输出为:

* master
  remotes/origin/master

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

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

(其他的答案已经指出错误的来源是HEAD没有被设置为源。但是我认为提供一个可以用来修复有问题的错误的命令是有帮助的,尽管这对一些用户来说可能是显而易见的。
其他信息:
对于那些喜欢在设置和取消设置refs/remotes/origin/HEAD之间来回实验的人,这里有一些例子。
要取消设置:
git remote set-head origin --delete
要设置:
(除本答案开头所示方式外的其他方式)
git remote set-head origin master以显式设置原点/标头

git remote set-head origin --auto来查询远程并自动将origin/HEAD设置为远程的当前分支。
参考文献:

  • 这个SO Answer
  • 此SO备注及其相关答案
  • git remote --help请参阅设置头说明
  • git symbolic-ref --help
hsgswve4

hsgswve46#

对于那些在CI/CD上遇到这个错误的人,在运行pip install pyflakes diff-cover后,在我的GitHub Actions CI/CD工作流中添加下面的行对我很有效:
git fetch origin master:refs/remotes/origin/master
下面是一个来自diff-cover github repo的解决方案的片段:

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

我在下面的链接上得到了解决方案。这是一个记录在案的diff-cover错误。
https://diff-cover.readthedocs.io/en/latest//README.htmlhttps://github.com/Bachmann1234/diff_cover/blob/master/README.rst显示器
希望这对你有帮助:-)。

o0lyfsai

o0lyfsai7#

有时候事情可能会更简单。我带着确切的问题来到这里,尝试了所有的建议。但后来发现问题只是本地文件路径不同,我在不同的文件夹上。:-)
例如
~//我的项目/mygitrepo/应用程序/$ git diff应用程序/测试文件. txt
应该是
~/我的项目/mygitrepo/应用程序/$ git差异测试文件. txt

xesrikrc

xesrikrc8#

如果origin指向磁盘上的一个空存储库,那么如果该目录被移动(即使您更新了工作副本的远程目录),就会发生这个错误。

$ mv /path/to/origin /somewhere/else
$ git remote set-url origin /somewhere/else
$ git diff origin/master
fatal: ambiguous argument 'origin': unknown revision or path not in the working tree.

从新的origin中提取一次即可解决问题:

$ git stash
$ git pull origin master
$ git stash pop
tvokkenx

tvokkenx9#

  • 删除opt/自制程序文件夹cd /optsudo rm -rf homebrew
  • 安装自制软件:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

如果您是第一次安装自制软件,并面临这个错误,也比第二次尝试第一次清除删除/opt/homebrew文件夹第一。

相关问题