সারসংক্ষেপ
ত্রুটি বার্তা
পূর্ববর্তী প্রতিশ্রুতি ব্যতীত 'স্কোয়াশ' করা যায় না
এর অর্থ আপনি সম্ভবত "নীচে স্কোয়াশ" করার চেষ্টা করেছিলেন। ইন্টারভিউটিভ রিবেস টুডো তালিকায় দেখা হিসাবে গিট সর্বদা একটি পুরানো কমিট বা "wardর্ধ্বমুখী" হিসাবে একটি নতুন কমিটকে স্কোয়াশ করে, এটি পূর্ববর্তী লাইনে প্রতিশ্রুতিবদ্ধ। আপনার টুডো তালিকার একেবারে প্রথম লাইনে কমান্ড পরিবর্তন করা squash
সর্বদা এই ত্রুটিটি উত্পন্ন করবে কারণ স্কোয়াশ করার জন্য প্রথম প্রতিশ্রুতিবদ্ধতার কিছুই নেই।
ঠিক করা
প্রথমে আপনি যেখানে শুরু করেছিলেন সেখানে ফিরে যান
$ git rebase --abort
আপনার ইতিহাস বলে
$ git log --pretty=oneline
a931ac7c808e2471b22b5bd20f0cad046b1c5d0d c
b76d157d507e819d7511132bdb5a80dd421d854f b
df239176e1a2ffac927d8b496ea00d5488481db5 a
যে, একটি প্রথম প্রতিশ্রুতি ছিল, তারপর খ, এবং অবশেষে সি। সি প্রতিশ্রুতিবদ্ধ হওয়ার পরে আমরা বি এবং সি একসাথে স্কোয়াশ করার সিদ্ধান্ত নিই:
(দ্রষ্টব্য: বেশিরভাগ প্ল্যাটফর্মে ডিফল্টরূপে git log
পাইপগুলিতে পাইপগুলি less
চালিয়ে যায় the পেজারটি ছেড়ে দিতে এবং আপনার কমান্ড প্রম্পটে ফিরে আসতে, q
কী টিপুন ))
দৌড় git rebase --interactive HEAD~2
দিয়ে আপনাকে একটি সম্পাদক দেয় editor
pick b76d157 b
pick a931ac7 c
# Rebase df23917..a931ac7 onto df23917
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
(লক্ষ্য করুন যে এই টুডো তালিকাটি ফলাফলের তুলনায় বিপরীত ক্রমে রয়েছে git log
))
বি এর পরিবর্তিত pick
হওয়ার squash
ফলে আপনি যে ত্রুটি দেখেছেন তার ফলস্বরূপ, তবে পরিবর্তে আপনি সি-তে স্ক (স্ক্র্যাশ করে পুরানো বা "উপরের দিকে স্কোয়াশিং") এর মাধ্যমে টুডো তালিকা পরিবর্তন করে
pick b76d157 b
squash a931ac7 c
এবং আপনার সম্পাদককে সংরক্ষণ-ছেড়ে দিলে আপনি অন্য সম্পাদক পাবেন যার বিষয়বস্তু
# This is a combination of 2 commits.
# The first commit's message is:
b
# This is the 2nd commit message:
c
আপনি সংরক্ষণ এবং প্রস্থান করার সময়, সম্পাদিত ফাইলের বিষয়বস্তুগুলি নতুন সম্মিলিত প্রতিশ্রুতিবদ্ধতার বার্তা হয়ে যায়:
$ git log --pretty=oneline
18fd73d3ce748f2a58d1b566c03dd9dafe0b6b4f b and c
df239176e1a2ffac927d8b496ea00d5488481db5 a
পুনর্লিখনের ইতিহাস সম্পর্কে নোট
ইন্টারেক্টিভ রিবেস ইতিহাস পুনর্লিখন করে। পুরানো ইতিহাস ধারণ করে এমন কোনও রিমোটে ঠেলে দেওয়ার চেষ্টা ব্যর্থ হবে কারণ এটি কোনও দ্রুতগামী নয়।
আপনি যে শাখাটি প্রত্যাখ্যান করেছেন তা যদি কোনও বিষয় বা বৈশিষ্ট্য শাখা হয় যেখানে আপনি নিজেরাই কাজ করছেন তবে কোনও বড় বিষয় নয়। অন্য পুস্তকটিতে ধাক্কা দেওয়ার জন্য --force
বিকল্পটির প্রয়োজন হবে , অথবা বিকল্পভাবে আপনি প্রথম পুরানো শাখাটি মুছতে এবং তারপরে প্রত্যাবর্তিত সংস্করণটি ধাক্কা দেওয়ার জন্য দূরবর্তী সংগ্রহস্থলের অনুমতিগুলির উপর নির্ভর করে আপনি সক্ষম হতে পারেন। এই আদেশগুলির উদাহরণগুলি যা সম্ভাব্যভাবে কাজকে ধ্বংস করবে এই উত্তরগুলির ক্ষেত্রের বাইরে।
ইতিমধ্যে প্রকাশিত ইতিহাসে এমন একটি শাখায় পুনর্লিখন করা যেখানে আপনি খুব ভাল কারণ ব্যতীত অন্য লোকের সাথে কাজ করছেন যেমন পাসওয়ার্ড ফাঁস করা বা অন্যান্য সংবেদনশীল বিবরণী আপনার সহযোগীদের উপর কাজ করে এবং এটি অসামাজিক এবং অন্যান্য বিকাশকারীদের বিরক্ত করবে। মধ্যে "উদ্ধার একটি আপস্ট্রিম রি-বেসের ফলে থেকে" বিভাগে git rebase
ডকুমেন্টেশন যোগ জোর দিয়ে ব্যাখ্যা করে।
অন্যের উপর ভিত্তি করে কাজ করা শাখাটিকে (বা পুনর্লিখনের অন্য কোনও রূপ) রিবেসিং করা একটি খারাপ ধারণা: এর প্রবাহের যে কোনও ব্যক্তি ম্যানুয়ালি তাদের ইতিহাস ঠিক করতে বাধ্য হয়। এই বিভাগটি নীচে স্ট্রিমের দৃষ্টিকোণ থেকে কীভাবে ঠিক করবেন তা ব্যাখ্যা করে। প্রকৃত স্থিরতাটি হ'ল প্রথমে উজানের প্রবাহটি এড়াতে হবে। ...