2012-09-06 13 views
55

git list-pathのようなものを探しています(.gitディレクトリ) のパスを印刷しています。サブディレクトリにある可能性がある場合にローカルgitリポジトリのパスを見つける方法

背景:私は プロジェクト/フォルダのかなりの部分でgitバージョンコントロールを設定しました。それらのうちのいくつかはネストされているので、echo自身のリポジトリを持つ1つのディレクトリは、別のリポジトリで追跡された別のディレクトリのサブフォルダです。

など。私のホームディレクトリ(~)に私のドットファイルを追跡するためにgitを使用しますが、フォルダ内~/photo/meta-mix/別のリポジトリ を使って追跡する別のプロジェクトがあります。さて、私はディレクトリ ~/photo/meta-match/に別のプロジェクトを設定しましたが、自分自身の リポジトリがあるかどうかはもう分かりません。ですから、私はこのディレクトリがバージョン であるかどうか、リポジトリがどこにあるかを知りたいと思います。

これをgitコマンドでどうやって行うことができますか? git status~/photo/meta-match/は、独自のリポジトリを持っているか、それだけで~のリポジトリを参照する場合と、私に

nothing to commit 

の両方の例を与えることができます。

答えて

70
git rev-parse --show-toplevel 

gitリポジトリ内で実行すると十分です。 git rev-parse manページから

--show-toplevel 

は、最上位ディレクトリの絶対パスを表示します。古いバージョン(1.7.x前)については

、他のオプションは、 "Is there a way to get the git root directory in one command?" に記載されています:

git rev-parse --git-dir 

.gitディレクトリのパスを与えるだろうと。


OPは言及:

git rev-parse --show-prefix 

Gitのレポルートの下にローカルパスを返します。


(あなたはgitのレポのルートである場合は空)注:1は、Gitのレポにある場合は、単純にチェックするために、私は次のコマンドは、非常に表情豊か見つける:

git rev-parse --is-inside-work-tree 

そして、はい、場合あなたは.gitのgit-dirのフォルダにあるかどうかを確認する必要があります。ちょうど `--show-toplevel`を印刷します(v1.7.0前)` git`の古いバージョンでは残念ながら

git rev-parse --is-inside-git-dir 
+0

- それもありませんエラー。 –

+0

@BenJacksonアップグレードする機会はありますか?そうでない場合、私は別のコマンドを追加するように編集しました – VonC

+0

私の質問ではありません:私はちょうど答えにコメントしています。古い動作を考えると、誰かがそのメソッドに依存するスクリプトをリリースした場合、私は本当の混乱を見ることができます。 –

関連する問題