Czy można wyewidencjonować pojedynczą linię zamiast całego pliku?

86

Jeśli zmodyfikowałem kilka wierszy wersjonowanego pliku, czy można cofnąć zmiany w wierszu za pomocą wiersza poleceń?

Tak jak zrobiłbym to dla całego pliku z:

git checkout /path/to/file.extension

ale robiąc coś takiego, powiedzmy

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

czy to możliwe?

LuisVM
źródło

Odpowiedzi:

124

Możesz użyć, git checkout -paby zobaczyć każdy fragment indywidualnie i zdecydować, czy chcesz je sprawdzić, czy pozostawić tak, jak jest (i to również wymaga opcjonalnego argumentu ścieżki, jeśli chcesz go bardziej zawęzić).

Matt Enright
źródło
Ta metoda daje zbyt duże części, zamiast linii ... :(
betontalpfa
46

Aby rozwinąć odpowiedź Matta, git checkout --patch -- <path argument>uruchom tryb interaktywny z następującymi opcjami:

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

y n sI eopcje są dobre miejsce, aby rozpocząć.

Zobacz też:

Shaun Luttin
źródło