2011-02-24 21 views
10

私は自分のシステムにいくつかのgitリポジトリを持っており、それらをすべてターミナルにリストしたいと思います。端末にgitリポジトリをリストアップする方法はありますか?

/パス/に/私/ gitの/レポ/ 1/REPONAME1
/パス/に/私/ gitの/レポ/ 2/REPONAME2
:私が探している何

はこのようなものです /path/to/my/git/repo/3/REPONAME3

ブランチ名とレポのステータスを表示する方法を考え出すことができます。 [マスター] c:0 u:1 d:0、それは素晴らしいでしょう。

+2

これはhttp://stackoverflow.com/questions/2765253/git-status-across-multiple-repositories-on-a-macあなたにも便利なアイデアを見つけることができる場所に少し似ています。 – VonC

+0

はい、それは私を助けてくれました。それを指摘していただきありがとうございます。 – studiomohawk

答えて

7

システム上にあるすべてのgitリポジトリを一覧表示するには、コマンドラインでbashシェル端末で次のコマンドを実行して見つけます。

find/-name .git -type d -exec dirname {} \; 
+0

これは合理的な最初の近似ですが、多くは見逃しています。裸のリポジトリは、gitディレクトリを指定するために.gitという名前の通常のファイルを使用するreposと同様に、見逃されます。 –

+0

* 'C:\ xamppの\ htdocsに\ rimedit>' '*/-name .git型D -execのdirname {} \' ' " Cを見つける:/ユーザー/ヤクブ/のAppData /ローカル/ GitHubの/ PortableGit_fed20eba68b3e238e49a47cdfed0a45 783d93651 /bin/find.exe ":' ** '引数が' -exec 'にない** –

2

lsgitはこれを実行するスクリプトです。基本的にlocate -br '^HEAD$'のラッパーです。

ローカルマシン上に同じリポジトリのクローンが複数ある場合、それらのリポジトリが関連していることを示します。

5

これはfindコマンドよりも正確で、はるかに高速です。私はそれが改善できると確信していますが、それは良いスタートです。明らかに、このコマンドを実行する前に、ファイルデータベースを最新の状態にする必要があります。 Linuxシステムでは、 'updatedb'を実行することでこれを行うことができます。

locate -br '\.git$' | rev | cut -c 6- | rev 
関連する問題