Apakah mungkin untuk melakukan git-checkout satu baris daripada seluruh file?

88

Jika saya telah mengubah beberapa baris file berversi, apakah mungkin untuk membatalkan perubahan baris dengan baris perintah?

Sama seperti yang akan saya lakukan untuk seluruh file dengan:

git checkout /path/to/file.extension

tapi melakukan sesuatu seperti, katakanlah

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

apakah ini mungkin?

LuisVM
sumber

Jawaban:

126

Anda dapat menggunakan git checkout -puntuk melihat setiap bongkah satu per satu dan memutuskan apakah akan memeriksanya atau membiarkannya apa adanya (dan itu membutuhkan argumen jalur opsional juga jika Anda ingin mempersempitnya lebih jauh).

Matt Enright
sumber
Metode ini memberikan bagian yang terlalu besar, bukan garis ... :(
betontalpfa
47

Untuk menguraikan jawaban Matt, git checkout --patch -- <path argument>mulailah mode interaktif dengan opsi berikut:

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

The y n sdan epilihan adalah tempat yang baik untuk memulai.

Lihat juga:

Shaun Luttin
sumber