Вопрос: Как определить URL-адрес, из которого был клонирован локальный репозиторий Git?


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


2707


источник


Ответы:


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

git config --get remote.origin.url

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

git remote show origin

Когда используешь git clone(из GitHub или любого исходного репозитория), по умолчанию для источника клона является «происхождение». С помощью 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:

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


3818



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

git config --get remote.origin.url

491



Можешь попробовать:

git remote -v

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


414



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

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

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

--get-URL

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

Как отметил @Jefromi, этот вариант был добавлен в v1.7.5 и не документированы до v1.7.12.2 ,


195



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

git remote get-url origin

(хороший кулон git remote set-url origin <newurl>)

Видеть совершить 96f78d3 (16 сентября 2015 г.) Бен Беккель ( mathstuf) ,
(Слияние Юнио С Хамано - gitster- в совершить e437cbd , 05 октября 2015 г.) :

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

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

get-url:

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

  • С ' --push', запрашиваемые URL-адреса запрашиваются, а не выбирают URL-адреса.
  • С ' --all', будут указаны все URL-адреса для удаленного.

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

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]

59



To summarize, there are at least four ways:

(The following was tried for the official Linux repository)

Least information:

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

and

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

More information:

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

Even more information:

$ 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)

42



Short answer:

$ git remote show -n origin

or, an alternative for pure quick scripts:

$ git config --get remote.origin.url

Some info:

  1. $ git remote -v will print all remotes (not what you want). You want origin right?
  2. $ git remote show origin much better, shows only origin but takes too long (tested on git version 1.8.1.msysgit.1).

I ended up with: $ git remote show -n origin, which seems to be fastest. With -n it will not fetch remote heads (AKA branches). You don't need that type of info, right?

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

You can apply | grep -i fetch to all three versions to show only the fetch URL.

If you require pure speed, then use:

$ git config --get remote.origin.url

Thanks to @Jefromi for pointing that out.


17



I think you can find it under .git/config and remote["origin"] if you didn't manipulate that.


14



The upstream's remote may not be called "origin" so here's a variation:

remote=$(git config --get branch.master.remote)
url=$(git config --get remote.$remote.url)
basename=$(basename "$url" .git)
echo $basename

or:

basename $(git config --get remote.$(git config --get branch.master.remote).url) .git

for more useful variables there's:

$ git config -l

9



To get the IP address/hostname of origin

For ssh:// repositories:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"

For git:// repositories:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"

7



To supplement the other answers: If the remote has for some reason been changed and so doesn't reflect the original origin, the very first entry in the reflog (i.e. the last entry displayed by the command git reflog) should indicate where the repo was originally cloned from.

e.g.

$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$

(Bear in mind that the reflog may be purged, so this isn't guaranteed to work.)


7