গিট রিবেস --স্কিপ ঠিক কী করে?


107

আমি সবেমাত্র একটি করেছি git pull --rebase origin masterএবং সেখানে দ্বন্দ্ব ছিল।

প্রথমত, এই দ্বন্দ্বটি এমন একটি ফাইলে ছিল যা আমি স্পর্শ করি নি এবং প্রায় 10 টি প্রতিশ্রুতি দিয়েছিল। কেন এমন হয়?

আমি তখন দুর্ঘটনাক্রমে টাইপ করেছি git rebase --skipএবং এটি 'সেই প্যাচটি বাদ দিয়েছে'।

আমি কোন প্রতিশ্রুতি এড়িয়ে গেছি তা ভেবে আমি মাস্টার ব্রাঞ্চের একটি নতুন সংস্করণ পরীক্ষা করেছিলাম এবং যে শাখায় আমি রিবেস চালু করেছিলাম এবং নতুন মাস্টার শাখার মধ্যে পার্থক্য করেছি। ভিন্নমাত্রায় প্রদর্শিত কেবলমাত্র পরিবর্তনগুলি হ'ল সর্বশেষ প্রতিশ্রুতি, এবং লগটির দিকে তাকানো, যে প্যাচটি 'এড়িয়ে গিয়েছিল', প্রতিশ্রুতিবদ্ধ ইতিহাসে প্রদর্শিত হয়।

এখানে কি চলছে কেউ ব্যাখ্যা করতে পারেন?


11
আপনি কীভাবে দুর্ঘটনাক্রমে টাইপ করবেন git rebase --skip। ভুল হতে পারে? :)
মনোজাল্ড

3
হা! --Abort টাইপ করার অর্থ, তবে কোনও অজানা কারণে এটি --স্কিপ হিসাবে প্রকাশিত হয়েছিল। সত্যিই ভাবছিলাম না। :)
mrwooster

9
শেল ইতিহাস এটি ভাল (আপনি চান না এমন কিছু কার্যকর করতে আপনার)
ফ্লোরিয়ান ক্লেইন

উত্তর:


60

এটি যা বলে তা করে, এটি একটি অঙ্গীকারকে এড়িয়ে যায় । যদি আপনি rebase --abortএকই পুনর্বাসনের সময় পরবর্তী বিরোধে দৌড়ে থাকেন তবে এড়িয়ে যাওয়া কমিট অবশ্যই অবশ্যই ফিরে যাবে।

যদি আপনার পরিবর্তনটি ইতিমধ্যে প্রবাহিত থাকে তবে গিট আপনার প্রতিশ্রুতি প্রয়োগ করতে সক্ষম হবে না (তবে প্যাচটি হুবহু একই রকম হলে সাধারণত এটি স্বয়ংক্রিয়ভাবে এড়িয়ে যাওয়া উচিত)। আপনার নিজস্ব প্রতিশ্রুতি এড়ানো হবে, তবে পরিবর্তনটি এখনও বিদ্যমান হেডের মধ্যে উপস্থিত থাকবে, কারণ এটি ইতিমধ্যে প্রবাহে প্রয়োগ করা হয়েছিল।

আপনার সত্যিকারের নিশ্চিত হওয়া উচিত যে আপনি নিজের একটি গুরুত্বপূর্ণ পরিবর্তন মুছে ফেলেননি;) (পুনর্বাসনের আগে রাজ্যে ফিরে যেতে রিফ্লগটি ব্যবহার করুন)


4
তাহলে কেন লগতে কমিটস এখনও প্রদর্শিত হচ্ছে? এবং কেন অনুপস্থিত প্রতিশ্রুতিবদ্ধতা এখন আলাদা হয়?
mrwooster

3
হ্যাঁ, দ্বন্দ্বটি ইতিমধ্যে উজানের সমস্যার সমাধান হয়ে গেছে ... কোনও কারণে গিট রিবেসে পুরনো সংশ্লেষের বিরোধগুলি ডেকে আনে ... আমাকে বিভ্রান্ত করে এমন আরও একটি জিনিস? ... এর অর্থ কি এই বিরোধটি এড়িয়ে গেছে, তবে প্যাচটি কার্যকর করেছে যা সমাধান করেছে? দ্বন্দ্ব?
mrwooster

3
আপনি আপনার নিজের প্রতিশ্রুতি এড়িয়ে গেছেন, যা প্রতিরূপের প্রবাহের মতো একই পরিবর্তন ছিল। আপনি আপনার প্রতিশ্রুতি এড়িয়ে
গেছেন

1
@ মিমিটাল না, আমার মনে --skipহয় না যাওয়ার উপায়। এই প্রতিশ্রুতিবদ্ধ সমস্ত পরিবর্তন বাদ দিয়ে স্কিপ পুরোপুরি প্রতিশ্রুতি এড়িয়ে যাবে sk
নিটল

3
@mittal: মনে git rebaseযেমন অনুলিপি অন্য শাখা সম্মুখের এক শাখা থেকে হলেও ক্ষতি নেই। সুতরাং আপনি যখন কোন প্রতিশ্রুতি এড়িয়ে যান তখন কমিটের মূল বিষয়বস্তু এড়িয়ে যায় এবং প্যাচ প্রয়োগ করা হয় না (সুতরাং কোনও ফাইলের সমস্ত পরিবর্তন এটিকে আপনার লক্ষ্য শাখায় পরিণত করবে না)। সহজ উপায় হ'ল দুটি শাখা সহ একটি সাধারণ গিট সংগ্রহস্থল স্থাপন করা, git rebase --interactiveসেগুলির প্রত্যেকটির জন্য কয়েকটি কমিট এবং তারপরে পুনরায় চালু এবং একটি প্রতিশ্রুতি এড়িয়ে যাওয়ার চেষ্টা করুন (কোন pickskip
কমিটগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.