Как я могу отладить проблемы, связанные с git / git-shell?

148

Как получить отладочную информацию о git / git-shell?

У меня была проблема, которая user1могла клонировать хранилище без проблем, в то время как я user2мог клонировать только пустой. Я поставил GIT_TRACE=1, но ничего полезного не было сказано.

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

Андор
источник
Примечание: кроме того GIT_CURL_VERBOSE, у вас будет Git 2.9.x / 2.10 GIT_TRACE_CURL. Смотрите мой ответ ниже .
VonC
И (Q2 2019, три года спустя GIT_TRACE_CURL), теперь у вас есть trace2. Пример: git config --global trace2.normalTarget ~/log.normal. Смотрите мой (новый) ответ ниже .
VonC

Ответы:

212

Для еще более подробного вывода используйте следующее:

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master

ВТК
источник
53
Есть несколько опций GIT_TRACE, кроме основной. Вот очень многословный вариант:set -x; GIT_TRACE=2 GIT_CURL_VERBOSE=2 GIT_TRACE_PERFORMANCE=2 GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PACKFILE=2 GIT_TRACE_SETUP=2 GIT_TRACE_SHALLOW=2 git pull origin master -v -v; set +x
Пол Ирландский
2
Как и где установить эти переменные?
Хунсу
Это просто целая строка, которую вы можете вставить в свой терминал. Вы должны заменить git pull origin masterдеталь командой, которую хотите выполнить.
Aeolun
1
На каких платформах это работает? Конечно, не Windows.
cowlinator
8
В Windows вы можете установить эти переменные, по одной за раз (по одной на строку), например:set GIT_CURL_VERBOSE=1 set GIT_TRACE=1 git pull origin master
cowlinator
85

Отладка

Git имеет довольно полный набор встроенных трассировок, которые вы можете использовать для отладки ваших проблем с git.

Чтобы включить их, вы можете определить следующие переменные:

  • GIT_TRACE для общих следов,
  • GIT_TRACE_PACK_ACCESS для отслеживания доступа к пакетному файлу,
  • GIT_TRACE_PACKET для трассировки на уровне пакетов для сетевых операций,
  • GIT_TRACE_PERFORMANCE для регистрации данных о производительности,
  • GIT_TRACE_SETUP для получения информации об обнаружении хранилища и среды, с которой он взаимодействует,
  • GIT_MERGE_VERBOSITY для отладки стратегии рекурсивного слияния (значения: 0-5),
  • GIT_CURL_VERBOSE для регистрации всех сообщений curl (эквивалентно curl -v ),
  • GIT_TRACE_SHALLOW для отладки извлечения / клонирования мелких репозиториев.

Возможные значения могут включать:

  • true, 1или2 для записи в поток ошибок,
  • абсолютный путь, начинающийся с /трассировки вывода до указанного файла.

Для более подробной информации смотрите: Git Internals - Переменные среды


SSH

Для проблем SSH, попробуйте следующие команды:

echo 'ssh -vvv "$*"' > ssh && chmod +x ssh
GIT_SSH="$PWD/ssh" git pull origin master

или используйте sshдля проверки ваших учетных данных, например,

ssh -vvvT git@github.com

или через порт HTTPS:

ssh -vvvT -p 443 git@ssh.github.com

Примечание: уменьшить количество, -vчтобы уменьшить уровень многословия.


Примеры

$ GIT_TRACE=1 git status
20:11:39.565701 git.c:350               trace: built-in: git 'status'

$ GIT_TRACE_PERFORMANCE=$PWD/gc.log git gc
Counting objects: 143760, done.
...
$ head gc.log 
20:12:37.214410 trace.c:420             performance: 0.090286000 s: git command: 'git' 'pack-refs' '--all' '--prune'
20:12:37.378101 trace.c:420             performance: 0.156971000 s: git command: 'git' 'reflog' 'expire' '--all'
...

