Чтобы найти Git Repo по его идентификатору - PullRequest
0 голосов
/ 10 августа 2009

Как найти все идентификаторы GIT на вашем компьютере?

Я создал Git-репо на Github. В одной из моих папок есть стрелка и цифра, аналогичная f1f633. Я знаю, что репо является одним из моих других репо.

Однако я бы хотел иметь возможность искать репо. Я искал фигуру в Github и в Google безуспешно.

Возможно, есть какой-то инструмент, который позволяет мне искать все идентификаторы на моем компьютере по Git.

Ответы [ 2 ]

3 голосов
/ 10 августа 2009

Самый простой способ сделать это - использовать в каждом хранилище git cat-file -e, чтобы проверить, есть ли в хранилище этот объект:

git cat-file -e f1f633 2>/dev/null && echo "found"

Просто объедините его с любым способом запуска во всех репозиториях git на вашей машине, например:

find / -name objects | fgrep .git/objects | while read dir; do
    (cd "$dir" && git cat-file -e f1f633 2>/dev/null && echo "found: $dir")
done

Вы также можете использовать другие формы git cat-file, чтобы получить больше данных об объекте; подробности см. в руководстве.

1 голос
/ 15 августа 2009

Одним из решений было бы объединить find с " git rev-parse --verify" или " git cat-file -e"; при условии, что у вас есть только непокрытые репозитории:

find / -name ".git" -type d -print |
while read repo; do
    git --git-dir="$repo" cat-file -e f1f633 2>/dev/null && echo "found: $repo"
done

Обратите внимание, что вы должны проверить, является ли найденный объект тем, что вы искали с помощью "git show f1f633", поскольку в разных хранилищах могут быть разные объекты с одинаковым префиксом (частичный SHA-1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...