এটি পরিচালনা করার দুটি উপায় রয়েছে। কোনটি সহজ তা আপনার পরিস্থিতির উপর নির্ভর করে
রিসেট
আপনি যে প্রতিশ্রুতি থেকে মুক্তি পেতে চান তা হ'ল সর্বশেষ প্রতিশ্রুতি, এবং আপনি কেবলমাত্র ব্যবহার করতে পারেন এমন কোনও অতিরিক্ত কাজ করেন নি git-reset
git reset HEAD^
আপনার শাখাটি আপনার বর্তমান হেডের ঠিক আগে প্রতিশ্রুতিতে ফিরে আসে। তবে এটি আসলে আপনার কার্যনির্বাহী গাছের ফাইলগুলিকে পরিবর্তন করে না। ফলস্বরূপ, সেই প্রতিশ্রুতিতে থাকা পরিবর্তনগুলি পরিবর্তিত হিসাবে প্রদর্শিত হয় - এটি একটি 'আপত্তিজনক' আদেশের মতো। আসলে, আমার কেবল একটি করণীয় আছে।
git config --global alias.uncommit 'reset HEAD^'
তারপরে আপনি git uncommit
ভবিষ্যতে একটি প্রতিশ্রুতি ব্যাক আপ করতে ব্যবহার করতে পারেন ।
স্কোয়াশ করা
প্রতিশ্রুতি স্কোয়াশ করার অর্থ দুটি বা আরও কমিটিকে এক সাথে সংযুক্ত করা। আমি এটি প্রায়শই করি। আপনার ক্ষেত্রে আপনার অর্ধেক বৈশিষ্ট্যটি কমিট হয়েছে, এবং তারপরে আপনি এটি শেষ করে যথাযথ, প্রতিশ্রুতিবদ্ধ বার্তা দিয়ে আবার প্রতিশ্রুতিবদ্ধ করবেন।
git rebase -i <ref>
আমি উপরে বলেছি কারণ আমি এটি পরিষ্কার করতে চাই যে এটি কোনও সংখ্যক কমিট হতে পারে। git log
আপনি যে প্রতিশ্রুতি থেকে মুক্তি পেতে চান তা চালান এবং এটির SHA1 অনুলিপি করুন এবং এটির জায়গায় ব্যবহার করুন <ref>
। গিট আপনাকে ইন্টারেক্টিভ রিবেস মোডে নিয়ে যাবে। এটি আপনার বর্তমান অবস্থা এবং আপনি যা কিছু স্থাপন করেছেন তার মধ্যে সমস্ত চুক্তি প্রদর্শন করবে <ref>
। সুতরাং যদি <ref>
10 টি পূর্বে কমিট হয় তবে এটি আপনাকে 10 টি কমিট দেখাবে।
প্রতিটি প্রতিশ্রুতি সামনে, এটি শব্দ থাকবে pick
। কমিট আপনি পরিত্রাণ পেতে এবং থেকে এটি পরিবর্তন করতে চান খুঁজুন pick
করতে fixup
বা squash
। ব্যবহার fixup
কেবল পরিত্যাগ করে করে বার্তা এবং তালিকায় তার অবিলম্বে পূর্বসুরী মধ্যে পরিবর্তনগুলি সংমিশ্রণে খেলা হয়। squash
শব্দ একই জিনিস আছে, কিন্তু আপনি সদ্য মিলিত কমিট বার্তা কমিট সম্পাদনা করতে দেয়।
দ্রষ্টব্য যে কমিটগুলি সম্পাদকের বাইরে বেরোনোর পরে তারা তালিকায় প্রদর্শিত ক্রমে পুনরায় প্রতিশ্রুতিবদ্ধ হবে। সুতরাং আপনি যদি অস্থায়ী প্রতিশ্রুতিবদ্ধ হন, তবে একই শাখায় অন্য কাজ করেছেন, এবং পরবর্তী প্রতিশ্রুতিতে বৈশিষ্ট্যটি সম্পূর্ণ করেছেন, তারপরে পুনর্বার ব্যবহারের মাধ্যমে আপনাকে কমিটগুলি পুনরায় বাছাই করতে এবং সেগুলি স্কোয়াশ করার অনুমতি দেবে।
সতর্কতা:
রিবেসিং ইতিহাস পরিবর্তন করে - আপনি ইতিমধ্যে অন্যান্য বিকাশকারীদের সাথে ভাগ করে নেওয়া কোনও কমিটের সাথে এটি করবেন না।
Stashing
ভবিষ্যতে, এই সমস্যাটি এড়াতে git stash
অস্থায়ীভাবে অনির্দিষ্ট কাজ সংরক্ষণ করার জন্য বিবেচনা করুন ।
git stash save 'some message'
এটি আপনার বর্তমান পরিবর্তনগুলি আপনার স্ট্যাশ তালিকার পাশে রেখে সংরক্ষণ করবে। উপরে স্ট্যাশ কমান্ডের সর্বাধিক স্পষ্ট সংস্করণ রয়েছে, আপনি কী স্ট্যাশ করছেন তা বর্ণনা করার জন্য কোনও মন্তব্যের অনুমতি দেয়। আপনি কেবল চালাতে পারেন এবং git stash
অন্য কিছু নয়, তবে কোনও বার্তা সংরক্ষণ করা হবে না।
আপনি আপনার স্ট্যাশ তালিকাটি এর সাথে ব্রাউজ করতে পারেন ...
git stash list
এটি আপনাকে আপনার সমস্ত স্ট্যাশাগুলি, কী শাখায় সেগুলি করা হয়েছিল, এবং বার্তাটি এবং প্রতিটি লাইনের শুরুতে এবং সেই স্ট্যাশটির জন্য সনাক্তকারী যা দেখায় stash@{#}
যেখানে স্ট্যাশগুলির অ্যারেতে এটির অবস্থান #।
কোনও স্ট্যাশ পুনরুদ্ধার করতে (যা কোনও শাখায় করা যেতে পারে, স্ট্যাশ যেখানে মূলত তৈরি হয়েছিল তা নির্বিশেষে) আপনি কেবল চালান ...
git stash apply stash@{#}
আবার, স্ট্যাশগুলির অ্যারেতে # অবস্থান রয়েছে। আপনি যে স্ট্যাশ পুনরুদ্ধার করতে চান তা যদি সেই 0
অবস্থানে থাকে - তবে এটি যদি সর্বাধিক সাম্প্রতিক স্ট্যাশ থাকে। তারপর আপনি শুধু লুকোবার জায়গা অবস্থান নির্দিষ্ট না করে কমান্ড চালাতে পারেন, Git অনুমান করবে গত এক বলতে চাইছেন: git stash apply
।
সুতরাং, উদাহরণস্বরূপ, যদি আমি নিজেকে ভুল শাখায় কাজ করতে দেখি - আমি নিম্নলিখিত কমান্ডের ক্রমটি চালাতে পারি।
git stash
git checkout <correct_branch>
git stash apply
আপনার ক্ষেত্রে আপনি আরও কিছু শাখাগুলি ঘুরেছেন তবে একই ধারণাটি এখনও প্রযোজ্য।
আশাকরি এটা সাহায্য করবে.
git stash