Когда вы работаете в каком-либо каталоге Git, как вы можете получить имя репозитория Git в каком-либо репозитории Git? Есть ли какие-нибудь команды Git?
# I did check out bar repository and working in somewhere
# under bar directory at this moment such as below.
$ git clone git://github.com/foo/bar.git
$ cd bar/baz/qux/quux/corge/grault # and I am working in here!
$ git xxx # <- ???
bar
git
repository
гипкомпания
источник
источник
Ответы:
Что ж, если для имени репозитория вы имеете в виду имя корневого каталога Git (тот, который содержит каталог .git), вы можете запустить это:
Эта
git rev-parse --show-toplevel
часть дает вам путь к этому каталогу иbasename
удаляет первую часть пути.источник
.git
подкаталог, поэтому неверно, что «если для имени репозитория вы имеете в виду имя корневого каталога git».sed -n '1 p' test.ip | basename
basename`git rev-parse --show-toplevel
: / var / www "?? Как вы, вероятно, видите, эта строка не будет работать из-за использования `` внутри ''git --git-dir=<some git repo>/.git rev-parse --show-toplevel
и он вернет вам / var / www / htmlВ общем, нельзя этого делать. Git не волнует, как называется ваш репозиторий git. Например, вы можете переименовать каталог, содержащий ваш репозиторий (один с
.git
подкаталогом), и git даже не заметит этого - все будет продолжать работать.Однако, если вы его клонировали, вы можете использовать команду:
для отображения большого количества информации об исходном пульте дистанционного управления, из которого вы клонировали свой репозиторий, и он будет содержать исходный URL-адрес клона.
Если, однако, вы удалили ссылку на исходное удаленное использование
git remote rm origin
или если вы создали этот репозиторий, используяgit init
, такую информацию получить просто невозможно - ее нигде нет.источник
git branch
:) (активная ветка будет отмечена звездочкой*
).Нет необходимости связываться с репозиторием, чтобы получить имя, и имя папки не обязательно будет отражать удаленное имя.
Я обнаружил, что это наиболее точный и эффективный способ получить текущее имя репозитория:
Это должно работать с Git 1.8.1.5. До этого
git-repo-config
работала бы устаревшая команда (уже в Git 1.7.5).источник
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
может быть запущена из любого места, вам не нужно находиться внутри репозитория git.В git v2.7.0 +
get-url
дляgit-remote
command была введена подкоманда .Оболочка POSIX:
PowerShell:
источник
.git
в конце строки с помощью этого метода, поэтому я добавил разделение, чтобы убрать его:(git remote get-url origin | Split-Path -leaf).split('.')[0]
trim()
def repo = powershell(returnStdout: true, script: "(git remote get-url origin | Split-Path -leaf).split('.')[0]" ).trim()
Другие ответы по-прежнему не будут работать, если имя вашего каталога не соответствует имени удаленного репозитория (а может). Вы можете получить настоящее имя репозитория примерно так:
git remote show origin -n | grep "Fetch URL:" | sed -E "s#^.*/(.*)$#\1#" | sed "s#.git$##"
По сути, вы вызываете
git remote show origin
, берете URL-адрес репозитория из поля «Fetch URL:» и повторяете его, чтобы получить часть с именем: https://github.com/dragn/ neat-vimrc .gitисточник
git remote show origin -n
чтобы этого не произошло..git
другой вызовsed
, я обновил код в ответе. Таким образом, это будет работать, если URL-адрес не заканчивается на.git
.sed
git remote show origin -n | grep h.URL | sed 's/.*://;s/.git$//'
Если вы пытаетесь получить имя пользователя или имя организации И имя проекта или репо на github, я смог написать эту команду, которая работает для меня, по крайней мере, локально.
▶ git config --get remote.origin.url # => https://github.com/Vydia/gourami.git ▶ git config --get remote.origin.url | sed 's/.*\/\([^ ]*\/[^.]*\).*/\1/' # Capture last 2 path segments before the dot in .git # => Vydia/gourami
Это желаемый результат, поскольку
Vydia
и название организации, и названиеgourami
пакета. Вместе они могут помочь сформировать полныйUser/Repo
путьисточник
git config --get remote.origin.url | sed -r 's/.*(\@|\/\/)(.*)(\:|\/)([^:\/]*)\/([^\/\.]*)\.git/https:\/\/\2\/\4\/\5/'
преобразует ОБЕgit@dom.tld:User/Repo.git
Иhttps://dom.tld/User/Repo.git
вhttps://dom.tld/User/Repo
. Попал туда благодаря твоейsed
идееЯ думаю, что это лучший способ однозначно идентифицировать клон репозитория.
git config --get remote.origin.url
и проверка, чтобы убедиться, что происхождение совпадаетssh://your/repo
.источник
Немного поздно для этого вопроса, но если вы:
Вы увидите URL-адрес репозитория, который будет включать в себя имя репозитория:
источник
Если вам нужно полное имя репозитория GitHub ('полное имя') - пользователь / репозиторий, и вы хотите сделать это с помощью Ruby ...
источник
Полное наименование репо:
источник
Этот подход
git-remote
сработал для меня для пультов HTTPS:пример
источник
Вот функция bash, которая напечатает имя репозитория (если оно было правильно настроено):
Пояснение:
При этом будет
git rev-parse --git-dir
напечатан полный путь к.git
каталогу текущего репозитория. Он хранит путь в$gitdir
.Выполняется
cat ${gitdir}/description
, который распечатывает содержимое.git/description
вашего текущего репозитория. Если вы правильно назвали свой репозиторий, он напечатает имя. В противном случае он напечатаетUnnamed repository; edit this file 'description' to name the repository.
Если репо было правильно названо, распечатайте его содержимое.
В противном случае...
Сообщите пользователю, что репо не названо.
Нечто подобное реализовано в этом скрипте .
источник
К сожалению, похоже, что Git не имеет встроенной такой команды. Но вы можете легко добавить ее самостоятельно с помощью псевдонимов Git и некоторой магии оболочки.
Как указано в этом ответе , вы можете использовать,
git rev-parse --show-toplevel
чтобы показать корень вашей текущей папки Git.Если вы хотите использовать это регулярно, вероятно, удобнее определить его как псевдоним. Для этого использовали
git config alias.root '!echo "$(git rev-parse --show-toplevel)"'
. После этого вы можете использовать,git root
чтобы увидеть корневую папку репозитория, в котором вы сейчас находитесь.Если вы хотите использовать другое имя подкоманды
root
, просто замените вторую частьalias.root
в приведенной выше команде на то, что хотите.Дополнительные сведения о псевдонимах в Git см. Также на
git config
странице руководства .источник
git config --add alias.root 'rev-parse --show-toplevel'
- нет необходимости вставлять оболочку для псевдонима одной команды.Вот мой:
не лучше, чем другие, но я сделал ее функцией bash, чтобы я мог добавить удаленное имя, если оно не origin.
источник
Также я просто обнаружил, что внутри
.git
каталога есть некоторая информация о репо . Итак, вы можете просто посмотретьFETCH_HEAD
файл в терминале, чтобы увидеть имя репо:Пример:
Выход:
И
https://bitbucket.org/somebituser/some_repo.git
это имя вашего репозиторияисточник
Этот очень хорошо работает с git-2.18.2 и может быть запущен из внешнего репозитория git target:
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
источник
Вы можете использовать: git remote -v
Документация: https://git-scm.com/docs/git-remote
источник
git remote -v
просто возвращает один или несколько URL-адресов. Как это отвечает на вопрос?