পূর্বের প্রতিশ্রুতিতে ফাইল যুক্ত করবেন কীভাবে?


86

শেষ ঘন্টা বা তাই আমি ফাইল পরিবর্তন করেছি

A
ATest
B
BTest

আমার প্রতিশ্রুতিবদ্ধ বার্তাগুলি Aএকটি বর্ণনার সাথে প্রতিশ্রুতিবদ্ধ প্রকৃত পরিবর্তনের সাথে মিল রয়েছে তা নিশ্চিত করার জন্য । দুর্ভাগ্যক্রমে আমি ATestসেই প্রতিশ্রুতিতে অন্তর্ভুক্ত হই নি।

এদিকে, এখনও প্রতিশ্রুতিবদ্ধ না হয় Bএবং BTest

এই মুহুর্তে এগিয়ে যাওয়ার সর্বোত্তম উপায় কী? আমি হয় চাই:

  1. আমার বর্তমানে অসমাপ্ত ফাইলগুলিকে প্রভাবিত না করে পূর্বের প্রতিশ্রুতি ফিরিয়ে দিন?
  2. পূর্ববর্তী প্রতিশ্রুতিতে একই বর্ণনায় অন্য ফাইল যুক্ত করবেন?

আমার মনে হয় 2 করার সাধারণ উপায় হওয়া উচিত। এটি সম্পর্কে সমস্যা কি?
অ্যাড্রিয়ান শাম

উত্তর:


145

পূর্ববর্তী প্রতিশ্রুতিতে একটি নতুন ফাইল যুক্ত করতে:

$ git add new-file
$ git commit --amend

আপনি git commit --amend --no-editযদি প্রতিশ্রুতি বার্তা পরিবর্তন করতে না চান তবে আপনি ব্যবহার করতে পারেন ।


4
ধন্যবাদ. কৌতূহল আউট, যদি কমিট এর SHA1 পরিচিত এবং কমিট হয় নি 'শেষ' কিভাবে এটা সংশোধন করা সম্ভব হতো যে কমিট?
জেমস রাইতসেভ

6
@ জ্যাম আমি বলব যে এটি না করার জন্য সত্যই চেষ্টা করুন ;-) তবে যদি আপনাকে অবশ্যই এক উপায় (এটি সবচেয়ে ভাল কিনা তা নিশ্চিত নয়) হ'ল নতুন ফাইলটিকে তার নিজস্ব প্রতিশ্রুতি হিসাবে প্রতিশ্রুতিবদ্ধ করা এবং তারপরে git rebase -iকমিটগুলি পুনরায় সাজানো এবং মার্জ করার জন্য ব্যবহার করা অন্যান্য ফাইলের সাথে নতুন ফাইল কমিট করুন। এটি একটি পৃথক প্রশ্নের জন্য উপাদান হতে পারে।
ডেভিড জেড

4
যখন করছেন git rebase -iযেমন @DavidZ প্রস্তাব দেওয়া, সমস্ত আপনাকে যা করতে হবে সরাতে নতুন মাত্র এক নিচে আপনার সাথে একত্রিত করতে চান পর্যন্ত কমিট, এবং পরিবর্তন নতুন শব্দ কমিট হয় squashপরিবর্তেpick
এম এম

আমি যদি প্রচুর ফাইল মঞ্চস্থ করি তবে আমি কেবল সংশোধিত প্রতিশ্রুতিতে একটি যুক্ত করতে চাই?
dfrankow

মঞ্চযুক্ত সমস্ত ফাইল (যেমন, git reset) আনস্টেজ করুন , তারপরে যেটি আপনি যুক্ত করতে চান, প্রতিশ্রুতি সংশোধন করুন, তারপরে সমস্ত ফাইল পুনরায় মঞ্চ করুন।
উইলিয়াম পার্সেল :21

54

এখানে একটি মজাদার ফ্লোচার্ট 1 রয়েছে যা আশ্চর্যজনকভাবে কার্যকর: এটি মূল প্রশ্ন এবং সংশোধিত উভয়ের জন্যই সঠিক সুপারিশ দেয় "যদি এটি শেষ প্রতিশ্রুতি না হয় তবে কি?" প্রশ্ন।

গিট-সুন্দর ফ্লোচার্ট

1 থেকে নেওয়া http://justinhileman.info/article/git-pretty/


13

পূর্ববর্তী প্রতিশ্রুতিতে একটি ফাইল যুক্ত করুন

