আপনার সূচিটি ব্যবহার করা উচিত। একটি মিশ্র পুনরায় সেট করার পরে (" গিট রিসেট হেড ^"), সূচীতে পরিবর্তনগুলির প্রথম সেট যুক্ত করুন, তারপরে তাদের প্রতিশ্রুতিবদ্ধ। তারপরে বাকী প্রতিশ্রুতিবদ্ধ।
কোনও ফাইলের সমস্ত পরিবর্তনকে সূচকে রেখে দিতে আপনি " গিট অ্যাড " ব্যবহার করতে পারেন । আপনি যদি কোনও ফাইলের প্রতিটি সংশোধনী মঞ্চ করতে না চান, তবে তাদের মধ্যে কয়েকটি, আপনি "গিট অ্যাড-পি" ব্যবহার করতে পারেন।
আসুন একটি উদাহরণ দেখুন। ধরা যাক আমার কাছে মাইফাইল নামে একটি ফাইল রয়েছে, এতে নিম্নলিখিত পাঠ্য রয়েছে:
something
something else
something again
আমি এটি আমার শেষ প্রতিশ্রুতিতে সংশোধন করেছি যাতে এখন এটির মতো দেখাচ্ছে:
1
something
something else
something again
2
এখন আমি স্থির করি যে আমি এটিকে দুটি ভাগে ভাগ করতে চাই এবং আমি চাই প্রথম লাইনের সন্নিবেশটি প্রথম প্রতিশ্রুতিতে থাকতে হবে এবং শেষ লাইনের সন্নিবেশটি দ্বিতীয় প্রতিশ্রুতিতে থাকতে হবে।
প্রথমে আমি হেডের পিতামাতার কাছে ফিরে যাই, তবে আমি ফাইল সিস্টেমে পরিবর্তনগুলি রাখতে চাই, তাই আমি যুক্তি ছাড়াই "গিট রিসেট" ব্যবহার করি (যা তথাকথিত "মিশ্র" রিসেটটি করবে):
$ git reset HEAD^
myfile: locally modified
$ cat myfile
1
something
something else
something again
2
আমি সূচিতে প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি যোগ করতে "গিট অ্যাড-পি" ব্যবহার করি (= আমি তাদের পর্যায়ক্রমে)। "গিট অ্যাড-পি" একটি ইন্টারেক্টিভ সরঞ্জাম যা আপনাকে সূচীতে ফাইলের কী পরিবর্তন করা উচিত তা সম্পর্কে জিজ্ঞাসা করে।
$ 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
তারপরে আমি এই প্রথম পরিবর্তনটি করছি:
$ git commit -m "Added first line"
[master cef3d4e] Added first line
1 files changed, 1 insertions(+), 0 deletions(-)
এখন আমি অন্যান্য সমস্ত পরিবর্তনগুলি করতে পারি (নাম্বার "2" শেষ লাইনে দেওয়া):
$ git commit -am "Added last line"
[master 5e284e6] Added last line
1 files changed, 1 insertions(+), 0 deletions(-)
আমাদের কী আছে তা দেখার জন্য লগটি পরীক্ষা করে দেখুন:
$ 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>
যা আপনিgit add -p
পুনরায় সেট করার পরে থাকা সমস্যাটি রক্ষা করতে ব্যবহার করতে পারেন । আমি কি সঠিক? গিট 1.7.9.5 ব্যবহার করে।