Несколько дней назад я загрузил проект с 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
Некоторая информация:
-
$ git remote -v
распечатает все пульты (не то, что вы хотите). Вы хотите происхождение правильно? -
$ 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
, чтобы продолжайте следить за состоянием как рабочего каталога, так и репозитория.