Я вытащил проект из GitHub несколько дней назад. С тех пор я обнаружил, что на GitHub есть несколько вилок, и я забыл отметить, какой из них я взял первоначально. Как я могу определить, какую из этих вилок я вытащил?
Как определить URL-адрес, из которого клонирован локальный репозиторий Git?
Ответ 1
Если вам нужен только удаленный 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: [email protected]:jaredpar/VsVim.git
  Push  URL: [email protected]:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:
Если вы хотите использовать значение в сценарии, вы должны использовать первую команду, указанную в этом ответе.
Ответ 2
Если вы хотите использовать это для сценариев, вы можете получить только URL-адрес с
git config --get remote.origin.url
Ответ 3
Вы можете попробовать:
git remote -v
Он выведет все ваши URL-адреса для извлечения/выключения ваших пультов.
Ответ 4
Чтобы получить ответ:
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).
Ответ 5
С Git 2.7 (выпуск 5 января 2015 г.) у вас есть более последовательное решение с использованием git remote:
git remote get-url origin
(хороший кулон git remote set-url origin <newurl>)
См. commit 96f78d3 (16 сентября 2015 г.) Бен Беккель (mathstuf). 
 (слияние Junio C Hamano - gitster - в совершить e437cbd, 05 октября 2015)
remote: добавить подкоманду get-url
Расширение
insteadOfявляется частьюls-remote --url, и нет способа для расширенияpushInsteadOf.
Добавьте подкомандуget-url, чтобы иметь возможность запрашивать оба способа, а также способ получения всех настроенных URL-адресов.
get-url:
Получает URL-адреса для удаленного устройства.
Конфигурации дляinsteadOfиpushInsteadOfздесь расширены. По умолчанию указан только первый URL.
- С '
--push' запрашиваются URL-адреса push, а не URL-адреса.- С "
--all" будут указаны все URL-адреса для пульта.
До Git 2.7 у вас было:
 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]
Ответ 6
Подводя итог, существует как минимум четыре способа:
(Для официального репозитория 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)
Ответ 7
Я думаю, вы можете найти его под .git/config и remote["origin"], если вы не манипулируете этим.
Ответ 8
Короткий ответ:
$ git remote show -n origin
или альтернатива для простых быстрых сценариев:
$ git config --get remote.origin.url
Некоторая информация:
-  $ git remote -vнапечатает все пульты (не то, что вы хотите). Вы хотите происхождение правильно?
-  $ git remote show originнамного лучше, показывает толькоoriginно занимает слишком много времени (протестировано на git версии 1.8.1.msysgit.1).
 Я закончил с: $ git remote show -n origin, который, кажется, самый быстрый. С -n он не будет -n удаленные головки (ветки АКА). Вам не нужна такая информация, верно?
http://www.kernel.org/pub//software/scm/git/docs/git-remote.html
 Вы можете подать заявку | grep -i fetch | grep -i fetch для всех трех версий, чтобы показать только URL выборки.
Если вам нужна чистая скорость, используйте:
$ git config --get remote.origin.url
Спасибо @Jefromi за указание на это.
Ответ 9
Для меня это более простой способ (меньше печатать):
$ 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'
Ответ 10
 URL Git будет внутри конфигурационного файла Git. Значение соответствует ключевому url.
Для Mac и Linux используйте команды ниже:
 cd project_dir
 cat .git/config | grep url | awk '{print $3}'
 Для Windows откройте файл ниже в любом текстовом редакторе и найдите значение для url ключа.
