我最近从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 branch给出了以下o / p:
git branch -a
* branch_1
master/origin
remotes/origin/HEAD -> origin/master
remotes/origin/branch_2
remotes/origin/branch_1
答案 0 :(得分:18)
如果您只是这样做:
git diff branch2..branch1
这不会起作用,如您的git分支列表中列出的,您的&#39;遥控器&#39;被指定为&#34; origin&#34;。这实际上意味着您在遥控器上有这些分支,但它们实际上并未在本地检出。
所以你有两个选择。试试这些,让我知道它是怎么回事。
根据提供的分支列表:
使用origin /
进行差异git diff origin/branch2..branch1
如果您想在本地签出这些分支以执行差异,并且可能在您的工作站上使用它们。此外,支持这种格式的差异:
git diff branch2..branch1
您需要做的就是检查这些分支,将它们设置为远程的本地分支。只需这样做:
git checkout branch2
然后你可以做
git diff branch2..branch1
答案 1 :(得分:0)
有时候您会得到一个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 repo从浅层git repo转换为完整(非浅层)repo,请参见git deep fetch和git unshallow。
然后它应该能够git diff
分支:
git diff branch1
上述示例将branch1
与活动的工作分支进行比较。
HTH