Ist es möglich, eine einzelne Zeile anstelle der gesamten Datei auszuchecken?

85

Wenn ich mehrere Zeilen einer versionierten Datei geändert habe, ist es dann möglich, die Änderungen einer Zeile über die Befehlszeile rückgängig zu machen ?

Genau wie ich es für eine ganze Datei tun würde mit:

git checkout /path/to/file.extension

aber so etwas tun, sagen wir

git checkout /path/to/file.extension --line 10

Ist das möglich?

LuisVM
quelle

Antworten:

124

Sie können git checkout -pjedes Stück einzeln anzeigen und entscheiden, ob Sie es auschecken oder unverändert lassen möchten (und dies erfordert auch ein optionales Pfadargument, wenn Sie es weiter eingrenzen möchten).

Matt Enright
quelle
Diese Methode liefert zu große Teile anstelle von Linien ... :(
Tastaturalpfa
45

git checkout --patch -- <path argument>Startet einen interaktiven Modus mit den folgenden Optionen, um auf Matts Antwort einzugehen:

y - stage this hunk
n - do not stage this hunk

q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk

s - split the current hunk into smaller hunks
e - manually edit the current hunk

? - print help

Die y n sund eOptionen sind ein guter Anfang.

Siehe auch:

Shaun Luttin
quelle