আমাকে আমার মাস্টার শাখায় একটি "মধ্যম" প্রতিশ্রুতি পপ আপ এবং ট্র্যাশ করা দরকার। আমি এটা কিভাবে করবো?


96

উদাহরণস্বরূপ, নিম্নলিখিত মাস্টার শাখায়, আমি কেবল প্রতিশ্রুতি af5c7bf16e6f04321f966b4231371b21475bc4da ট্র্যাশ করা দরকার যা পূর্ববর্তী রিবেসের কারণে দ্বিতীয় is

commit 60b413512e616997c8b929012cf9ca56bf5c9113
Author: Luca G. Soave <luca.soave@gmail.com>
Date:   Tue Apr 12 23:50:15 2011 +0200

    add generic config/initializers/omniauth.example.rb

commit af5c7bf16e6f04321f966b4231371b21475bc4da
Author: Luca G. Soave <luca.soave@gmail.com>
Date:   Fri Apr 22 00:15:50 2011 +0200

    show github user info if logged

commit e6523efada4d75084e81971c4dc2aec621d45530
Author: Luca G. Soave <luca.soave@gmail.com>
Date:   Fri Apr 22 17:20:48 2011 +0200

    add multiple .container at blueprint layout

commit 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22
Author: Luca G. Soave <luca.soave@gmail.com>
Date:   Thu Apr 21 19:55:57 2011 +0200

    add %h1 Fantastic Logo + .right for 'Sign in with Github'

আমার মনটেন দরকার

  • প্রথম প্রতিশ্রুতি 60b413512e616997c8b929012cf9ca56bf5c9113,
  • তৃতীয় প্রতিশ্রুতি e6523efada4d75084e81971c4dc2aec621d45530 এবং
  • শেষ প্রতিশ্রুতি 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22

"দূরে ফেলে" কেবল দ্বিতীয় প্রতিশ্রুতি af5c7bf16e6f04321f966b4231371b21475bc4da

আমি এটা কিভাবে করবো? অগ্রিম ধন্যবাদ লুকা

উত্তর:


103

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

শাখাটি অন্যান্য রেপগুলির সাথে ভাগ করা হলে রিভার্ট হ'ল সঠিক সমাধান। git revert af5c7bf16একটি নতুন প্রতিশ্রুতিবদ্ধ করবে যা সহজভাবে পরিবর্তিত হয়েছে যেগুলি AF5c7bf16 চালু করেছে। এইভাবে ইতিহাসটি নতুন করে লেখা হয় না, আপনি ভুলের একটি স্পষ্ট রেকর্ড বজায় রাখেন এবং অন্যান্য ভান্ডাররা এই চাপটি গ্রহণ করবে।

মুছে ফেলার একটি ভাল উপায়: git rebase -i <commit>^ এটি আপনি মুছে ফেলতে চান তার ঠিক আগে আপনাকে দায়বদ্ধতায় নিয়ে যায়। ইন্টারেক্টিভ এডিটর আপনাকে সেই প্রতিশ্রুতিতে ফিরে যাওয়ার সমস্ত কমিটের একটি তালিকা প্রদর্শন করবে। আপনি বাছাই, স্কোয়াশ ইত্যাদি করতে পারেন এই ক্ষেত্রে আপনি যে ফাইলটি মুছতে এবং সংরক্ষণ করতে চান তার জন্য লাইনটি সরিয়ে ফেলুন। রিবেস এর কাজ শেষ করবে।


4
যদি আমি রিবেসকে বেছে নেব তবে পুনঃবাসের সঠিক প্রতিশ্রুতি কি? আমার ঠিক দ্বিতীয়টি ড্রপ করা দরকার ...
লুকা জি সোভে

@ বিবিজে 3 মিপাদির উত্তর দেখুন।
প্রজওয়াল ধাওয়ালিয়া

34

যদি রিবেস একটি বিকল্প হয় তবে আপনি এটি পুনরায় চালু করতে এবং কেবল এটি ফেলে দিতে পারেন:

$ git rebase -i 414ceffc^

যদি রিবেস কোনও বিকল্প না হয়, আপনি কেবল এটি ফিরিয়ে দিতে পারেন:

$ git revert af5c7bf16

যদি আমি "গিট রিবেস 414 এসএফসি" এর জন্য পেয়েছি যা পুরনো প্রতিশ্রুতিবদ্ধ হয় তবে আমি কি তৃতীয় ই 6523 এবং প্রথম 60b41 আলগা করব?
লুকা জি সোভে

4
@ লুকা জি সোভে: আপনি কেবলমাত্র যদি git rebaseতা হ্রাস করতে বলেন ( rebaseইন্টারেক্টিভ মোডে চালিয়ে এবং এর প্রবেশ সরিয়ে) আপনি কেবলমাত্র একটি প্রতিশ্রুতি "হারান" ।
মিপাডি

ধন্যবাদ মিপাডি, আমি জে ক্যাটিনকে মূলত বিস্তৃত ব্যাখ্যার জন্য আমার ভোটটি প্রদান করছি এমনকি আপনি দুজন একই কথা বলেছিলেন ... আবারও ধন্যবাদ।
লুকা জি সোভে

30

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

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

চেরি পিকিং সম্পর্কিত এখানে তথ্য: চেরি-বাছাইয়ের অর্থ কি গিটের সাথে প্রতিশ্রুতিবদ্ধ?

কচ্ছপ গিটের সাথে এটি করার কিছু এখানে রয়েছে (যেমনটি আমি ঠিক করেছি)। এই ধরণের অপারেশনের জন্য একটি গি ইউটিলিটি ব্যবহার করা অবশ্যই সহজ! চেরি টরটোইজিট ব্যবহার করে নিন


6
এটি শীর্ষ উত্তর করা উচিত ছিল!
ম্যাডোগ্রে

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

আসলেই আসল প্রশ্নটি সম্বোধন করছে না। প্রস্তাবিত সমাধানটি কাজ করার সময় এটি অনেক বেশি সময় সাশ্রয়ী / বিশ্রী এবং আইএমও কোনও লাভ করে না। যদি শাখাটি ইতিমধ্যে ঠেলা (এবং বুনোতে ব্যবহৃত হয়) তবে রিভার্ট কৌশলটি সম্ভবত উত্তর probably যদি তা না হয় তবে রিবেস ইন্টারেক্টিভ এবং আপত্তিজনক প্রতিশ্রুতি সরিয়ে ফেলাটাই আমি ব্যবহার করব। যদি এটি চাপ দেওয়া হয়েছিল তবে আমরা জানি যে এটি কারও দ্বারা ব্যবহৃত হয়নি আপনি এখনও একটি চাপ চাপ দিয়ে একটি রিবেস নিয়ে পালাতে পারেন।
রাডউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.