Wie kann ich Debug-Informationen zu git / git-shell haben?
Ich hatte ein Problem, das user1
ein Repository problemlos user2
klonen konnte , während nur ein leeres geklont werden konnte. Ich hatte eingestellt GIT_TRACE=1
, aber nichts Nützliches wurde gesagt.
Nach langem Ausprobieren stellte sich schließlich heraus, dass es sich um ein Berechtigungsproblem für eine Datei handelte. Eine entsprechende Fehlermeldung kann dieses Problem kurzschließen.
GIT_CURL_VERBOSE
haben Sie mit Git 2.9.x / 2.10GIT_TRACE_CURL
. Siehe meine Antwort unten .GIT_TRACE_CURL
) haben Sie jetzttrace2
. Beispiel :git config --global trace2.normalTarget ~/log.normal
. Siehe meine (neue) Antwort unten .Antworten:
Verwenden Sie für eine noch ausführlichere Ausgabe Folgendes:
GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master
quelle
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
Teil durch den Befehl ersetzen, den Sie ausführen möchten.set GIT_CURL_VERBOSE=1
set GIT_TRACE=1
git pull origin master
Debuggen
Git hat einen ziemlich vollständigen Satz eingebetteter Traces, mit denen Sie Ihre Git-Probleme debuggen können.
Um sie einzuschalten, können Sie die folgenden Variablen definieren:
GIT_TRACE
für allgemeine Spuren,GIT_TRACE_PACK_ACCESS
zur Verfolgung des Packfile-Zugriffs,GIT_TRACE_PACKET
für die Ablaufverfolgung auf Paketebene für Netzwerkoperationen,GIT_TRACE_PERFORMANCE
zum Protokollieren der Leistungsdaten,GIT_TRACE_SETUP
Informationen zum Erkennen des Repositorys und der Umgebung, mit der es interagiert,GIT_MERGE_VERBOSITY
zum Debuggen einer rekursiven Zusammenführungsstrategie (Werte: 0-5),GIT_CURL_VERBOSE
zum Protokollieren aller Curl-Nachrichten (entsprichtcurl -v
),GIT_TRACE_SHALLOW
zum Debuggen des Abrufens / Klonens von flachen Repositorys.Mögliche Werte können sein:
true
,1
Oder2
auf stderr zu schreiben,/
der Verfolgung der Ausgabe bis zur angegebenen Datei beginnt .Weitere Informationen finden Sie unter: Git-Interna - Umgebungsvariablen
SSH
Versuchen Sie bei SSH-Problemen die folgenden Befehle:
oder verwenden Sie
ssh
, um Ihre Anmeldeinformationen zu überprüfen, zoder über HTTPS-Port:
Hinweis: Reduzieren Sie die Anzahl von
-v
, um die Ausführlichkeitsstufe zu verringern.Beispiele
quelle
echo 'ssh -vvv $*' > ssh && chmod +x ssh
aufecho 'ssh -vvv "$@"' > ssh && chmod +x ssh
sollte in dem Randfall sicherer sein, in dem ein einzelner Parameter ein Leerzeichen enthält.Probier diese:
quelle
Wenn es über SSH ist, können Sie Folgendes verwenden:
Für eine höhere Debugstufe für Typ -vv oder -vvv für Debugstufe 2 bzw. 3:
Dies ist hauptsächlich nützlich, um Probleme mit öffentlichen und privaten Schlüsseln mit dem Server zu lösen. Sie können diesen Befehl für jeden git-Befehl verwenden, nicht nur für 'git clone'.
quelle
set GIT_SSH_COMMAND=ssh -v
(keine Anführungszeichen).Git 2.9.x / 2.10 (Q3 2016) fügt eine weitere Debug-Option hinzu:
GIT_TRACE_CURL
.Siehe Commit 73e57aa , Commit 74c682d (23. Mai 2016) von Elia Pinto (
devzero2000
) .Unterstützt von: Torsten Bögershausen (
tboegi
) , Ramsay Jones, Junio C. Hamano (gitster
) , Eric Sunshine (sunshineco
) und Jeff King (peff
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 2f84df2 , 06. Juli 2016)In der Dokumentation heißt es:
Sie können diese neue Option in dieser Antwort sehen , aber auch in den Git 2.11 (Q4 2016) -Tests:
Siehe Commit 14e2411 , Commit 81590bf , Commit 4527aa1 , Commit 4eee6c6 ( 07.09.2016 ) von Elia Pinto (
devzero2000
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 930b67e , 12. September 2016)quelle
(ch >= 0x20) && (ch < 0x80)
als Punkt ist.
) und keine Möglichkeit der Hex-Ausgabe für http-Daten.Git 2.22 (Q2 2019) stellt
trace2
mit Commit ee4512e von Jeff Hostetler vor :Hinweis: In Bezug auf den Namen der Umgebungsvariablen immer verwenden
GIT_TRACExxx
, nichtGIT_TRxxx
.Also eigentlich
GIT_TRACE2
,GIT_TRACE2_PERF
oderGIT_TRACE2_EVENT
.Siehe die unten erwähnte Umbenennung von Git 2.22.
Was folgt, ist die erste Arbeit an dieser neuen Ablaufverfolgungsfunktion mit den alten Namen der Umgebungsvariablen:
Siehe Commit a4d3a28 (21. März 2019) von Josh Steadmon (
steadmon
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 1b40314 , 08. Mai 2019)Siehe auch Commit f672dee (29. April 2019) und Commit 81567ca , Commit 08881b9 , Commit bad229a , Commit 26c6f25 , Commit bce9db6 , Commit 800a7f9 , Commit a7bc01e , Commit 39f4317 , Commit a089724 , Commit 1703751 (15. April 2019) von Jeff Hostetler (
jeffhostetler
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 5b2d1c0 , 13. Mai 2019)Die neue Dokumentation enthält jetzt Konfigurationseinstellungen, die nur aus den System- und globalen Konfigurationsdateien gelesen werden (dh lokale Repository- und Worktree-Konfigurationsdateien sowie
-c
Befehlszeilenargumente werden nicht berücksichtigt ).Beispiel :
ergibt
Und zur Leistungsmessung :
ergibt
Wie in Git 2.23 (Q3 2019) dokumentiert, ist die zu verwendende Umgebungsvariable
GIT_TRACE2
.Siehe Commit 6114a40 (26. Juni 2019) von Carlo Marcelo Arenas Belón (
carenas
) .Siehe Commit 3efa1c6 (12. Juni 2019) von Ævar Arnfjörð Bjarmason (
avar
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit e9eaaa4 , 09. Juli 2019)Dies folgt der Arbeit in Git 2.22: Commit 4e0d3aa , Commit e4b75d6 (19. Mai 2019) von SZEDER Gábor (
szeder
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 463dca6 , 30. Mai 2019)Git 2.24 (Q3 2019) verbessert die Initialisierung des Git-Repositorys.
Siehe Commit 22932d9 , Commit 5732f2b , Commit 58ebccb (06. August 2019) von Jeff King (
peff
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit b4a1eec , 9. September 2019)Git 2.24 (Q4 2019) stellt außerdem sicher, dass die Ausgabe vom
trace2
Subsystem jetzt hübscher formatiert wird.Siehe Commit 742ed63 , Commit e344305 , Commit c2b890a (09. August 2019), Commit ad43e37 , Commit 04f10d3 , Commit da4589c (08. August 2019) und Commit 371df1b (31. Juli 2019) von Jeff Hostetler (
jeffhostetler
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 93fc876 , 30. September 2019)Und immer noch Git 2.24
Siehe Commit 87db61a , Commit 83e57b0 (04. Oktober 2019) und Commit 2254101 , Commit 3d4548e (03. Oktober 2019) von Josh Steadmon (
steadmon
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit d0ce4d9 , 15. Oktober 2019)Und Git 2.24 (Q4 2019) lehrt trace2 über
git push
Stufen.Siehe Commit 25e4b80 , Commit 5fc3118 (02. Oktober 2019) von Josh Steadmon (
steadmon
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 3b9ec27 , 15. Oktober 2019)Mit Git 2.25 (Q1 2020) wird ein Teil davon
Documentation/technical
in Header-*.h
Dateien verschoben .Sehen Sie verpflichten 6c51cb5 , begehen d95a77d , begehen bbcfa30 , begehen f1ecbe0 , begehen 4c4066d , begehen 7db0305 , begehen f3b9055 , begehen 971b1f2 , begehen 13aa9c8 , begehen c0be43f , begehen 19ef3dd , begehen 301d595 , begehen 3a1b341 , begehen 126c1cc , begehen d27eb35 , begehen 405c6b1 , verpflichten d3d7172 , Commit 3f1480b , Commit 266f03e , 266f03e festschreiben(17. November 2019) von Heba Waly (
HebaWaly
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 26c816a , 16. Dezember 2019)(obwohl diese Reorganisation einen Nebeneffekt auf einen anderen Befehl hatte, erklärt und behoben mit Git 2.25.2 (März 2020) in Commit cc4f2eb (14. Februar 2020) von Jeff King (
peff
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 1235384 , 17. Februar 2020) )Mit Git 2.27 (Q2 2020): Trace2-Erweiterung, um die Protokollierung der Umgebungsvariablen zu ermöglichen .
Siehe Commit 3d3adaa (20. März 2020) von Josh Steadmon (
steadmon
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 810dc64 , 22. April 2020)Lehren Sie mit Git 2.27 (Q2 2020) Codepfade, die die Fortschrittsanzeige anzeigen, um auch die
start_progress()
und diestop_progress()
Aufrufe als "region
" zu verfolgen .Siehe Commit 98a1364 (12. Mai 2020) von Emily Shaffer (
nasamuffin
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit D98abce , 14. Mai 2020)Und:
Mit Git 2.27 (Q2 2020) wurde in letzter Minute eine Korrektur für unsere jüngste Änderung vorgenommen, um die Verwendung der Fortschritts-API als nachverfolgbare Region zu ermöglichen.
Siehe Commit 3af029c (15. Mai 2020) von Derrick Stolee (
derrickstolee
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 85d6e28 , 20. Mai 2020)quelle
Haben Sie versucht, den
-v
Operator verbose ( ) beim Klonen hinzuzufügen ?git clone -v git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
quelle
Für ältere Git-Versionen (1.8 und früher)
Ich konnte keinen geeigneten Weg finden, um das SSH-Debugging in einer älteren Git- und SSH- Version zu aktivieren . Ich habe nach Umgebungsvariablen gesucht
ltrace -e getenv ...
und konnte keine Kombination von GIT_TRACE- oder SSH_DEBUG-Variablen finden, die funktionieren würde.Stattdessen ist hier ein Rezept, um 'ssh -v' vorübergehend in die git-> ssh-Sequenz einzufügen:
Hier ist die Ausgabe von git Version 1.8.3 mit der ssh-Version OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11. Februar 2013, die ein Github-Repo klont:
quelle