গিট: কেবল পূর্ববর্তী কমিটির বার্তাগুলি সম্পাদনা করুন


12

অলস কারণে আমি ডিফল্ট বার্তাগুলির সাথে একগুচ্ছ প্রতিশ্রুতি রক্ষা করেছি এবং এখন এটি জটিল হয়ে উঠেছে, কারণ প্রতিটি প্রতিশ্রুতিতে আমি কী পরিবর্তন করেছি তা আমি সত্যিই জানি না।

আমি পূর্ববর্তী কমিটগুলির কেবলমাত্র বার্তাগুলি কীভাবে সম্পাদনা করব এবং (যদি সম্ভব হয়) প্রতিশ্রুতিবদ্ধ গাছ রাখি কীভাবে?


10
জনসাধারণের ইতিহাস পরিবর্তনের বিষয়ে সাবধান!
ডি বেন নোবল

2
আমি আশঙ্কা করছি যে উত্তরগুলি আপনাকে প্রায় মারাত্মক পর্যাপ্ত সতর্কতা দিচ্ছে না। এই হবে , যদি তারা এটি উপরে নতুন কাজ সংঘটিত করা সমস্ত moreso - বিপুল জগাখিচুড়ি যদি অন্য কেউ ইতিমধ্যে আপনার ইতিহাস টানা হয়েছে তৈরি করুন!
ভী

আমি এটিকে কারণ সহ ব্যবহার করব, আমার এখানে সহজ মামলা রয়েছে, আমি কেবল এই রেপো ব্যবহার করি।
Tuyen Pham

3
তথ্য: স্ট্যাক ওভারফ্লোতে এটি ইতিমধ্যে জিজ্ঞাসা করা হয়েছে (সম্ভবত বহুবার) ।
ব্যবহারকারী 202729

উত্তর:


20

ধারাবাহিক প্রতিশ্রুতিবদ্ধ প্রতিশ্রুতিবদ্ধ বার্তা সম্পাদনা করতে, আমি দৌড়ে

git rebase -i firstsha

firstshaআমি সম্পাদনা করতে চাই প্রথম প্রতিশ্রুতিবদ্ধ পিতামাতার প্রতিশ্রুতি জন্য সনাক্তকারী যেখানে । (আপনি এখানে যে কোনও বৈধ রেফারেন্স ব্যবহার করতে পারেন, তাই git rebase -i HEAD~4শেষ চারটি কমিটগুলি দেখায়))

যে সম্পাদকটি খোলে, আপনি যে সংশোধন করতে চান তার সমস্ত "বাছাই" এন্ট্রিগুলিকে "রিওয়ার্ড" এ পরিবর্তন করুন, তারপরে সম্পাদকটি বন্ধ করুন; এরপরে আপনাকে চয়ন করা সমস্ত কমিটের জন্য প্রতিশ্রুতিবদ্ধ বার্তা প্রবেশ করতে বলা হবে।

নোট যে এই হবে কমিট গাছ পরিবর্তন করেন, কারণ করে এর হ্যাশ পরিবর্তন করতে হবে। আপনাকে আপনার নতুন গাছটিকে জোর করে ধাক্কা দিতে হবে বা একটি নতুন শাখায় ঠেলে দিতে হবে। এটি মার্জগুলিকেও বিশৃঙ্খলা করবে, সুতরাং সংযুক্তির সম্পাদনা সম্পাদনা করা এড়াতে হবে।

শুধুমাত্র শেষ প্রতিশ্রুতি দ্রুত সম্পাদনা করতে, চালান

git commit --amend

(তবে যদিও প্রতিশ্রুতিবদ্ধতার জন্য মঞ্চস্থ কিছু থেকে সাবধান থাকুন)।


এটি কীভাবে প্রতিশ্রুতিবদ্ধ গাছকে প্রভাবিত করবে, এটি কি কমিট ট্রিতে একটি মধ্যবর্তী উল্লম্ব রেখা তৈরি করবে? আমার কাছে এখন কেবল একটি উল্লম্ব লাইন কমিট ট্রি ছিল এবং 100 এরও বেশি বার্তা পরিবর্তন করা দরকার।
Tuyen Pham

3
এটি আপনার প্রতিশ্রুতিযুক্ত গাছে একটি নতুন "লাইন" তৈরি করবে না, এটি সমস্ত চুক্তি পরিবর্তন করবে। আপনার ইতিহাস যদি বর্তমানে রৈখিক হয় তবে তা লিনিয়ার থাকবে।
স্টিফেন কিট

এটা নির্ভর করে. আপনি কি এটি নিজের দ্বারা ব্যবহার করছেন এবং কোনও সার্ভারে চাপ দিচ্ছেন না? তাহলে না, কেবল একটি "লাইন"। তবে অন্যথায় দুটি থাকতে পারে এবং প্রথম দুটি উত্তরগুলির উপর ভিত্তি করে আমরা আপনাকে পুরানো "লাইন" থেকে মুক্তি দিতে সহায়তা করতে পারি।
ক্যাপ্টেন ম্যান