$ GIT_TRACE_PACKET=true git pull origin master
20:16:53.062183 pkt-line.c:80           packet:        fetch< 93eb028c6b2f8b1d694d1173a4ddf32b48e371ce HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2:2.6.5~update-ref-initial-update-1494-g76b680d
...
kenorb
источник
2
Изменение echo 'ssh -vvv $*' > ssh && chmod +x sshк echo 'ssh -vvv "$@"' > ssh && chmod +x sshдолжны быть более безопасными в ребре случае , когда один параметр имеет место в нем.
Александр Берд
46

Попробуй это:

GIT_TRACE=1 git pull origin master
CC
источник
40

Если это по SSH, вы можете использовать следующее:

Для более высокого уровня отладки для типа -vv или -vvv для уровня отладки 2 и 3 соответственно:

# Debug level 1
GIT_SSH_COMMAND="ssh -v" git clone <repositoryurl>

# Debug level 2
GIT_SSH_COMMAND="ssh -vv" git clone <repositoryurl>

# Debug level 3
GIT_SSH_COMMAND="ssh -vvv" git clone <repositoryurl>

Это в основном полезно для решения проблем с открытым и закрытым ключом на сервере. Вы можете использовать эту команду для любой команды git, а не только для «git clone».

Василий Муса
источник
Да, это работает отлично. Лучше, чем другие. Да, это работает отлично. Лучше, чем другие.
BMW
Это было бы очень полезно, поскольку мне сейчас нужно решить ключевую проблему, но у меня это не работает с git 1.8.3.1 и OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 февраля 2013 г. в CentOS Linux версии 7.2.1511 (основной). :(
Грег Дубицки
@GregDubicki Странно. Дайте мне знать, что работает для вас, чтобы я мог обновить ответ.
Василий Муса
1
На Windows использовать set GIT_SSH_COMMAND=ssh -v(без кавычек).
Янсон
18

В Git 2.9.x / 2.10 (3-й квартал 2016 года) добавлена ​​еще одна опция отладки: GIT_TRACE_CURL .

См. Коммит 73e57aa , коммит 74c682d (23 мая 2016 г.) от Elia Pinto ( devzero2000) . Помогают
: Торстен Бёгерсхаузен ( tboegi) , Рамсей Джонс, Хунио С. Хамано ( gitster) , Эрик Саншайн ( sunshineco) и Джефф Кинг ( peff) .
(Слиты Junio C Hamano - gitster- в фиксации 2f84df2 , 06 Jul 2016)

http.c: реализовать GIT_TRACE_CURL переменную среды

Реализуйте GIT_TRACE_CURLпеременную среды, чтобы обеспечить большую степень детализации GIT_CURL_VERBOSE, в частности полного транспортного заголовка и всей полезной нагрузки данных, которыми обмениваются.
Это может быть полезно, если конкретная ситуация может потребовать более тщательного анализа отладки.

В документации будет указано:

GIT_TRACE_CURL

Включает полный дамп трассировки всех входящих и исходящих данных, включая описательную информацию, транспортного протокола git.
Это похоже на выполнение curl --trace-asciiв командной строке.

Эта опция переопределяет настройку GIT_CURL_VERBOSEпеременной среды.


Вы можете увидеть эту новую опцию, использованную в этом ответе , но также и в тестах Git 2.11 (Q4 2016):

См. Коммит 14e2411 , коммит 81590bf , коммит 4527aa1 , коммит 4eee6c6 (07 сентября 2016 г.) от Elia Pinto ( devzero2000) .
(Слиты Junio C Hamano - gitster- в фиксации 930b67e , 12 сент 2016)

Используйте новую GIT_TRACE_CURLпеременную среды вместо устаревшей GIT_CURL_VERBOSE .

GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git
VonC
источник
Эта функция классная! Единственная точка - это вывод ASCII (где они печатают все, что не в (ch >= 0x20) && (ch < 0x80)виде точки .), и нет возможности шестнадцатеричного вывода для http-данных.
кинорнирвана
8

Git 2,22 (Q2 2019) вводит trace2с фиксации ee4512e на Джеффа Hostetler :

trace2: создать новое комбинированное средство трассировки

Создайте новое унифицированное средство трассировки для git.
Возможная цель - заменить ток trace_printf*и trace_performance*подпрограммы унифицированным набором git_trace2*подпрограмм.

В дополнение к обычному API в стиле printf trace2предоставляет высокоуровневые глаголы событий с фиксированными полями, позволяющими записывать структурированные данные.
Это облегчает постобработку и анализ для внешних инструментов.

Trace2 определяет 3 выходных цели.
Они устанавливаются с помощью переменных среды " GIT_TR2", " GIT_TR2_PERF" и " GIT_TR2_EVENT".
Они могут быть установлены на «1» или на абсолютное имя пути (как текущий GIT_TRACE).

Примечание: в отношении имени переменной среды всегда используйте GIT_TRACExxx, а не GIT_TRxxx.
Так на самом деле GIT_TRACE2, GIT_TRACE2_PERFили GIT_TRACE2_EVENT.
См. Переименование Git 2.22, упомянутое ниже.

Далее следует начальная работа над этой новой функцией трассировки со старыми именами переменных среды:

  • GIT_TR2предназначен для замены GIT_TRACEи регистрации сводных данных команды.

  • GIT_TR2_PERFпредназначен для замены GIT_TRACE_PERFORMANCE.
    Он расширяет вывод столбцами для командного процесса, потока, репо, абсолютного и относительного затраченного времени. Он сообщает о событиях для запуска / остановки дочернего процесса, запуска / остановки потока и вложенности функций для каждого потока.

  • GIT_TR2_EVENTэто новый структурированный формат. Он записывает данные о событиях в виде серии записей JSON.

Вызовы функций trace2 регистрируются в любой из 3 включенных выходных целей без необходимости вызывать разные trace_printf*или trace_performance*подпрограммы.

Смотрите коммит a4d3a28 (21 марта 2019 г.) Джоша Стедмона ( steadmon) .
(Слиты Junio C Hamano - gitster- в фиксации 1b40314 , 08 мая 2019)

trace2: запись в каталог цели

Если значение переменной среды trace2 представляет собой абсолютный путь, относящийся к существующему каталогу, запишите выходные данные в файлы (по одному на процесс) под данным каталогом.
Файлы будут именоваться в соответствии с последним компонентом SID trace2, за которым следует счетчик, чтобы избежать возможных конфликтов.

Это делает более удобным собирать трассировки для каждого вызова git, безоговорочно устанавливая в соответствующем trace2envvar постоянное имя каталога.


Смотрите также совершать f672dee (29 Апр 2019), а также совершать 81567ca , совершает 08881b9 , совершают bad229a , совершает 26c6f25 , совершает bce9db6 , совершает 800a7f9 , совершает a7bc01e , совершает 39f4317 , совершает a089724 , совершает 1703751 (15 апр 2019) по Джеффу Hostetler ( jeffhostetler) ,
(Слиты Junio C Hamano - gitster- в фиксации 5b2d1c0 , 13 мая 2019)

Новая документация теперь включает в себя параметры конфигурации , которые считываются только из системы и глобальных конфигурационных файлов (означающие хранилища локальных и worktree конфигурационных файлов и-c аргументы командной строки , не соблюдаются.)

Пример :

$ git config --global trace2.normalTarget ~/log.normal
$ git version
git version 2.20.1.155.g426c96fcdb

доходность

$ cat ~/log.normal
12:28:42.620009 common-main.c:38                  version 2.20.1.155.g426c96fcdb
12:28:42.620989 common-main.c:39                  start git version
12:28:42.621101 git.c:432                         cmd_name version (version)
12:28:42.621215 git.c:662                         exit elapsed:0.001227 code:0
12:28:42.621250 trace2/tr2_tgt_normal.c:124 atexit elapsed:0.001265 code:0

И для измерения производительности :

$ git config --global trace2.perfTarget ~/log.perf
$ git version
git version 2.20.1.155.g426c96fcdb

доходность

$ cat ~/log.perf
12:28:42.620675 common-main.c:38                  | d0 | main                     | version      |     |           |           |            | 2.20.1.155.g426c96fcdb
12:28:42.621001 common-main.c:39                  | d0 | main                     | start        |     |  0.001173 |           |            | git version
12:28:42.621111 git.c:432                         | d0 | main                     | cmd_name     |     |           |           |            | version (version)
12:28:42.621225 git.c:662                         | d0 | main                     | exit         |     |  0.001227 |           |            | code:0
12:28:42.621259 trace2/tr2_tgt_perf.c:211         | d0 | main                     | atexit       |     |  0.001265 |           |            | code:0

Как описано в Git 2.23 (Q3 2019), используемая переменная среды GIT_TRACE2 .

См. Коммит 6114a40 (26 июня 2019 г.) Карло Марсело Аренаса Белона ( carenas) .
См. Коммит 3efa1c6 (12 июня 2019 г.), автор fvar Arnfjörð Bjarmason ( avar) .
(Слиты Junio C Hamano - gitster- в фиксации e9eaaa4 , 09 июл 2019)

Это следует за работой, проделанной в Git 2.22: коммит 4e0d3aa , коммит e4b75d6 (19 мая 2019 г.) от SZEDER Gábor ( szeder) .
(Слиты Junio C Hamano - gitster- в фиксации 463dca6 , 30 мая 2019)

trace2: переименование переменных среды в GIT_TRACE2 *

Для переменной среды, которая должна быть установлена ​​пользователями, GIT_TR2* переменные env слишком неясны, непоследовательны и ужасны.

Большинство установленных GIT_*переменных окружения не используют сокращения, а в случае немногих , которые делают ( GIT_DIR, GIT_COMMON_DIR, GIT_DIFF_OPTS) совершенно очевидно , что эти сокращения ( DIRи OPTS) обозначают.
Но что означает TR? Трек, традиционный, трейлер, транзакция, передача, трансформация, переход, перевод, трансплантация, транспорт, обход, дерево, триггер, усечение, доверие или ...?!

Предполагается, что средство trace2, как следует из названия суффикса «2», в конечном итоге заменит первоначальное средство трассировки Git.
Разумно ожидать, что соответствующие переменные среды последуют их примеру, и после исходных GIT_TRACEпеременных они вызываются GIT_TRACE2; нет такой вещиGIT_TR ».

Все специфичные для trace2 переменные конфигурации очень разумно находятся в trace2разделе «, а не в tr2».

OTOH, мы ничего не получаем, опуская последние три символа «trace» в именах этих переменных среды .

Итак, давайте переименуем все GIT_TR2*переменные среды GIT_TRACE2*, прежде чем они попадут в стабильный выпуск.


Git 2.24 (Q3 2019) улучшает инициализацию репозитория Git.

См. Коммит 22932d9 , коммит 5732f2b , коммит 58ebccb (06 августа 2019 г.) Джеффом Кингом ( peff) .
(Объединено Junio ​​C Hamano - gitster- в коммите b4a1eec , 09 сентября 2019 г.)

общее: задержка инициализации trace2

Мы инициализируем trace2 систему в общей функции main (), чтобы все программы (даже не встроенные) включали трассировку.

Но trace2запуск относительно тяжелый, так как мы должны фактически прочитать конфигурацию на диске, чтобы решить, следует ли отслеживать.
Это может вызвать неожиданные взаимодействия с другими общими основными инициализации. Например, мы будем в конечном итоге в коде конфигурации перед вызовом initialize_the_repository(), и обычный инвариант, которыйthe_repository никогда не равен NULL, не будет удерживаться.

Давайте продвинем trace2инициализацию дальше в общем-общем, непосредственно перед тем, как мы выполним cmd_main().


Git 2.24 (Q4 2019) также гарантирует, что вывод из trace2подсистемы теперь более отформатирован.

См. Коммит 742ed63 , коммит e344305 , коммит c2b890a (09 августа 2019 г.), коммит ad43e37 , коммит 04f10d3 , коммит da4589c (08 авг 2019 г.) и коммит 371df1b (31 июля 2019 г.) Джеффом Хостетлером ( jeffhostetler) .
(Слиты Junio C Hamano - gitster- в фиксации 93fc876 , 30 Sep 2019)

И еще Git 2.24

См. Коммит 87db61a , коммит 83e57b0 (04 октября 2019 г.) и коммит 2254101 , коммит 3d4548e (03 октября 2019 г.) Джоша Стедмона ( steadmon) .
(Слиты Junio C Hamano - gitster- в фиксации d0ce4d9 , 15 октября 2019)

trace2: отменить новые трассы, если в целевом каталоге слишком много файлов

Подписано: Джош Стедмон

trace2может записывать файлы в целевой каталог.
При интенсивном использовании этот каталог может заполняться файлами, что создает трудности для систем обработки трассировки.

Этот патч добавляет опцию config ( trace2.maxFiles) для установки максимального количества файлов, которые trace2будут записываться в целевой каталог.

Следующее поведение включается, если для свойства maxFilesустановлено положительное целое число:

  • Когда trace2нужно записать файл в целевой каталог, сначала проверьте, следует ли отбрасывать следы. Следы следует отбросить, если:

    • есть сторожевой файл, объявляющий, что файлов слишком много
    • ИЛИ, количество файлов превышает trace2.maxFiles.
      В последнем случае мы создаем сторожевой файл с именем, git-trace2-discardчтобы ускорить будущие проверки.

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

По умолчанию значение trace2.maxFilesравно нулю, что отключает проверку количества файлов.

Конфигурации также могут быть переопределены с новым переменным окружением: GIT_TRACE2_MAX_FILES.


А в Git 2.24 (Q4 2019) учат trace2 о git pushстадиях.

Смотрите коммит 25e4b80 , коммит 5fc3118 (02 октября 2019 г.) Джоша Стедмона ( steadmon) .
(Слиты Junio C Hamano - gitster- в фиксации 3b9ec27 , 15 окт 2019)

push: добавить инструментальные средства trace2

Подписано: Джош Стедмон

Добавьте области trace2 в transport.cи, builtin/push.cчтобы лучше отслеживать время, проведенное в различных фазах нажатия:

  • Список ссылок
  • Проверка подмодулей
  • Толкающие подмодули
  • Нажав ссылки

В Git 2.25 (Q1 2020) некоторые из Documentation/technicalних перемещены в заголовочные *.hфайлы.

См совершать 6c51cb5 , совершать d95a77d , совершает bbcfa30 , совершает f1ecbe0 , совершают 4c4066d , совершает 7db0305 , совершает f3b9055 , совершает 971b1f2 , совершает 13aa9c8 , совершают c0be43f , совершают 19ef3dd , совершает 301d595 , совершает 3a1b341 , совершает 126c1cc , совершает d27eb35 , совершает 405c6b1 , совершить d3d7172 , совершают 3f1480b , совершают 266f03e , коммит 13c4d7e(17 ноября 2019 г.)Хеба Вали ( HebaWaly) .
(Слиты Junio C Hamano - gitster- в фиксации 26c816a , 16 дек 2019)

trace2: переместить документ в trace2.h

Подписано: Хеба Вали

Переместите документацию по функциям из Documentation/technical/api-trace2.txtв, trace2.hпоскольку разработчикам легче найти информацию об использовании рядом с кодом, а не искать ее в другом файле документа.

Из раздела удален только раздел документации по функциям, так Documentation/technical/api-trace2.txtкак файл полон деталей, которые, как представляется, более уместны, чтобы быть в отдельном файле документа, как есть, со ссылкой на файл документа, добавленный в trace2.h. Также удалена функция doc, чтобы избежать избыточной информации, которую будет сложно синхронизировать с документацией в заголовочном файле.

(хотя эта реорганизация имела побочный эффект для другой команды, объяснена и исправлена ​​с помощью Git 2.25.2 (март 2020 г.) в коммите cc4f2eb (14 февраля 2020 г.) Джеффом Кингом ( peff) .
(Объединено с Junio ​​C Hamano - gitster- в коммите 1235384 , 17 февраля 2020 г.) )


С Git 2.27 (Q2 2020): усовершенствование Trace2, позволяющее регистрировать переменные среды .

Смотрите коммит 3d3adaa (20 марта 2020 г.) Джоша Стедмона ( steadmon) .
(Слиты Junio C Hamano - gitster- в фиксации 810dc64 , 22 Apr 2020)

trace2: научить Git регистрировать переменные среды

Подписано: Джош Стедмон
Пост: Джефф Хостетлер

Через trace2 Git уже может регистрировать интересные параметры конфигурации (см. trace2_cmd_list_config()Функцию). Однако это может дать неполное изображение, поскольку многие параметры конфигурации также допускают переопределения через переменные среды.

Чтобы обеспечить более полные журналы, мы добавляем новую trace2_cmd_list_env_vars()функцию и поддерживающую реализацию, смоделированную после существующей реализации регистрации параметров конфигурации.


С помощью Git 2.27 (Q2 2020) научите кодовые пути, которые показывают индикатор хода выполнения, также использовать start_progress()и stop_progress()вызовы как « region» для отслеживания.

См. Коммит 98a1364 (12 мая 2020 г.) Эмили Шаффер ( nasamuffin) .
(Слиты Junio C Hamano - gitster- в фиксации d98abce , 14 мая 2020)

trace2: регистрировать время выполнения и пропускную способность

Подписано: Эмили Шаффер

Вместо того, чтобы учить только одной операции, такой как ' git fetch', как записывать пропускную способность в трассировки, мы можем узнать о широком спектре пользовательских операций, которые могут показаться медленными, добавляя инструменты в саму библиотеку прогресса .

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

Показывая количество объектов и размер передаваемых данных, мы должны быть в состоянии сделать некоторые производные измерения, чтобы гарантировать, что операции масштабируются так, как мы ожидаем.

И:

С Git 2.27 (Q2 2020), в последнюю минуту исправлено наше недавнее изменение, позволяющее использовать API прогресса в качестве отслеживаемого региона.

См. Коммит 3af029c (15 мая 2020 г.) Деррика Столи ( derrickstolee) .
(Слиты Junio C Hamano - gitster- в фиксации 85d6e28 , 20 мая 2020)

progress: звонить trace2_region_leave()только после звонка_enter()

Подписано: Деррик Стоули

Пользователь о ходе API вызовов start_progress()условно и зависит от display_progress()и stop_progress()функции стать не оп , когда start_progress()не был вызван.

Как мы добавили вызов trace2_region_enter()к start_progress(), звонки на другие вызовы API trace2 из функций API прогресса должны убедиться , что эти trace2 вызовы пропускаются , когда start_progress()не были вызваны на прогресс структуру.

В частности, не называйте trace2_region_leave()из stop_progress()когда мы не заехали start_progress(), которые назвали бы соответствие trace2_region_enter().

VonC
источник
4

Вы пытались добавить -vоператор verbose ( ) при клонировании?

git clone -v git://git.kernel.org/pub/scm/.../linux-2.6 my2.6

JamesHalsall
источник
2

Для более старых версий git (1.8 и ранее)

Я не нашел подходящего способа включить отладку SSH в старых версиях git и ssh. Я искал переменные окружения, используя ltrace -e getenv ...и не мог найти какую-либо комбинацию переменных GIT_TRACE или SSH_DEBUG, которые будут работать.

Вместо этого вот рецепт для временного внедрения 'ssh -v' в последовательность git-> ssh:

$ echo '/usr/bin/ssh -v ${@}' >/tmp/ssh
$ chmod +x /tmp/ssh
$ PATH=/tmp:${PATH} git clone ...
$ rm -f /tmp/ssh

Вот вывод из git версии 1.8.3 с ssh-версией OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 февраля 2013 г., клонирование репозитория github:

$ (echo '/usr/bin/ssh -v ${@}' >/tmp/ssh; chmod +x /tmp/ssh; PATH=/tmp:${PATH} \
   GIT_TRACE=1 git clone https://github.com/qneill/cliff.git; \
   rm -f /tmp/ssh) 2>&1 | tee log
trace: built-in: git 'clone' 'https://github.com/qneill/cliff.git'
trace: run_command: 'git-remote-https' 'origin' 'https://github.com/qneill/cliff.git'
Cloning into 'cliff'...
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/q.neill/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to github.com ...
...
Transferred: sent 4120, received 724232 bytes, in 0.2 seconds
Bytes per second: sent 21590.6, received 3795287.2
debug1: Exit status 0
trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all'
qneill
источник