我过去经常使用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”是多余的。明智的默认设置是将本地分支与远程站点上的相同分支进行比较。
9条答案
按热度按时间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)"
htzpubme2#
这对我来说很有效,用文件的相对路径替换REL_PATH_TO_FILE以删除Removing sensitive data from a repository。文档说是完整路径-但这对我来说是错误的-所以我尝试了rel路径,它成功了。
ulydmbyx3#
尝试安装:
然后,安装:
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/HEAD
(compare 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>
)。8mmmxcuj5#
我遇到了同样的情况,其中
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指向原始/主分支。
运行此命令之前,
git branch -a
的输出为:运行该命令后,错误不再发生,
git branch -a
的输出为:(其他的答案已经指出错误的来源是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设置为远程的当前分支。参考文献:
git remote --help
请参阅设置头说明git symbolic-ref --help
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显示器
希望这对你有帮助:-)。
o0lyfsai7#
有时候事情可能会更简单。我带着确切的问题来到这里,尝试了所有的建议。但后来发现问题只是本地文件路径不同,我在不同的文件夹上。:-)
例如
~//我的项目/mygitrepo/应用程序/$ git diff应用程序/测试文件. txt
应该是
~/我的项目/mygitrepo/应用程序/$ git差异测试文件. txt
xesrikrc8#
如果
origin
指向磁盘上的一个空存储库,那么如果该目录被移动(即使您更新了工作副本的远程目录),就会发生这个错误。从新的
origin
中提取一次即可解决问题:tvokkenx9#
cd /opt
,sudo rm -rf homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
如果您是第一次安装自制软件,并面临这个错误,也比第二次尝试第一次清除删除
/opt/homebrew
文件夹第一。