2011-02-24 3 views
10

У меня есть несколько репозиториев git в моей системе, и я хочу перечислить их все в терминале.Есть ли способ перечислить репозитории git в терминале?

Что я ищу что-то вроде этого:

/путь/к/мой/мерзавец/репо/1/REPONAME1
/путь/к/мой/мерзавец/репо/2/REPONAME2
/path/to/my/git/repo/3/REPONAME3

Если вы можете придумать, как показать название ветки и статус репо, например. [master] 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. –

+0

* 'C: \ xampp \ htdocs \ rimedit>' * 'find/-name .git -type d -exec dirname {} \' '' C:/Пользователи/Jakub/AppData/Local/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 
Смежные вопросы