Jak mogę uzyskać informacje debugowania dotyczące git / git-shell?
Miałem problem, że user1
mogłem sklonować repozytorium bez problemu, podczas gdy user2
mogłem sklonować tylko puste. Ustawiłem GIT_TRACE=1
, ale nie powiedziano nic użytecznego.
W końcu po długich próbach i błędach okazało się, że był to problem z uprawnieniami do pliku. Odpowiedni komunikat o błędzie może spowodować zwarcie tego problemu.
GIT_CURL_VERBOSE
będziesz mieć z Git 2.9.x / 2.10GIT_TRACE_CURL
. Zobacz moją odpowiedź poniżej .GIT_TRACE_CURL
) masztrace2
. Przykład:git config --global trace2.normalTarget ~/log.normal
. Zobacz moją (nową) odpowiedź poniżej .Odpowiedzi:
Aby uzyskać jeszcze bardziej szczegółowe dane wyjściowe, użyj następującego:
GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master
źródło
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
git pull origin master
część poleceniem, które chcesz wykonać.set GIT_CURL_VERBOSE=1
set GIT_TRACE=1
git pull origin master
Debugowanie
Git ma dość kompletny zestaw śladów, których możesz użyć do debugowania problemów z gitem.
Aby je włączyć, możesz zdefiniować następujące zmienne:
GIT_TRACE
na ślady ogólne,GIT_TRACE_PACK_ACCESS
do śledzenia dostępu do pliku pakietu,GIT_TRACE_PACKET
do śledzenia na poziomie pakietów dla operacji sieciowych,GIT_TRACE_PERFORMANCE
do rejestrowania danych dotyczących wydajności,GIT_TRACE_SETUP
aby uzyskać informacje o odkrywaniu repozytorium i środowiska, z którym wchodzi w interakcje,GIT_MERGE_VERBOSITY
do debugowania rekurencyjnej strategii scalania (wartości: 0-5),GIT_CURL_VERBOSE
do logowania wszystkich komunikatów curl (odpowiednikcurl -v
),GIT_TRACE_SHALLOW
do debugowania pobierania / klonowania płytkich repozytoriów.Możliwe wartości mogą obejmować:
true
,1
Lub2
pisać na stderr,/
aby prześledzić dane wyjściowe do określonego pliku.Aby uzyskać więcej informacji, zobacz: Wewnętrzne elementy Git - zmienne środowiskowe
SSH
W przypadku problemów z SSH wypróbuj następujące polecenia:
lub użyj
ssh
do sprawdzenia swoich danych uwierzytelniających, nplub przez port HTTPS:
Uwaga: Zmniejsz liczbę,
-v
aby zmniejszyć poziom szczegółowości.Przykłady
źródło
echo 'ssh -vvv $*' > ssh && chmod +x ssh
naecho 'ssh -vvv "$@"' > ssh && chmod +x ssh
powinna być bezpieczniejsza w przypadku krawędzi, w którym pojedynczy parametr zawiera spację.Spróbuj tego:
źródło
Jeśli jest używany przez SSH, możesz użyć:
Aby uzyskać wyższy poziom debugowania dla typu -vv lub -vvv dla poziomu debugowania odpowiednio 2 i 3:
Jest to przydatne głównie do rozwiązywania problemów z kluczami publicznymi i prywatnymi na serwerze. Możesz użyć tego polecenia dla dowolnego polecenia git, nie tylko „git clone”.
źródło
set GIT_SSH_COMMAND=ssh -v
(bez cudzysłowów).Git 2.9.x / 2,10 (Q3 2016) dodaje inną opcję debugowania:
GIT_TRACE_CURL
.Zobacz commit 73e57aa , commit 74c682d (23 maja 2016) autorstwa Elia Pinto (
devzero2000
) .Z pomocą: Torsten Bögershausen (
tboegi
) , Ramsay Jones, Junio C Hamano (gitster
) , Eric Sunshine (sunshineco
) i Jeff King (peff
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 2f84df2 , 06 lipca 2016)Dokumentacja będzie zawierać:
Możesz zobaczyć tę nową opcję użytą w tej odpowiedzi , ale także w testach Git 2.11 (Q4 2016):
Zobacz zatwierdzenie 14e2411 , zatwierdzenie 81590bf , zatwierdzenie 4527aa1 , zatwierdzenie 4eee6c6 (7 września 2016) autorstwa Elia Pinto (
devzero2000
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 930b67e , 12 września 2016 r.)źródło
(ch >= 0x20) && (ch < 0x80)
jest kropką.
) i nie ma możliwości wyjścia szesnastkowego dla danych http.Git 2.22 (Q2 2019) wprowadza
trace2
z zatwierdzeniem ee4512e autorstwa Jeffa Hostetlera :Uwaga: jeśli chodzi o nazwę zmiennej środowiskowej, zawsze używaj
GIT_TRACExxx
, nieGIT_TRxxx
.Więc faktycznie
GIT_TRACE2
,GIT_TRACE2_PERF
alboGIT_TRACE2_EVENT
.Zobacz zmianę nazwy Git 2.22 wspomnianą poniżej.
Poniżej przedstawiono wstępne prace nad tą nową funkcją śledzenia ze starymi nazwami zmiennych środowiskowych:
Zobacz commit a4d3a28 (21 marca 2019) autorstwa Josha Steadmona (
steadmon
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 1b40314 , 08 maja 2019 r.)Zobacz także commit f672dee (29 kwietnia 2019) i commit 81567ca , commit 08881b9 , commit bad229a , commit 26c6f25 , commit bce9db6 , commit 800a7f9 , commit a7bc01e , commit 39f4317 , commit a089724 , commit 1703751 (15 April 2019) by Jeff Hostetler (
jeffhostetler
) .(Scalenie przez Junio C Hamano -
gitster
- w zatwierdzeniu 5b2d1c0 , 13 maja 2019 r.)Nowa dokumentacja zawiera teraz ustawienia konfiguracyjne, które są odczytywane tylko z systemem i globalnych plików konfiguracyjnych (czyli repozytorium lokalne i worktree pliki konfiguracyjne i
-c
argumenty wiersza poleceń nie są przestrzegane).Przykład :
plony
I dla pomiaru wydajności :
plony
Jak udokumentowano w Git 2.23 (Q3 2019), używaną zmienną środowiskową jest
GIT_TRACE2
.Zob. Zobowiązanie 6114a40 (26 czerwca 2019 r.) Autorstwa Carlo Marcelo Arenas Belón (
carenas
) .Zobacz commit 3efa1c6 (12 czerwca 2019) autorstwa Ævara Arnfjörð Bjarmason (
avar
) .(Scalony przez Junio C Hamano -
gitster
- w zatwierdzeniu e9eaaa4 , 09 lipca 2019)Wynika to z pracy wykonanej w Git 2.22: commit 4e0d3aa , commit e4b75d6 (19 maja 2019) przez SZEDER Gábor (
szeder
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 463dca6 , 30 maja 2019 r.)Git 2.24 (Q3 2019) usprawnia inicjalizację repozytorium Git.
Zobacz commit 22932d9 , commit 5732f2b , commit 58ebccb (06 sierpnia 2019) autorstwa Jeffa Kinga (
peff
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu b4a1eec , 09 września 2019)Git 2.24 (Q4 2019) zapewnia również, że dane wyjściowe z
trace2
podsystemu są teraz ładniej sformatowane.Zobacz commit 742ed63 , commit e344305 , commit c2b890a (09 sierpnia 2019), commit ad43e37 , commit 04f10d3 , commit da4589c (08 sierpnia 2019) i commit 371df1b (31 lipca 2019) autorstwa Jeffa Hostetlera (
jeffhostetler
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 93fc876 , 30 września 2019)I nadal Git 2.24
Zobacz commit 87db61a , commit 83e57b0 (04 października 2019) i commit 2254101 , commit 3d4548e (03 Oct 2019) autorstwa Josha Steadmona (
steadmon
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu d0ce4d9 , 15 października 2019)Git 2.24 (Q4 2019) uczy trace2 o
git push
etapach.Zobacz commit 25e4b80 , commit 5fc3118 (02 października 2019) autorstwa Josha Steadmona (
steadmon
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 3b9ec27 , 15 października 2019 r.)W Git 2.25 (Q1 2020) część plików
Documentation/technical
jest przenoszona do*.h
plików nagłówkowych .Widzieć popełnić 6c51cb5 , popełnić d95a77d , popełnić bbcfa30 , popełnić f1ecbe0 , popełnić 4c4066d , popełnić 7db0305 , popełnić f3b9055 , popełnić 971b1f2 , popełnić 13aa9c8 , popełnić c0be43f , popełnić 19ef3dd , popełnić 301d595 , popełnić 3a1b341 , popełnić 126c1cc , popełnić d27eb35 , popełnić 405c6b1 , zobowiązać d3d7172 , zatwierdzenie 3f1480b , zatwierdzenie 266f03e , zatwierdzenie 13c4d7e(17 listopada 2019) autorstwa Heba Waly (
HebaWaly
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 26c816a , 16 grudnia 2019 r.)(chociaż ta reorganizacja miała efekt uboczny na inne polecenie, wyjaśnione i naprawione w Git 2.25.2 (marzec 2020) w zatwierdzeniu cc4f2eb (14 lutego 2020) przez Jeffa Kinga (
peff
) .(połączone przez Junio C Hamano -
gitster
- w zatwierdzeniu 1235384 , 17 lutego 2020) )Z Git 2.27 (Q2 2020): Ulepszenie Trace2 umożliwiające rejestrowanie zmiennych środowiskowych .
Zobacz commit 3d3adaa (20 marca 2020) autorstwa Josha Steadmona (
steadmon
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 810dc64 , 22 kwietnia 2020 r.)Z Git 2.27 (Q2 2020), codepaths uczą, że licznik pokazać postęp również użyć
start_progress()
, astop_progress()
rozmowy jako „region
”, aby prześledzić.Zobacz zobowiązanie 98a1364 (12 maja 2020) autorstwa Emily Shaffer (
nasamuffin
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu d98abce , 14 maja 2020 r.)I:
Wraz z Git 2.27 (Q2 2020) poprawiliśmy w ostatniej chwili naszą ostatnią zmianę, aby umożliwić korzystanie z interfejsu API postępu jako identyfikowalnego regionu.
Zobacz commit 3af029c (15 maja 2020) autorstwa Derrick Stolee (
derrickstolee
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 85d6e28 , 20 maja 2020 r.)źródło
Czy próbowałeś dodać
-v
operator verbose ( ) podczas klonowania?git clone -v git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
źródło
Dla starszych wersji git (1.8 i wcześniej)
Nie mogłem znaleźć odpowiedniego sposobu na włączenie debugowania SSH w starszych wersjach git i ssh. Szukałem zmiennych środowiskowych przy użyciu
ltrace -e getenv ...
i nie mogłem znaleźć żadnej kombinacji zmiennych GIT_TRACE lub SSH_DEBUG, które działałyby.Zamiast tego jest przepis na tymczasowe wstrzyknięcie 'ssh -v' do sekwencji git-> ssh:
Oto dane wyjściowe z git w wersji 1.8.3 z wersją ssh OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 lutego 2013 klonowanie repozytorium github:
źródło