2011-12-19 16 views
6

このコマンドは正常に動作します:gitでフルパスを使用するにはどうすればよいですか?

git diff relative/path/to/file.ext 

しかし、私は完全なパスを使用する場合、Gitはパスは「外のリポジトリである」と述べている:

git diff /full/path/then/relative/path/to/file.ext 

私はGitがで.gitディレクトリを見つけることができませんと仮定/ full、だから失敗するのです。

しかし、Subversionのように完全なパスをgitで理解できるようにするにはどうすればよいですか?

更新:gitのバージョン1.7.0.5

更新:これらのファイルは、私のリポジトリ内で常にあり、私の現在のディレクトリには、私のリポジトリ内にもあります!それでもエラーは出ます。

+0

をあなたがこれを必要とするなぜあなたは説明してもらえますか? – Mat

+1

"外部リポジトリ"は通常、現在のディレクトリがgitリポジトリに含まれていないので、gitコマンドは機能しません。 git作業ディレクトリに変更すると、どのパスでも動作するはずです。 – poke

+0

@Mats時々私は私のリポジトリの中にあるファイルへの完全なパスを見つける。私はそれらをdiffするためにパスの正しい部分を選択することを念頭に置く必要はありません、私はちょうど全体のファイルパスを選択する端子をダブルクリックして、それを貼り付け、 'git diff'を線の始まり。それははるかに高速です。 –

答えて

0

gitリポジトリの外側にあるファイルを比較する場合は、opendiffのようなdiffツールを使用して、リポジトリ外のファイルとリポジトリのファイルを比較する必要があります。

gitがファイル内で「考える」ため、外部ファイルを比較することはできません。

+0

'git diff -no-index-file1 file2' – knittl

13

どのバージョンのgitを使用していますか?それは関係なく、パスのフォーマットの動作するはずです、すなわち

cd git 
git diff -- git.c 
git diff -- ~/git/git.c 

しかし、あなたはこれが機能するためにgitリポジトリ内でなければなりません!あなたは絶対にリポジトリ外部から実行するのgitコマンドが必要な場合は、--work-tree--git-dirスイッチを使用します。

git --work-tree=~/git --git-dir=~/git/.git diff -- git.c 
git --work-tree=~/git --git-dir=~/git/.git diff -- ~/git/git.c 
+1

バージョン1.7.0.5を実行するだけです。あなたの例では〜/ gitはgitの作業ディレクトリのルートですか?私はあなたのすべての提案を試みましたが、私はまだ同じエラーがあります。 –

+0

@willSheppard:うん、 '〜/ git'はworktreeと.gitディレクトリを含む最上位のディレクトリです – knittl

+0

私のgitは' --work-tree'で '〜'を理解できませんでした。私はフルパスを使わなければならなかった。 – sam

関連する問題