গিথুব প্রজেক্টে অবদান রাখছে, কীভাবে "মাস্টারের উপরে আমার টানার অনুরোধটি রিবেস করা যায়"


98

ঠিক আছে তাই আমি গিথুবের একটি প্রকল্পে অবদান রাখছি। গিথুবের প্রকল্পটি হ'ল upstream, গিথুবটিতে আমার কাঁটাযুক্ত রেপো originএবং localকম্পিউটারে আমার রেপো।

git checkout -b feature
# Working on feature
git commit -a -m 'only commit on feature'

তারপরে আমি একটি টানার অনুরোধ জমা দিই

git push origin master

টানার অনুরোধটি পর্যালোচনা করা হয়েছে এবং একটি সম্পর্কহীন পরিবর্তন করা দরকার। অন্য কেউ প্রতিশ্রুতিবদ্ধ এবং মার্জ করেupstream/master

এখন আমাকে upstreamরক্ষণাবেক্ষণকারী কর্তৃক "মাস্টারের উপরে আমার টান অনুরোধটি পুনরায় ফিরিয়ে আনতে " জিজ্ঞাসা করা হচ্ছে

এটি আমার গল্প (Lawোকান আইন এবং শৃঙ্খলা শব্দ)

আমি টানার অনুরোধে কোনও পরিবর্তন করি নি এবং শাখার বৈশিষ্ট্যে এটি এখনও একই প্রতিশ্রুতিবদ্ধ।

git checkout master
git fetch upstream
git checkout feature
git rebase master
=> "Current branch feature is up to date."
git push origin feature
=> "Everything up-to-date"

আমি বুঝতে পারছি না। এটি কীভাবে সম্ভব যখন আমি জানি যে upstream/masterআমি আমার টানার অনুরোধটি ধাক্কা দেওয়ার পরে কেউ প্রতিশ্রুতিবদ্ধ এবং একীভূত হয়েছে origin/feature?

কেউ কি আমাকে বলতে পারবেন যে এই পরিস্থিতিতে সঠিক পদ্ধতিটি কী হওয়া উচিত?

উত্তর:


110

আপনি কেবল উজানের রেপোতে একটি আনয়ন দেখান। এটি আসলে আপনার স্থানীয় কোনও শাখা আপডেট করে না। এটি কেবল আপনার জ্ঞান আপডেট করেupstream । আপনার নিশ্চিত upstream/masterকরা দরকার যে আপনার masterসাথে সম্পূর্ণভাবে একত্রীকরণ করা হয়েছে , যেমন একটির git pullসাথে রিবাইজিংয়ের আগে master, বা আরও সহজভাবে কেবল রিবাজে upstream/master

অর্থাৎ:

git checkout master
git pull upstream master
git checkout feature
git rebase master

বা

git checkout feature
git rebase upstream/master

হালনাগাদ:

আপনার স্থানীয় featureশাখা ঠিক করার পরে , আপনাকে পুনরায় originঅনুরোধটির আপডেটটি শেষ করতে পিছনে চাপ দিতে হবে । যেহেতু আপনি featureএকবার ইতিমধ্যে ঠেলাঠেলি করেছেন , আপনি কেবল pushআবার পারবেন না কারণ একটি রিবেস ইতিহাস পরিবর্তন করে এবং এটি আর দ্রুত অগ্রসর হয় না। সাধারণত, যখন একটি ধাক্কা "নন-ফাস্ট-ফরোয়ার্ড" দিয়ে ব্যর্থ হয়, আপনি একটি টান দিয়ে এটি সমাধান করতে চান, তবে একটি টান কেবল দুটি বিচ্ছিন্ন ইতিহাসকে একত্রিত করবে, যা আপনি চান তা অবশ্যই নয়। এর অর্থ হ'ল আপনার পুরানো (প্রাক রিবেস) featureশাখাটি নতুন (পোস্ট রিবেস) শাখার সাথে মিলিত হবে। আপনি পুরানোটির যে কোনও রেকর্ড ডাম্প করে নতুন শাখার রাজ্যের সাথে ওভাররাইট করতে চান । এর অর্থ আপনি এই চাপটি ঘটতে বাধ্য করতে চাইবেন, যদিও এটি কোনও দ্রুতগামী নয়, যদিও ব্যবহার করছেন । বিঃদ্রঃ:origin/featurefeaturegit push -f origin featureবিপজ্জনক , এবং আপনি এটির সাথে চুক্তিগুলি হারাতে পারেন। কেবলমাত্র এটি ব্যবহার করুন যদি আপনি নিশ্চিত হন যে আপনি এখানে করছেন ঠিক তেমনই আপনি জানেন যেখানে আপনি ইচ্ছাকৃতভাবে প্রি-রিবেস featureশাখায় পুরানো, অকেজো কমিটগুলি ফেলে দিতে চান ।


4
ঠিক আছে, আমি দেখছি, স্পষ্টতার জন্য ধন্যবাদ। আমি দেখতে পাচ্ছি যে আনার পরিবর্তে আমার টানা উচিত ছিল। এখন আমার আর একটি সমস্যা আছে, যখন আমি git push origin featureএকটি দ্রুত-ফরোয়ার্ড ত্রুটি পেয়েছি, ইত্যাদি ইত্যাদি ধাক্কা দিতে ব্যর্থ হয়েছি - গিট টান --rebase এই ত্রুটিটি সমাধান করে আমার বৈশিষ্ট্য শাখায় ঠেলে দেবে বা এটি রক্ষণাবেক্ষণকারী এবং অন্যদের জন্য সমস্যা সৃষ্টি করবে?
ফন্টনো

4
ধাক্কা coverাকতে আমার উত্তর আপডেট করেছে।
রায়ান স্টুয়ার্ট

আমার ক্ষেত্রে, আমি একটি রিমোট হিসাবে উজানের রেপো যুক্ত করেছি, তবে এটি থেকে আনতে ভুলে গিয়েছি। git fetch upstreamসর্বশেষ পরিবর্তনগুলি ডাউনলোড করেছেন, তারপরে অবশেষে git rebase upstream/developকাজ করলেন।
আলবার্তো চিউসোল

10

এখন আমাকে প্রবাহের রক্ষণাবেক্ষণকারী দ্বারা "মাস্টারের উপরে আমার টান অনুরোধটি পুনরায় ফিরিয়ে আনতে" জিজ্ঞাসা করা হচ্ছে

নোট করুন যে ২০১ 2016 সালের সেপ্টেম্বরের পর থেকে রক্ষণাবেক্ষণকারী নিজেই নিজেকে রিবেস ট্রিগার করতে পারে।

" রিবেস এবং মার্জ পুলের অনুরোধগুলি " দেখুন

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

দ্বন্দ্বের কারণে যদি কোনও রিবেস সম্পাদন করা যায় না, আমরা আপনাকে জানাব যাতে আপনি ম্যানুয়ালি তাদের প্রয়োজনীয় হিসাবে সমাধান করতে পারেন।

https://cloud.githubusercontent.com/assets/2195/18671961/a03fa9b6-7f35-11e6-8fa0-e16b2fede8ca.gif

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.