web-dev-qa-db-ja.com

git diffはあいまいな引数エラーを出します

私は最近、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
18
am28

あなたが単にやっている場合:

git diff branch2..branch1

これは機能しません。gitブランチリストにリストされているように、「リモート」は「Origin」として指定されています。これが実際に意味することは、リモートにそれらのブランチがあることですが、それらは実際にはローカルにチェックアウトされていません。

したがって、ここには2つのオプションがあります。これらを試して、どうなるか教えてください。

提供されたブランチリストに基づく:

Originを使用して比較/

git diff Origin/branch2..branch1

これらのブランチをローカルでチェックアウトして差分を実行し、ワークステーションでそれらを処理する場合。さらに、この形式でdiffをサポートします:

git diff branch2..branch1

あなたがしなければならないことは、実際にそれらのブランチをチェックアウトして、それらをリモートからローカルブランチとして設定することです。単にこれを行う:

git checkout branch2

その後、あなたは行うことができます

git diff branch2..branch1
19
idjaw

時々 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リポジトリから完全な(浅くない)リポジトリに変換します。 git deep fetch および git unshallow を参照してください。

次に、それはgit diffブランチにできるはずです:

git diff branch1

前述の例では、branch1をアクティブな作業ブランチと比較しています。

HTH

0
Gen.Stack