Питання Як визначити URL-адресу, яку спочатку було клонувати місцеве сховище Git?


Я витягнув проект від GitHub кілька днів тому. Я з тих пір виявив, що на GitHub є кілька вилок, і я нехтував відзначити, який з них я спочатку взяв. Як визначити, який з цих вилок витягнув?


2777
2017-11-03 16:47


походження


З GIT 2.7 (Q4 2015), git remote get-url origin стане можливим. Побачити моя відповідь нижче - VonC
Я впевнений, що ти мав на увазі git remote get-url origin. - shiri
codingaffairs.blogspot.com/2017/01/... - Hammad Tariq
git remote get-url origin для мене не працює - можливо, застаріла? git remote show origin працював хоч. - Klik
git remote -v дасть вам багато інформації, в тому числі і це. - Thorbjørn Ravn Andersen


Відповіді:


Якщо потрібно лише віддалену 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:

Якщо ви хочете використовувати значення в скрипті, ви скористаєтеся першою командою, зазначеною у цій відповіді.


3939
2017-11-03 16:50



Використовуйте конфігурацію git, як описано нижче, замість використання jgit з amazon-s3. - barryku
Хоча це не стосується цілей оригінального питання, зверніть увагу на те, що якщо для вказаного віддаленого пристрою введено спробу "Push URL" та кілька URL-адрес, то вам потрібно буде використовувати git remote show origin (необов'язково з -n прапором, наданим @Casey), або з git remote -v як це пропонували @Montaro і @rodel. - Amazingant
Що означає "якщо розбита референтна цілісність" означає? Існує коментар до іншої відповіді, згаданий випадок, коли віддалена URL-адреса "більше не доступна": чи це так? де "недоступний" означає "недоступний" ?? - Eric Lebigot
@ JaredPar Що ви маєте на увазі при цілісності референції? - Akshayraj Kore
Я вважаю, що це вражаюче, що це питання було затверджено так багато разів і переглянуло божевільну кількість разів. Позитивне свідчення про стек-переповнення, і негативний для Git - Mads Boyd-Madsen


Якщо ви хочете це зробити для сценаріїв, ви можете отримати лише URL-адресу

git config --get remote.origin.url

498
2017-11-03 19:35



Це. Шлях швидше, ніж рішення вище. - K-RAN
Це правильна відповідь. Це набагато швидше, і він навіть працює, якщо віддалений URL більше не доступний (git remote show origin просто показує "conq: репозиторій не існує"). - apfelbox
Це не зовсім правильна відповідь через параметр config url.<base>.insteadOf. Подивіться мою відповідь - git має команду для цієї мети. - arcresu
@ arcresu Прохолодно, +1 вам! На мій захист ця команда не була додана до березня 2011 року, і вона не була задокументована до вересня 2012 року. - Cascabel
Здається, не працює з - git-dir чи - деревом - Catskul


Ви можете спробувати:

git remote -v

Він надрукує всі ваші путівки для завантаження / натискання.


422
2018-01-29 12:01





Щоб отримати відповідь:

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 (2012-09).


196
2018-06-02 05:15



гарний: це також забезпечить те ж саме для попередніх версій> git remote -v | grep fetch | awk '(print $ 2)' - ravi.zombie


За допомогою 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 - в commit e437cbd, 05 жовтня 2015 р.):

remote: додати команду get-url

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

get-url:

Отримує URL-адреси для пульта дистанційного керування.
  Конфігурації для insteadOf і pushInsteadOf тут розгорнуто.
  За замовчуванням перераховується лише перша URL-адреса.

  • З "--push', запитані URL-адреси запитуються, а не завантажують URL-адреси.
  • З "--all', всі URL-адреси для пульта буде вказано.

Перед гріт 2.7 ви мали:

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

63
2017-10-07 12:07



Через 5 років багато чого змінилося, і це повинно стати прийнятою відповіддю зараз. Але, можливо, додати синтаксис до 2.7. - msparer
@ msparer Я оновив відповідь. - VonC


Підсумовуючи, є щонайменше чотири способи:

(Наступне було перевірено на офіційному репозиторії 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)

43
2018-05-15 15:28



Примітка git config --get remote.origin.url отримує оригінальну URL-адресу, яка була встановлена ​​з git remote add ... або git remote set-url ... поки git ls-remote --get-url origin завантажує URL-адресу, яка фактично використовується для доступу до пульта дистанційного керування, що може бути різним за наявності git config --global url.XXX.insteadOf YYY. Отже, обидва виходи можуть відрізнятися!  Також зауважте, що git ls-remote --get-url (без origin) не потрібно отримувати origin, замість цього він показує відслідковується вгору, тому він не зможе, наприклад, у від'єднаному стані HEAD. - Tino


Коротка відповідь:

$ 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

Завдяки @ Джофромі для того, щоб вказати на це.


16
2018-02-27 18:11





Я думаю, ви можете знайти це під .git/config і remote["origin"] якщо ви не маніпулювали цим.


15
2017-11-03 16:50





Пульт дистанційного керування upstream не може називатися "походженням", тому ось варіант:

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

Або:

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

Для більш корисних змінних є:

$ git config -l

8
2018-04-19 20:49





Щоб отримати IP-адресу / ім'я хоста з origin

Для ssh:// сховища:

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

Для git:// сховища:

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

6
2018-06-24 20:54



Для sshце працює тільки в відсутності ~/.ssh/config який переписує ім'я хосту або псевдонім. - Tino