আপনি যে শাখায় কাজ করছেন তা যদি আপনি ইতিমধ্যে ঠেলে ফেলে থাকেন তবে দয়া করে প্রথমে ম্যান পেজগুলি দেখুন । বিশেষত, দয়া করে নোট করুন:

অন্যের উপর ভিত্তি করে কাজ করা শাখাটি (বা অন্য কোনও পুনর্লিখনের) পুনর্নির্মাণ করা একটি খারাপ ধারণা: এর প্রবাহের যে কোনও ব্যক্তি ম্যানুয়ালি তাদের ইতিহাস ঠিক করতে বাধ্য হয়।

তবে, আপনি যদি নিজের শাখাটি না ঠেকেন তবে বিপদ অঞ্চলে প্রবেশের জন্য প্রস্তুত ।

কমিট হ্যাশ সন্ধান করুন

প্রথমত, আপনি যে প্রতিশ্রুতি যুক্ত করতে চান তার প্রতিশ্রুতিবদ্ধ হ্যাশটি জানতে হবে। এটি দ্বারা প্রদর্শিত হয় git log। আপনি যেটি যোগ করতে চান তার পূর্বে আপনি আসলে প্রতিশ্রুতি নির্দিষ্ট করতে চান। (আপনি যে পরিবর্তনগুলি পরিবর্তন করতে চান তার স্লাইসের সূচনা সূচক হিসাবে এটি ভাবতে পারেন)) চালিয়ে যাওয়ার মাধ্যমে আপনার সঠিক প্রতিশ্রুতি রয়েছে তা নিশ্চিত করতে পারেন git log -1 HEAD~n। যেখানে 'এন' হ'ল একটি পূর্ণসংখ্যা যেখানে আপনি সঠিক প্রতিশ্রুতি না দেওয়া পর্যন্ত আপনি বৃদ্ধি করেন। বা আপনি গণনা করতে পারেন, আসলেই না।

তবে, যদি আপনি গণনা করেন তবে কমপক্ষে git log -1 HEAD~5আপনার নিজের গণনাটি যা ছিল বা তার সাথে সঠিক প্রতিশ্রুতি রয়েছে তা নিশ্চিত করুন । আপনি যে প্রতিশ্রুতিটি যুক্ত করতে চান তা দেখতে পাবেন না।

বিপদ , হি

এখন আপনি চালানোর জন্য প্রস্তুত git rebase -i HEAD~5। বা আপনার প্রতিশ্রুতি হ্যাশ যাই হোক না কেন। এটি আপনার প্রিয় পাঠ্য সম্পাদক এবং সম্পাদনা করার জন্য একটি ফাইল আনবে। ফাইলটি রিবেস কমান্ডের জন্য টোডো তালিকা। ফাইলে দেওয়া মন্তব্যগুলি আপনাকে কী বিকল্পগুলি বলে তা বলে দেয়। কেবল আপনি যে প্রতিশ্রুতিটি যুক্ত করতে চান তার সাথে রেখাটি সন্ধান করুন এবং সেই লাইনে 'বেছে নিন'টিকে' সম্পাদনা করুন 'এ পরিবর্তন করুন। এখন ফাইলটি সংরক্ষণ এবং বন্ধ করুন।

আপনি সম্পাদনা করতে বলেছিলেন এমন প্রতিশ্রুতি পৌঁছে গেলে রিবেস বন্ধ হয়ে যাবে। git statusএটি সরবরাহ করে এমন অতিরিক্ত তথ্য দেখতে একটি চালান । আপনার ফাইলগুলি প্রতিশ্রুতিবদ্ধ করতে git add .বা ফাইলের নামগুলি যা যা তা যোগ করতে স্টেজ করুন ।

তারপর, না git commit --amend। এটি আপনি সম্পাদনার জন্য যে প্রতিশ্রুতিটি বেছে নিয়েছিলেন তা সংশোধন করবে।

শেষ পর্যন্ত, চালান git rebase --continue

যদি সন্দেহ হয়, লিনাক্সে আপনি ডক্স আউটপুট দ্বারা man git-rebaseবা দ্বারা পড়ে আরও জানতে পারবেন git --help rebase


4
"কমিট হ্যাশটি সন্ধান করুন" সম্পর্কিত। গণনা শুরু করার দরকার নেই। কেবল git logআপনার প্রতিশ্রুতি সন্ধান এবং এর হ্যাশ অনুলিপি git rebase -i hash^করতে ব্যবহার করুন, তারপরে আপনার পূর্ববর্তী প্রতিশ্রুতি পুনর্বার ব্যবহার করুন।
ভিক্টর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.