project_dir/.git/config
Примечание: это будет работать, даже если вы находитесь в автономном режиме или удаленный git-сервер отключен.
Ответ 11
Я никогда не могу вспомнить все параметры команд Git, поэтому я просто поместил псевдоним в файл ~/.gitconfig, который имеет для меня больший смысл, поэтому я могу его запомнить, и это приводит к меньшему количеству ввода:
[alias]
url = ls-remote --get-url
После перезагрузки терминала вы можете просто набрать:
> git url
Вот еще несколько моих часто используемых:
[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags
Я также настоятельно рекомендую git-extras с командой git info command, которая предоставляет гораздо более подробную информацию об удаленных и локальных ветвях.
Ответ 12
Я в основном использую:
git remote get-url origin
Он работает для командной консоли Git Bash или командной консоли CMD в Windows. Тем не менее, он работает с версией 2.x Git.
Ответ 13
Выносной пульт дистанционного управления не может называться "источником", поэтому здесь есть вариант:
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
Ответ 14
 Чтобы получить 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 ":"
Ответ 15
В дополнение к другим ответам: если пульт по какой-то причине был изменен и поэтому не отражает исходное происхождение, самая первая запись в рефлоге (т.е. последняя запись, отображаемая командой git reflog), должна указывать где первоначально было клонировано репо.
например.
$ git reflog | tail -n 1
f34be46 [email protected]{0}: clone: from https://github.com/git/git
$
(Имейте в виду, что reflog может быть очищен, поэтому это не гарантируется.)
Ответ 16
 С git remote show origin вы должны быть в каталоге проектов. Но если вы хотите определить URL-адреса откуда угодно, вы можете использовать:
cat <path2project>/.git/config | grep url
 Если вам часто понадобится эта команда, вы можете определить псевдоним в вашем .bashrc или .bash_profile с MacOS.
alias giturl='cat ./.git/config | grep url'
 Так что вам просто нужно вызвать giturl в корневой папке Git, чтобы просто получить его URL.
Если вы расширите этот псевдоним, как это
alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'
вы получаете только простой URL без предшествующего
"URL ="
в
вы получаете больше возможностей в его использовании:
пример
 На Mac вы можете вызвать open $(giturl) чтобы открыть URL в стандартном браузере.
 Или chrome $(giturl) чтобы открыть его с помощью браузера Chrome в Linux.
Ответ 17
 Простой способ - открыть файл .git/config:
cat .git/config
Редактировать:
 vim.git/config или
 nano.git/config
Ответ 18
git config --list
Эта команда выдаст всю информацию, связанную с вашим хранилищем.
Ответ 19
Распечатайте произвольно названные URL удаленной выборки:
git remote -v | grep fetch | awk '{print $2}'
Ответ 20
Если вы не знаете имя удаленного пула для ветки, вы можете посмотреть это сначала, проверив имя ветки восходящего потока, на которой была построена текущая ветка. Используйте git rev-parse следующим образом:
git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
Это показывает, что ветка восходящего потока была источником текущей ветки. Это можно разобрать, чтобы получить удаленное имя следующим образом:
git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1
Теперь возьмите это и переместите его на git ls-remote, и вы получите URL-адрес восходящего пульта, который является источником текущей ветки:
git ls-remote --get-url \
  $(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)
Теперь следует отметить, что это не обязательно то же самое, что и исходный удаленный репозиторий, который был клонирован. Во многих случаях этого будет достаточно.
Ответ 21
#!/bin/bash
git-remote-url() {
 local rmt=$1; shift || { printf "Usage: git-remote-url [REMOTE]\n" >&2; return 1; }
 local url
 if ! git config --get remote.${rmt}.url &>/dev/null; then
  printf "%s\n" "Error: not a valid remote name" && return 1
  # Verify remote using 'git remote -v' command
 fi
 url='git config --get remote.${rmt}.url'
 # Parse remote if local clone used SSH checkout
 [[ "$url" == [email protected]* ]] \
 && { url="https://github.com/${url##*:}" >&2; }; \
 { url="${url%%.git}" >&2; };
 printf "%s\n" "$url"
}
Использование:
# Either launch a new terminal and copy 'git-remote-url' into the current shell process, 
# or create a shell script and add it to the PATH to enable command invocation with bash.
# Create a local clone of your repo with SSH, or HTTPS
git clone [email protected]:your-username/your-repository.git
cd your-repository
git-remote-url origin
Выход:
https://github.com/your-username/your-repository
