Anda harus menggunakan indeks. Setelah melakukan reset campuran (" git reset HEAD ^"), tambahkan set perubahan pertama ke dalam indeks, kemudian komit. Kemudian lakukan sisanya.
Anda dapat menggunakan " git add " untuk menempatkan semua perubahan yang dibuat dalam file ke indeks. Jika Anda tidak ingin membuat setiap modifikasi yang dibuat dalam file, hanya beberapa di antaranya, Anda dapat menggunakan "git add -p".
Mari kita lihat sebuah contoh. Misalkan saya memiliki file bernama myfile, yang berisi teks berikut:
something
something else
something again
Saya memodifikasinya di komit terakhir saya sehingga sekarang terlihat seperti ini:
1
something
something else
something again
2
Sekarang saya memutuskan bahwa saya ingin membaginya menjadi dua, dan saya ingin penyisipan baris pertama berada di komit pertama, dan penyisipan baris terakhir berada di komit kedua.
Pertama saya kembali ke induk HEAD, tetapi saya ingin menyimpan modifikasi dalam sistem file, jadi saya menggunakan "git reset" tanpa argumen (yang akan melakukan apa yang disebut reset "campuran"):
$ git reset HEAD^
myfile: locally modified
$ cat myfile
1
something
something else
something again
2
Sekarang saya menggunakan "git add -p" untuk menambahkan perubahan yang ingin saya komit ke indeks (= saya tahap mereka). "git add -p" adalah alat interaktif yang menanyakan Anda tentang perubahan apa pada file yang harus ditambahkan ke indeks.
$ git add -p myfile
diff --git a/myfile b/myfile
index 93db4cb..2f113ce 100644
--- a/myfile
+++ b/myfile
@@ -1,3 +1,5 @@
+1
something
something else
something again
+2
Stage this hunk [y,n,a,d,/,s,e,?]? s # split this section into two!
Split into 2 hunks.
@@ -1,3 +1,4 @@
+1
something
something else
something again
Stage this hunk [y,n,a,d,/,j,J,g,e,?]? y # yes, I want to stage this
@@ -1,3 +2,4 @@
something
something else
something again
+2
Stage this hunk [y,n,a,d,/,K,g,e,?]? n # no, I don't want to stage this
Lalu saya melakukan perubahan pertama ini:
$ git commit -m "Added first line"
[master cef3d4e] Added first line
1 files changed, 1 insertions(+), 0 deletions(-)
Sekarang saya dapat melakukan semua perubahan lainnya (yaitu angka "2" yang dimasukkan di baris terakhir):
$ git commit -am "Added last line"
[master 5e284e6] Added last line
1 files changed, 1 insertions(+), 0 deletions(-)
Mari kita periksa log untuk melihat komitmen apa yang kita miliki:
$ git log -p -n2 | cat
Commit 5e284e652f5e05a47ad8883d9f59ed9817be59d8
Author: ...
Date: ...
Added last line
Diff --git a/myfile b/myfile
Index f9e1a67..2f113ce 100644
--- a/myfile
+++ b/myfile
@@ -2,3 +2,4 @@
something
something else
something again
+2
Commit cef3d4e0298dd5d279a911440bb72d39410e7898
Author: ...
Date: ...
Added first line
Diff --git a/myfile b/myfile
Index 93db4cb..f9e1a67 100644
--- a/myfile
+++ b/myfile
@@ -1,3 +1,4 @@
+1
something
something else
something again
git reset [--patch|-p] <commit>yang dapat Anda gunakan untuk menyelamatkan Anda dari masalah keharusangit add -psetelah mengatur ulang. Apakah saya benar? Menggunakan git 1.7.9.5.