ভুলগুলি সাধারণ, আমরা সবাই সেগুলি করি। এজন্য তারা পেন্সিলের উপর ইরেজার রাখে। এবং এটি গিটের মতো সরঞ্জামগুলির সাথে আলাদা নয়। যদিও কিছু পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনা কঠিন হতে পারে, সাধারণত একটি উপায় আছে।
আপনি যদি একটি বিদ্যমান কমিট বার্তা পরিবর্তন করতে চান তাহলে কি হবে? ভাগ্যক্রমে এটি Git-এ করা সহজ, তবে পদ্ধতিটি কিছু কারণের উপর নির্ভর করে কিছুটা পরিবর্তিত হতে পারে।
শেষ কমিট ঠিক করুন, এখনও রিমোটে ঠেলে দেওয়া হয়নি
এটি সবচেয়ে সহজ কেস যেহেতু একটি দূরবর্তী সংগ্রহস্থল পরিবর্তন করার কোন প্রয়োজন নেই, আপনাকে শুধু আপনার নিজের পরিবর্তন করতে হবে। এই ক্ষেত্রে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:
$ git commit --amend
এই কমান্ডটি চালানোর ফলে একটি সম্পাদক খুলবে যেখানে আপনি পরিবর্তন করতে পারবেন গত বার্তা কমিট একবার আপনি সম্পন্ন হয়ে গেলে এবং সম্পাদকটিকে সংরক্ষণ/বন্ধ করলে, প্রতিশ্রুতি বার্তাটি পরিবর্তন করা হবে।
ব্যক্তিগতভাবে, আমি কমান্ড লাইনে বেশিরভাগ জিনিস করতে পছন্দ করি, যা আপনি উপরের কমান্ডে একটি যুক্তি এবং বার্তা যোগ করে করতে পারেন:
$ git commit --amend -m "Added a new file"
এইভাবে এটি করলে সম্পাদকটি খুলবে না, তবে পরিবর্তে এটি অবিলম্বে প্রতিশ্রুতি বার্তাটি সংশোধন করবে।
শেষ কমিট ঠিক করুন, রিমোটে ঠেলে
এটি আরেকটি সাধারণ কেস, এবং এটি ঠিক করা একটু বেশি কঠিন, শুধুমাত্র আমাদের নিজস্ব সংগ্রহস্থল পরিবর্তন করতে হবে তাই নয়, আমাদের দূরবর্তী সংগ্রহস্থলটিও সংশোধন করতে হবে, যা আপনার স্থানীয় শাখার চেয়ে আরও এগিয়ে হতে পারে।
প্রথম ধাপ হল শেষ কমিট সংশোধন করা, ঠিক যেমন আমরা পূর্ববর্তী বিভাগে করেছি:
$ git commit --amend -m "Added a new file"
তারপরে, আপনাকে এই পরিবর্তনগুলিকে দূরবর্তী সংগ্রহস্থলে পুশ করতে হবে। যাইহোক, এই ব্যবহার করা আবশ্যক --force
পতাকা।
$ git push <remote> <branch> --force
আমাদের নিজস্ব স্থানীয় রাজ্যের সাথে দূরবর্তী সংগ্রহস্থলটি ওভাররাইট করার জন্য আমাদের এটি করতে হবে।
ধাক্কা জোর করে সচেতন থাকুন, আপনিও করবেন হারান স্থানীয় শাখায় যে কোনো কমিট যা আপনার স্থানীয় শাখায় ইতিমধ্যে নেই। সাবধানতার সাথে এগিয়ে যান!
সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!
আপনি যদি যথেষ্ট দ্রুত ভুল ধরতে পারেন, তাহলে পরিবর্তন করতে সমস্যা হবে না। অন্যথায়, আপনি যে প্রতিশ্রুতি বার্তাটি পরিবর্তন করতে চান তার পরে করা কোনো পরিবর্তন হারানো এড়াতে আপনাকে অন্য সমাধান খুঁজতে হতে পারে।
ইন্টারেক্টিভ রিবেস ব্যবহার করুন
আরেকটি বিকল্প, যা বর্ণিত পূর্ববর্তী সমাধানগুলির তুলনায় আরো নমনীয়, একটি ইন্টারেক্টিভ রিবেস ব্যবহার করা। এটি করার ফলে আপনি শেষ এন কমিটগুলি পরিদর্শন করতে পারবেন এবং সেগুলিতে পরিবর্তন করতে পারবেন, যার মধ্যে পিকিং, স্কোয়াশিং ইত্যাদি রয়েছে৷
রিবেস শুরু করতে, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
$ git rebase -i HEAD~n
এখানে, n
আপনি পরিদর্শন এবং সম্পাদনা করতে চান কমিট সংখ্যা. তারপরে আপনি এই অনুরূপ প্রতিশ্রুতিগুলির একটি তালিকা দেখতে পাবেন:
$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file
আপনি দেখতে পাচ্ছেন যে সমস্ত শেষ এন প্রতিশ্রুতি তালিকাভুক্ত করা হয়েছে, এবং আপনি প্রয়োজন অনুসারে তাদের বার্তাগুলি পরিবর্তন করতে পারেন।