git diff 给出模棱两可的参数错误

git diff gives ambigious argument error

我最近从 SVN 转移到 git,并试图了解 git。 我需要找到在我的存储库的 2 个分支之间发生变化的文件。我对此使用以下命令:

git diff branch_2..branch_1

我收到以下错误:

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>...]'

git 分支给出以下 o/p:

git branch -a
* branch_1
master/origin
remotes/origin/HEAD -> origin/master
remotes/origin/branch_2
remotes/origin/branch_1

如果你只是在做:

git diff branch2..branch1

这行不通,正如您的 git 分支列表中所列,您的 'remotes' 被指定为 "origin"。这实际上意味着您在遥控器上拥有这些分支,但它们实际上并未在本地检出。

所以你在这里有两个选择。试试这些,让我知道进展如何。

根据提供的分支列表:

使用原点差异/

git diff origin/branch2..branch1

如果您想在本地检查这些分支以执行您的差异,并可能在您的工作站上处理它们。此外,支持这种格式的差异:

git diff branch2..branch1

您需要做的实际上是检出这些分支,将它们设置为远程的本地分支。只需这样做:

git checkout branch2

那你可以做

git diff branch2..branch1

有时您会得到 shallow git repo,使用

创建
git clone --depth 1 <repo-url>

尝试 git diff 失败 fatal: ambiguous argument error:

fatal: ambiguous argument [...]: unknown revision or path not in the working tree.

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

那么应该可以git diff分支:

git diff branch1

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

HTH