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

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


Если вам нужен только удаленный 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 * удаленное происхождение Fetch URL: git@github.com: jaredpar/VsVim.  git Push URL: git@github.com: jaredpar/VsVim.git ветка HEAD: master Удаленные ветки:  

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


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

  git config --get remote.origin.url  

4


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

  git remote -v  

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

2


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

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

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

— get-url

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

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

3


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

   git remote-get-url origin  

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

См. Фиксацию 96f78d3 (16 сентября 2015 г.) Бена Бекеля ( mathstuf ).
(объединено Junio ​​C Hamano — gitster — в фиксации e437cbd, 5 октября 2015 г.) :

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

  get-url:  

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

  • С помощью ‘ - push ‘ запрашиваются URL-адреса push, а не URL-адреса получения.
  • С ‘ - все ‘, будут перечислены все URL-адреса для пульта дистанционного управления.

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

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

1


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

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

Наименьшее количество информации:

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

и

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

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

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

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

  $ git remote show origin * удаленное происхождение Fetch URL: https://github.com/torvalds/linux.git Push URL: https://github.com/torvalds/linux.git Ветвь HEAD: master Удаленная ветвь: master  отслеживаемая локальная ветка, настроенная для 'git pull  ': master объединяется с удаленным мастером. Локальный ref, настроенный для' git push ': master отправляет на master (до последней версии)  

1


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


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

  $ 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 он не будет получать удаленные головы (ветви AKA). Вам не нужна такая информация, верно?

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

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

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

  $ git config --get remote.origin.url  

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


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

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

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

  git remote -vgit status  

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


Я никогда не могу вспомнить все параметры команды Git s, поэтому я просто поместил псевдоним в файл ~/.gitconfig , который имеет для меня больше смысла, чтобы я мог его запомнить, и это приводит к меньшему вводу текста:

  [alias] url = ls-remote --get-url  

После перезагрузки терминала вы можете просто ввести:

 > git url  

Вот еще несколько моих часто используемых:

   [псевдоним] cd = checkoutls = branchlsr = branch --remotelst = describe --tags  

Я также настоятельно рекомендую git-extras, в котором есть информация о git , которая предоставляет более подробную информацию об удаленных и локальных ветвях.

2


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

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

  cd  каталог_проекта cat .git/config |  grep url |  awk '{print $ 3}'  

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

  project_dir/.git/config  

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

1


Я в основном использую :

  git remote get-url origin  

Он работает для командной консоли Git Bash или командной консоли CMD в Windows. Тем не менее, он работает с версией 2.x Git.

0


Я предпочитаю этот, так как его легче запомнить:

  git config -l  

В нем будет перечислена вся полезная информация, такая как:

  user.name = Ваше имяuser.email=your.name@notexisting.comcore.autocrlf=inputcore.repositoryformatversion=0core.  filemode = truecore.bare = falsecore.logallrefupdates = trueremote.origin.url = https://github.com/mapstruct/mapstruct-examplesremote.origin.fetch=+refs/heads/*: refs/remotes/origin/* ветка.  master.remote = originbranch.master.merge = refs/Heads/master  


  git config --list  

Эта команда предоставит всю информацию, относящуюся к вашему репозиторию.


Удаленный узел восходящего потока нельзя называть «origin», поэтому есть вариант:

  remote = $ (git config -  получить 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  


Чтобы получить IP-адрес/имя хоста origin

Для репозиториев ssh://:

  git ls-remote --get-url origin  |  вырезать -f 2 -d @ |  cut -f 1 -d "/"  

Для репозиториев git://:

  git ls-remote --get-url origin |  вырезать -f 2 -d @ |  cut -f 1 -d ":"  

1


В дополнение к другим ответам: если пульт по какой-то причине был изменен и поэтому не отражает исходное происхождение, самая первая запись в reflog (т.е. последняя запись, отображаемая командой git reflog ) должна указывать, откуда изначально было клонировано репо.

например,

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

(Имейте в виду, что журнал ссылок может быть очищен, поэтому это не гарантирует работу.)

1


С git remote show origin вы должны находиться в каталоге проектов . Но если вы хотите определить URL-адреса откуда-нибудь еще, вы можете использовать:

  cat /.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 =»

в

url=http://example.com/repo.git

вы получаете больше возможностей при его использовании:

Пример

На Mac вы можете вызвать откройте $ (giturl) , чтобы открыть URL-адрес в стандартном браузере.

Или chrome $ (giturl) , чтобы открыть его в браузере Chrome на Linux.


Простой способ — открыть файл .git/config :

  cat .git/config  

Для редактирования:

vim .git/config или

nano .git/config код>

1


Печать арбитр Именованные URL удаленной выборки:

  git remote -v |  grep fetch |  awk '{print $ 2}'  

0


Если вы не знаете имя вышестоящего удаленного сервера для ветки, вы можете сначала найти его, проверив имя восходящей ветки, на котором была построена текущая ветвь. Используйте 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)  

Теперь следует отметить, что это не обязательно то же самое, что и исходный удаленный репозиторий, который был клонирован из . Однако во многих случаях этого будет достаточно.


  #!/bin/bashgit-remote-url () {локальный rmt = $ 1;  сдвиг ||  {printf "Использование: git-remote-url [REMOTE]  n"> & 2;  возврат 1;  } локальный URL, если!  git config --get remote. $ {rmt} .url &>/dev/null;  then printf "% s  n" "Ошибка: недопустимое удаленное имя" && return 1 # Подтвердите удаленный доступ с помощью команды 'git remote -v' fi url = `git config --get remote. $ {rmt} .url` #  Разобрать удаленный, если локальный клон использовал SSH checkout [["$ url" == git @ *]]  && {url = "https://github.com/${url##*:}"> & 2;  };   {url = "$ {url %%. git}"> & 2;  };  printf "% s  n" "$ url"}  

Использование:

  # Запустите новый терминал и скопируйте `  git-remote-url` в текущий процесс оболочки, # или создайте сценарий оболочки и добавьте его в PATH, чтобы включить вызов команд с помощью bash. # Создайте локальный клон вашего репо с помощью SSH или HTTPSgit clone git@github.com  : your-username/your-repository.gitcd your-repositorygit-remote-url origin  

Вывод:

  https://github.com/your-username/your-repository  


Вы клонировали свое репо с помощью SSH clone.

  git config --get remote.origin.urlgit@gitlab.com: company /product/production.git

Но вы хотите получить URL-адрес http, чтобы открыть его в браузере или поделиться им:

   git config --get remote.origin.url |  sed -e 's/:///g' |  sed -e 's/ssh /////g' |  sed -e 's/git @/https: ///g'https://gitlab.com/company/product/production.git  

GitHub или GitLab не не имеет значения.

1


просто используйте эту команду там, где находится папка .git

git config --get remote.origin.url

if вы подключены к сети

git remote show origin

он покажет вам URL-адрес, по которому изначально был клонирован локальный репозиторий Git из.

надеюсь, это поможет

0



4. Проверка статуса репозитория

Цели

  • Чтобы узнать, как проверить статус репозитория

01 Проверить статус репозитория

Используйте git status , чтобы проверить текущее состояние репозитория.

Выполнить:

 git status 

Вы увидите

Результат:

 $ git status # В ветке master ничего не фиксировать (рабочий каталог очищен) 

Команда проверяет статус и сообщает, что есть нечего фиксировать, то есть в репозитории хранится текущее состояние рабочего каталога, и нет никаких изменений для записи.

Мы будем использовать команду git status , чтобы продолжайте следить за состоянием как рабочего каталога, так и репозитория.

Оцените статью
clickpad.ru
Добавить комментарий