web-dev-qa-db-ja.com

おそらくサブディレクトリにいるときにローカルgitリポジトリのパスを見つける方法

私はgit list-path関連リポジトリのパス(.gitディレクトリ)を出力するようなものを探しています。

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

例えば。ホームディレクトリ(~)でgitを使用してドットファイルを追跡しますが、フォルダー~/photo/meta-mix/には別のリポジトリで追跡する別のプロジェクトがあります。ここで、たとえば、ディレクトリ~/photo/meta-match/に別のプロジェクトをセットアップしましたが、独自のリポジトリがあるかどうかはわかりません。したがって、このディレクトリがバージョン管理されているかどうか、およびそのリポジトリがどこにあるかを知りたいと思います。

Gitコマンドでこれを行うにはどうすればよいですか? git statusは私に与えることができます

nothing to commit

bothの場合、~/photo/meta-match/に独自のリポジトリがある場合、または~のリポジトリを単に参照する場合。

67
halloleo
git rev-parse --show-toplevel

gitリポジトリ内で実行すれば十分です。
From git rev-parse manページ:

--show-toplevel

最上位ディレクトリの絶対パスを表示します。

古いバージョン(1.7.xより前)の場合、他のオプションは「 1つのコマンドでgitルートディレクトリを取得する方法はありますか? 」にリストされています。

git rev-parse --git-dir

それは.gitディレクトリのパスを提供します。


OPの言及:

git rev-parse --show-prefix

これは、gitリポジトリルートの下のローカルパスを返します。 (gitリポジトリルートにいる場合は空)


注:gitリポジトリにあるかどうかを単純に確認するために、次のコマンドは非常に表現力があります。

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

はい、.git git-dirフォルダーにいるかどうかを確認する必要がある場合:

git rev-parse --is-inside-git-dir
88
VonC