60 Stimmen

Git Windows-Befehlszeile bleibt bei Git-Befehlen mit (END) stecken

Ich habe Git für Windows eingerichtet (msysgit) und es hat in den letzten Tagen gut funktioniert, aber heute habe ich einen seltsamen Fehler festgestellt.

Beim Ausführen eines Git-Befehls in der Windows-Befehlszeile oder in der Git Bash, die mit msysgit gebündelt ist, erscheint eine merkwürdige '(END)'-Zeile und danach kann ich keine anderen Befehle mehr ausgeben.

Alternativtext

Ab diesem Punkt erhalte ich nur noch System-Pieptöne.

Irgendwelche Ideen?

Danke, P.

106voto

Julien Roncaglia Punkte 16839

Git möchte Ihnen mehr als nur einen Bildschirm voller Informationen anzeigen, um dies zu tun, ruft es das Standard-Unix-Pager-Programm less auf. Geben Sie einfach q ein, um zum Prompt zurückzukehren, wenn Sie nicht mehr im Output navigieren möchten.

  • j eine Zeile nach unten bewegen
  • k eine Zeile nach oben bewegen
  • eine Seite nach unten bewegen
  • b eine Seite nach oben bewegen
  • h Hilfe anzeigen

Wenn Sie Git effizient nutzen möchten, sollten Sie die grundlegenden Unix-Tools lernen. Auch wenn Git auf Windows erstellt und ausgeführt wird, ist es auf der Plattform so ziemlich eine Fremdsoftware.

Wenn Sie less nicht möchten, ersetzen Sie es einfach durch ein anderes Pager-Programm in der Konfiguration. Wenn Sie überhaupt keinen Pager möchten, verwenden Sie einfach cat:

git config --global --add core.pager cat

3 Stimmen

+1 für den Austausch von less mit cat. Nicht dass ich das jemals machen wollte!

0 Stimmen

Du könntest auch mehr anstelle von weniger verwenden.

1 Stimmen

Und manchmal ist weniger mehr :)

17voto

Skilldrick Punkte 66961

Drücken Sie q, um den Pager zu verlassen (der standardmäßig less in git ist).

1 Stimmen

Ist es möglich, git daran zu hindern, dies zu tun?

2 Stimmen

@paperclip Warum würdest du das wollen? Sehr bald musst du durch die Ergebnisse blättern - es ist nur jetzt, da du gerade anfängst, dass du nur eine Seite bekommst. Gewöhn dich einfach daran, q zu drücken.

3 Stimmen

@Skilldrick Es ist kontraintuitiv (für einen Windows-Befehlszeilenbenutzer), aus dem Pager ausbrechen zu müssen, wenn Sie nicht mehr als 1 Seite haben. Wenn ich den Output seitwärts blättern muss, würde ich explizit an more pipen, z.B. git diff | more.

9voto

David Culp Punkte 5066

Ich bin zum ersten Mal auf diese Frage gestoßen, als ich nach dem Gleichen gesucht habe; um nicht aus dem Log-Befehl herauszugehen. Mittlerweile habe ich die Antwort gefunden, die mir gefällt, also werde ich, auch wenn es lange nach der ursprünglichen Frage ist, diese Antwort hinzufügen, um eine zusätzliche Lösung anzubieten, die ich nicht schnell in meiner eigenen Suche gefunden habe.

Andere haben erklärt, warum das (END) vorhanden ist - die Ergebnisse werden durch einen Pager geleitet, der für einen anderen Pager konfiguriert werden kann.

Manchmal möchte ich jedoch überhaupt nicht, dass es anhält; weil ich andere Optionen angegeben habe, die die Begrenzung übernehmen. Ich habe herausgefunden, dass für dieses git eine globale Option --no-pager existiert, um den in der Konfigurationsdatei definierten Pager auszuschalten.

Diese globale Option befindet sich im git-Befehl selbst, ist für alle Unterbefehle verfügbar und wird vor dem Unterbefehl platziert, so:

git --no-pager log

5voto

Colin D Bennett Punkte 9796

Git verwendet den "Pager" namens less, der es Ihnen ermöglicht, durch eine große Menge an Programmausgaben einfach zu scrollen. Die Standardeinstellungen von Git für Windows scheinen jedoch zu sein, den Pager auch dann weiter laufen zu lassen, wenn weniger als ein Bildschirm voller Ausgabe vorhanden ist.

Hier ist die Standardeinstellung, die ich vorher hatte, die immer das (END) anzeigen würde und darauf warten würde, dass Sie q drücken, bevor Sie zu Ihrer Eingabeaufforderung zurückkehren:

$ git config --get core.pager
less -+F

Sie können das Verhalten ändern, so dass less nur läuft (und die Tastatur steuert), wenn mehr als ein Bildschirm voller Ausgabe vorhanden ist, indem Sie die Option auf -F anstelle von -+F ändern.

Beheben Sie den lästigen Pager mit

$ git config --global core.pager "less -F"

(Die Optionssyntax -+X für less ist dokumentiert, um die Option -X auf ihren "Standard" zurückzusetzen, obwohl dies nicht das Verhalten war, das ich mit -+F beobachtet habe, da das Entfernen der Option gleichbedeutend mit -F war, nicht mit -+F.)

0 Stimmen

less -+X hat es für mich getan. Es entfernt die "less output" beim Verlassen von less, genauso wie das Standardverhalten bei Linux. Bin mir nicht sicher, warum es unter Windows nicht standardmäßig in Git Bash ist.

0 Stimmen

Tatsächlich ist less -+X -+F am besten, weil es das auch macht, wenn die Ausgabe weniger als einen Bildschirm beträgt.

0 Stimmen

Sie können auch pager = delta | weniger -+X -+F festlegen,

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X