1
মার্জগুলি পরিচালনা করার জন্য রিবেসের একটি পতাকা রয়েছে (আমার মনে হয় এটি preserve-merges)
ডি বেন নোবল

6

আপনি যা খুঁজছেন তা হ'ল git rebase

আপনি যদি কেবল পূর্ববর্তী git commitবার্তাটি পরিবর্তন করতে চান তবে আপনাকে কেবল নিম্নলিখিতটি ব্যবহার করতে হবে:

git commit --amend

আপনি পূর্বের প্রতিশ্রুতিতে পরিবর্তনগুলি চান এবং সম্পাদনাগুলি সংরক্ষণ করুন।

তবে আপনার যদি পুরানো কমিটগুলি পরিবর্তন করতে হয় তবে আপনার ব্যবহারের প্রয়োজন rebase

git rebase -i HEAD~N 

যেখানে এন আপনি ফিরে যেতে চান এমন কমিটের সংখ্যার সমতুল্য, যেমন 2 বা 12 বা 6, ইত্যাদি ইত্যাদি etc.

এখানে আপনার কমিটগুলি সহ একটি পাঠ্য সম্পাদক পাওয়া উচিত। বিকল্প থেকে পরিবর্তন pickকরতে rewordবার্তা পরিবর্তন।

একবার আপনি যে সমস্ত কমিটগুলি পরিবর্তন করতে চান তা সনাক্ত করে এবং যথাযথভাবে তাদের বিকল্পগুলি পরিবর্তন করে, সম্পাদকটি সংরক্ষণ এবং বন্ধ করে দিন। তারপরে প্রতিটি প্রতিশ্রুতি বার্তায় পরিবর্তন করুন। আপনি সন্তুষ্ট হয়ে গেলে আপনি চালাতে পারবেন:

git push --force

এবং আপনার গিটের ইতিহাসটি বিভিন্ন হ্যাশ মানগুলির সাথে বজায় রাখা উচিত ছিল কারণ আপনি আপনার প্রয়োজনীয় পরিবর্তনগুলি করেছেন। এখানে কিছু অতিরিক্ত লিঙ্ক আপনার চেক আউট করা উচিত:

.6..6 গিট সরঞ্জাম - ইতিহাসের পুনর্লিখন
গিটহাব সহায়তা - একটি প্রতিশ্রুতি বার্তা
স্ট্যাকওভারফ্লো পরিবর্তন করা - পুরানো প্রতিশ্রুতি বার্তাগুলি পরিবর্তন করার প্রশ্ন


যদি আপনি "শব্দবাজি" করেন commit --amendতবে আপনাকে " " করার দরকার নেই , যদি না আপনি কোনওভাবে প্রতিশ্রুতিবদ্ধ প্রক্রিয়াটিকে গোলমাল করেন।
স্টিফেন কিট

ধন্যবাদ, এখানে পদক্ষেপ আমি তোমার পদ থেকে আমার বোঝার যেমন চেষ্টা করবো: 1. না git rebase -i firstshaযে firstshaহয় বাবা-মার হ্যাশ কমিট এর কমিট আমি এই বার্তা পরিবর্তন করতে চান সেটি সম্পাদক পরিবর্তন তারপর, pickথেকে reword, enterনতুন বার্তা, তারপর ইস্যু git rebase --continueএবং করব git push --force?
Tuyen Pham

@ স্টেফেনকিট, আমি আপনার উত্তরটি কেবলমাত্র খেয়াল করেছি, আপনি আপনার জমা দেওয়ার সাথে সাথে আমি আমার তৈরি করছিলাম। আমি আপনার পরামর্শ অনুসরণ করব এবং সেগুলি সম্পাদনা করতে চাই। যদি এটি আরও উপযুক্ত হয় তবে আমি আমার লিঙ্কগুলিকে আপনার লিঙ্কগুলি যুক্ত করে আপনার সাথে একত্রীকরণ করতে পারি যদি আপনি মনে করেন যে একাধিক অনুরূপ উত্তর থাকার চেয়ে এই প্রশ্নের পক্ষে ভাল।
কেমোটেপ

@ টুয়েনফ্যাম আপনাকে কেবল এনটিই করাতে হবে আপনার git rebase -i HEAD~Nফিরে যাওয়ার ইচ্ছার সংখ্যার সংখ্যা হিসাবে। প্রত্যেক বিকল্প যা আপনি সম্পাদনা থেকে বার্তা চান কমিট পরিবর্তন pickকরতে reword, এই ফাইলটি সংরক্ষণ, ফাইল কমিট এবং যারা সংরক্ষণ যারা প্রতিটি পরিবর্তন করতে। একবার আপনি আত্মবিশ্বাসী হয়ে উঠলে আপনার কেবলমাত্র প্রয়োজন git push --force [Name of git branch you are were working on]। আপনি সর্বদা ফিরে যেতে পারেন এবং এটি আবার করতে বা পর্যায়ক্রমে এটি করতে পারেন।
কেমোটেপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.