Как я могу определить URL, с которого изначально был клонирован локальный репозиторий Git? - PullRequest
3460 голосов
/ 03 ноября 2010

Я вытащил проект из GitHub несколько дней назад. С тех пор я обнаружил, что на GitHub есть несколько вилок, и я забыл отметить, какой из них я взял изначально. Как я могу определить, какие из тех вилок я вытащил?

Ответы [ 21 ]

4919 голосов
/ 03 ноября 2010

Если вы хотите, чтобы только удаленный URL-адрес или ссылочная целостность была нарушена:

git config --get remote.origin.url

Если вам требуется полный вывод или ссылочная целостность не повреждена:

git remote show origin

При использовании git clone (из GitHub или любого другого исходного репозитория) имя по умолчанию для источника клона - "origin" Использование git remote show отобразит информацию об этом удаленном имени. Первые несколько строк должны показать:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: git@github.com:jaredpar/VsVim.git
  Push  URL: git@github.com:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

Если вы хотите использовать значение в сценарии, вы должны использовать первую команду, указанную в этом ответе.

573 голосов
/ 03 ноября 2010

Если вы хотите использовать это в сценариях, вы можете получить только URL с

git config --get remote.origin.url
485 голосов
/ 29 января 2012

Вы можете попробовать:

git remote -v

Он распечатает все URL-адреса для извлечения / отправки всех ваших пультов.

233 голосов
/ 02 июня 2013

Чтобы получить ответ:

git ls-remote --get-url [REMOTE]

Это лучше, чем читать конфигурацию; см. справочную страницу для git-ls-remote:

- получить-адрес

Развернуть URL данного удаленного репозитория с учетом любая настройка "url.<base>.insteadOf" (см. git-config(1)) и выход без разговора с пультом.

Как отметил @Jefromi, эта опция была добавлена ​​в v1.7.5 и не документирована до v1.7.12.2 (2012-09).

97 голосов
/ 07 октября 2015

С Git 2.7 (выпуск 5 января 2015 г.) у вас есть более согласованное решение, использующее git remote:

git remote get-url origin

(красивый кулон git remote set-url origin <newurl>)

См. коммит 96f78d3 (16 сентября 2015 г.) Бен Беккель (mathstuf) .
(Объединено Junio ​​C Hamano - gitster - in commit e437cbd , 05 октября 2015 г.) :

remote: добавить подкоманду get-url

Расширение insteadOf является частью ls-remote --url, и нет никакого способа расширить pushInsteadOf.
Добавьте подкоманду get-url, чтобы иметь возможность запрашивать оба и способ получения всех настроенных URL-адресов.

get-url:

Получает URL-адреса для пульта.
Конфигурации для insteadOf и pushInsteadOf расширены здесь.
По умолчанию указан только первый URL-адрес.

  • При '--push' push-URL-адреса запрашиваются, а не выбирают URL-адреса.
  • С '--all' будут перечислены все URL для пульта.

До git 2.7 у вас было:

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]
53 голосов
/ 15 мая 2014

Подводя итог, можно выделить как минимум четыре способа:

(для официального репозитория Linux было опробовано следующее)

Наименьшая информация:

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

и

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

Дополнительная информация:

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

Еще больше информации:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
20 голосов
/ 27 февраля 2013

Краткий ответ:

$ git remote show -n origin

или альтернатива чистым быстрым сценариям:

$ git config --get remote.origin.url

Некоторая информация:

  1. $ git remote -v напечатает все пульты (не то, что вы хотите). Вы хотите происхождение правильно?
  2. $ git remote show origin намного лучше, показывает только origin, но занимает слишком много времени (протестировано на git версии 1.8.1.msysgit.1).

Я закончил с: $ git remote show -n origin, который кажется самым быстрым. С -n он не будет получать удаленные головки (ветви АКА). Вам не нужна информация такого типа, верно?

http://www.kernel.org/pub//software/scm/git/docs/git-remote.html

Вы можете применить | grep -i fetch ко всем трем версиям, чтобы показать только URL выборки.

Если вам нужна чистая скорость, используйте:

$ git config --get remote.origin.url

Спасибо @ Jefromi за указание на это.

18 голосов
/ 03 ноября 2010

Я думаю, что вы можете найти его под .git/config и remote["origin"], если вы этим не манипулировали.

11 голосов
/ 21 сентября 2017

URL-адрес Git будет находиться внутри файла конфигурации Git. Значение соответствует ключу url.

Для Mac и Linux используйте следующие команды:

 cd project_dir
 cat .git/config | grep url | awk '{print $3}'

Для Windows откройте файл ниже в любом текстовом редакторе и найдите значение для ключа url.

project_dir/.git/config

Примечание. Это будет работать, даже если вы находитесь в автономном режиме или удаленный git-сервер отключен.

10 голосов
/ 11 февраля 2019

Для меня это более простой способ (меньше печатания):

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

на самом деле, у меня есть это в alias под названием s, который делает:

git remote -v
git status

Вы можете добавить в свой профиль: alias s='git remote -v && git status'

...