git diff给出了暧昧的论证错误

am2*_*m28 16 git git-diff

我最近从SVN转到git,并尝试学习git的方法.我需要找到我的存储库的2个分支之间已更改的文件.我使用以下命令:

git diff branch_2..branch_1
Run Code Online (Sandbox Code Playgroud)

我得到了以下错误:

fatal: ambiguous argument 'branch_2..branch_1': 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)

git branch给出以下o/p:

git branch -a
* branch_1
master/origin
remotes/origin/HEAD -> origin/master
remotes/origin/branch_2
remotes/origin/branch_1
Run Code Online (Sandbox Code Playgroud)

idj*_*jaw 19

如果你只是在做:

git diff branch2..branch1
Run Code Online (Sandbox Code Playgroud)

这将不起作用,如您的git分支列表中所列,您的"遥控器"被指定为"原点".这实际上意味着您在遥控器上有这些分支,但它们实际上并未在本地检出.

所以你有两个选择.试试这些,让我知道它是怎么回事.

根据提供的分支列表:

差异使用原点/

git diff origin/branch2..branch1
Run Code Online (Sandbox Code Playgroud)

如果你想在本地签出这些分支来执行你的差异,也许你可以在你的工作站上工作.此外,支持这种格式的差异:

git diff branch2..branch1
Run Code Online (Sandbox Code Playgroud)

您需要做的是实际检查这些分支以将它们设置为远程的本地分支.只需这样做:

git checkout branch2
Run Code Online (Sandbox Code Playgroud)

那你可以做

git diff branch2..branch1
Run Code Online (Sandbox Code Playgroud)


Gen*_*ack 6

有时你会得到一个浅层 git repo,使用以下命令创建

git clone --depth 1 <repo-url>
Run Code Online (Sandbox Code Playgroud)

尝试git diff失败fatal: ambiguous argument error

fatal: ambiguous argument [...]: unknown revision or path not in the working tree.
Run Code Online (Sandbox Code Playgroud)

然后,您需要使您的参考在本地可用。将浅层 git 存储库从浅层存储库转换为完整(非浅层)存储库,请参阅git deep fetchgit unshallow

然后它应该能够git diff分支:

git diff branch1
Run Code Online (Sandbox Code Playgroud)

上述示例branch1与活动工作分支进行比较。

华泰