Dizini kullanmalısınız. Karışık bir sıfırlama yaptıktan sonra (" git reset HEAD ^"), ilk değişiklik kümesini dizine ekleyin ve sonra bunları uygulayın. Sonra gerisini hallet.
Bir dosyada yapılan tüm değişiklikleri dizine eklemek için " git add " kullanabilirsiniz. Bir dosyada yapılan her değişikliği, yalnızca bir kısmını düzenlemek istemiyorsanız, "git add -p" kullanabilirsiniz.
Bir örnek görelim. Diyelim ki, aşağıdaki metni içeren dosyam adlı bir dosyam var:
something
something else
something again
Son işlemimde değiştirdim, böylece şimdi şöyle görünüyor:
1
something
something else
something again
2
Şimdi ikiye bölmek istediğime karar veriyorum ve ilk satırın eklenmesinin ilk işlemde olmasını ve son satırın eklenmesinin ikinci işlemde olmasını istiyorum.
İlk önce HEAD'in ebeveynine geri dönüyorum, ancak değişiklikleri dosya sisteminde tutmak istiyorum, bu yüzden argüman olmadan "git reset" kullanıyorum ("karma" reset olarak adlandırılacak):
$ git reset HEAD^
myfile: locally modified
$ cat myfile
1
something
something else
something again
2
Şimdi "git add -p" dizinine işlemek istediğim değişiklikleri eklemek için kullanıyorum (= ben onları sahne). "git add -p", dizine eklemesi gereken dosyadaki değişiklikleri soran etkileşimli bir araçtır.
$ 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
Sonra bu ilk değişikliği taahhüt ederim:
$ git commit -m "Added first line"
[master cef3d4e] Added first line
1 files changed, 1 insertions(+), 0 deletions(-)
Şimdi diğer tüm değişiklikleri (yani son satıra koymak "2" rakamı) taahhüt edebilirim:
$ git commit -am "Added last line"
[master 5e284e6] Added last line
1 files changed, 1 insertions(+), 0 deletions(-)
Taahhütlerimizi görmek için günlüğü kontrol edelim:
$ 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>
kurtulmak için kullanabileceğiniz kullanışlı bir kısayol komutu vargit add -p
. Haklı mıyım? Git'i kullanarak 1.7.9.5.