দূরবর্তী মাস্টারের সাথে কীভাবে স্থানীয় শাখাটি রিবেস করবেন


929

আমি দূরবর্তী সংগ্রহস্থল থেকে একটি মাস্টার শাখা থেকে একটি ক্লোন প্রকল্প আছে remote_repo। আমি একটি নতুন শাখা তৈরি করি এবং আমি সেই শাখায় প্রতিশ্রুতিবদ্ধ। অন্যান্য প্রোগ্রামাররা remote_repoমাস্টার শাখায় ঠেলাঠেলি করে ।

আমার এখন আমার শাখা আরবিকে remote_repoমাস্টারের উপর রিবেস করা দরকার ।

এই কিভাবে করবেন? একটি টার্মিনাল টাইপ করতে কি কমান্ড?


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

8
@ গ্লেনলাউনেন্স আমি মনে করি একটি মন্তব্য যুক্ত করার চেয়ে মূল প্রশ্নটি সম্পাদনা করা ভাল। এটি স্ট্যাকওভারফ্লো দ্বারাও উত্সাহিত হয়। তদ্ব্যতীত, আরবিতে মাস্টারকে রেবাইজ করা সম্ভবত কোনওভাবেই ব্যর্থ হবে, কারণ আরবি মাস্টারের ইতিহাসের উপর নির্ভর করে।
ড্যানিয়েল কুলম্যান

উত্তর:


1241

প্রথমে প্রবাহের সংগ্রহস্থল থেকে নতুন মাস্টার আনুন, তারপরে আপনার কার্য শাখাটি পুনরায় চালু করুন:

git fetch origin            # Updates origin/master
git rebase origin/master    # Rebases current branch onto origin/master

আপডেট : দয়া করে একই কাজ করার জন্য আরও সংক্ষিপ্ত উপায়ে পল ড্রাগের উত্তর দেখুন - সাম্প্রতিক গিট সংস্করণগুলি উপরের দুটি কমান্ডের সমতুল্য করার সহজতর উপায় সরবরাহ করে।


16
এটিই কেবলমাত্র উত্তর যা আসলে যা বলা হয়েছিল তা করে
kayaker243

5
@ কায়কার ২৪৩ না, এটি পল ড্রাগস জবাবের মতো তবে দীর্ঘ আকারে, আমার ধারণা।
এরিক

7
@ এরিক দ্রষ্টব্য যে পল ড্রাগার তার উত্তর কায়িকার 243 এর মন্তব্যের (এবং এই উত্তরের প্রায় দুই বছর পরে) প্রায় অর্ধ বছর পরে লিখেছিলেন wrote
ফ্রিরিচ রাবাব

3
আমি নিম্নলিখিতটি পাই: Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.মনে হয় অন্যটির মতো git pullদরকার। এটি কি সঠিক বা আমি এখানে কিছু মিস করছি?
Dror

2
@RGC না, git rebase masterদ্বিতীয় কমান্ড (হিসাবে একই কাজ করা হবে না git rebase origin/masterদেখাও) masterএবং origin/masterভাল বিভিন্ন করে নির্দেশ করতে পারে (বিশেষ করে দেওয়া যে প্রথম কমান্ড ছিল git fetch origin, যা সংশোধন করতে পারে origin/master)।
ফ্রেরিচ রাবাবে

809
git pull --rebase origin master
# where --rebase[=(false|true|merges|preserve|interactive)]

19
(ফ্রেরিচের উত্তরের সমতুল্য)
পল

12
এটি ফ্রেরিচের উত্তরের চেয়ে কিছুটা আলাদা না, কারণ এটি উত্স মাস্টার থেকে স্থানীয় মাস্টারে পরিবর্তন আনবে, যেখানে ফ্রেরিচের উত্তর স্থানীয় মাস্টারকে অদৃশ্য করে ফেলেছে? (টান বনাম আনতে)
জিমি হুচ

7
না, ফ্রেরিচের উত্তরে, রিবেসটি স্থানীয় মাস্টারকে সংশোধন করে। একটি টান --rebase আনয়ন হিসাবে একই জিনিস একটি
রিবাস পরে

9
অবগতির জন্য আপনার সাথে ইন্টারেক্টিভ rebases কি করতে পারেনgit pull --rebase=interactive origin master
emmby

14
@ অ্যাডোমিনেম - আমি গিট- পুলের ডকুমেন্টেশনগুলি পরীক্ষা করে দেখেছি এবং স্থানীয় মাস্টারটি সংশোধিত হয়েছে এই দাবি সমর্থন করে এমন কিছুই আমি দেখতে পাচ্ছি না। যদি আমি নামের একটি শাখায় থাকি devএবং চালনা করি তবে git pull --rebase origin masterকেবল শাখা devপরিবর্তন করা হবে, নয় master--rebaseপতাকা ডকুমেন্টেশন যে এটা করার জন্য প্রচেষ্টার সংখ্যা rebase the current branch on top of the upstream branch after fetchingএবং স্থানীয় ট্র্যাকিং শাখা পরিবর্তন সম্পর্কে কিছুই।
মনিকা 2331977

223

আপনার শাখায় পরিবর্তন করার পরে, masterরেপো থেকে সর্বশেষ পরিবর্তনগুলি পেতে এটি চেকআউট করে টানুন:

git checkout master
git pull origin master

তারপরে আপনার শাখাটি চেকআউট করুন এবং আপনার পরিবর্তনগুলি এতে পুনরায় চালু করুন master:

git checkout RB
git rebase master

... বা এক লাইনে শেষ দুটি কমান্ড:

git rebase master RB

পিছনে ঠেলে দেওয়ার চেষ্টা করার সময় origin/RB, আপনি সম্ভবত একটি ত্রুটি পাবেন; আপনি যদি একমাত্র কাজ করছেন তবে আপনি RBচাপ দিন:

git push --force origin RB

... বা নীচে আপনি যদি গিটটি যথাযথভাবে কনফিগার করেছেন:

git push -f

4
মূল / আরবিতে ফিরে যাওয়ার চেষ্টা করার সময় আপনি সম্ভবত একটি ত্রুটি পাবেন। যদি আপনি একমাত্র আরবিতে কাজ করেন, আপনি পুশ - ফোর্স উত্স আরবি গিট করতে পারেন। সূত্র: স্ট্যাকওভারফ্লো.com
জো বারুচ

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

2
@ মোটিশিশোর না, ভাল উপায় নেই। যদি অন্য কেউ মাঝামাঝি সময়ে শাখায় ধাক্কা দেয় তবে তাদের পরিবর্তনগুলি নষ্ট হয়ে যাবে! আপনি যদি গিট কমিটের ইতিহাসে সুন্দর হতে চান, তবে আপনার পরিবর্তে মাস্টারকে আপনার শাখায় মার্জ করা উচিত, যা নিরাপদ (আপনি git pushছাড়া এটি করতে পারেন -f)।
ড্যানিয়েল কুলম্যান

109

দ্রষ্টব্য: আপনার যদি পুনর্বাসনের বিষয়ে ইতিমধ্যে বিস্তৃত জ্ঞান থাকে তবে দ্রুত পুনর্বাসনের জন্য একটি লাইনারের নীচে ব্যবহার করুন। সমাধান: ধরে নিই যে আপনি আপনার কার্যনির্বাহী শাখায় রয়েছেন এবং কেবলমাত্র আপনিই এতে কাজ করছেন।

git fetch && git rebase origin/master

যেকোন দ্বন্দ্ব সমাধান করুন, আপনার কোডটি পরীক্ষা করুন, প্রতিশ্রুতিবদ্ধ এবং দূরবর্তী শাখায় নতুন পরিবর্তনগুলি প্রবর্তন করুন।

                            ~:   For noobs   :~

নিম্নলিখিত পদক্ষেপগুলি যে কেউ নতুন git rebaseএবং ঝামেলা ছাড়াই এটি করতে চেয়েছিল তাদের সহায়তা করতে পারে

পদক্ষেপ 1: ধরে নিই যে এই মুহুর্তে আপনার ব্রাঞ্চে কোনও কমিট এবং পরিবর্তন করা হবে না। আমরা আপনার ব্রাঞ্চ পরিদর্শন করছি।

git checkout YourBranch
git pull --rebase

কি হলো? আপনার শাখায় কাজ করা অন্যান্য বিকাশকারীদের করা সমস্ত পরিবর্তন টানুন এবং এর উপরে আপনার পরিবর্তনগুলি পুনর্নির্মাণ করুন।

পদক্ষেপ 2: যে কোনও দ্বন্দ্ব উপস্থাপন করে তা সমাধান করুন।

ধাপ 3:

git checkout master
git pull --rebase

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

পদক্ষেপ 4: উপস্থাপন করা যে কোনও দ্বন্দ্ব সমাধান করুন।

পদক্ষেপ 5:

git checkout YourBranch
git rebase master

কি হলো? মাস্টার উপর রিবেস ঘটে

Step ষ্ঠ পদক্ষেপ: যদি কোনও বিবাদ হয় তবে কোনও বিরোধের সমাধান করুন। git rebase --continueসমাধান হওয়া বিরোধগুলি যুক্ত করার পরে পুনরায় চালিয়ে যাওয়া চালিয়ে যেতে ব্যবহার করুন । যে কোনও সময় আপনি git rebase --abortরিবেসটি বাতিল করতে ব্যবহার করতে পারেন ।

পদক্ষেপ 7:

git push --force-with-lease 

কি হলো? আপনার দূরবর্তী আপনার ব্র্যাঙ্কে পরিবর্তন ঠেলাঠেলি। --force-with-leaseআপনার বিকাশের সময় অন্য বিকাশকারীদের থেকে আপনার ব্র্যাঙ্কের জন্য অন্য কোনও আগত পরিবর্তন রয়েছে কিনা তা নিশ্চিত করবে। এটি শক্তি ধাক্কা না দিয়ে সুপার দরকারী। যদি কোনও আগত পরিবর্তন হয় তারপরে পরিবর্তনগুলি ঠেকানোর আগে আপনার স্থানীয় আপনার ব্রাঙ্ক আপডেট করার জন্য এগুলি আনুন।

আমার কেন পরিবর্তনগুলি ঠেকানো দরকার? যথাযথ পুনর্বাসনের পরে রিমোট আপনার ব্র্যাঙ্কে প্রতিশ্রুতি বার্তাটি পুনরায় লেখার জন্য বা যদি কোনও বিরোধের সমাধান হয়? তারপরে আপনাকে স্থানীয় রেপোতে সমাধান করা পরিবর্তনগুলি আপনার ব্র্যাঙ্কের রিমোট রেপোতে ঠেলাতে হবে

Yahoooo ...! আপনি সাফল্যের সাথে প্রত্যাবর্তনের সাথে সম্পন্ন করেছেন।

আপনিও এটি করতে চাইছেন:

git checkout master
git merge YourBranch

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

                            ~:   (๑ơ ₃ ơ)♥ rebase   :~

এটি কীসের জন্য: "সর্বশেষ মাস্টারের উপর মাস্টার এবং রিবাসেস মাস্টার থেকে সর্বশেষ পরিবর্তনগুলি টানুন" " মাস্টার রেবেসে মাস্টার? আপনি কি সর্বশেষতম মাস্টার টান প্রয়োজন?
জন লিটল

@ জনলিটল নির্দেশের জন্য ধন্যবাদ। মানে Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!। আমি আমার বিবরণ আপডেট করব।
bh4r4 তম

21

ধাপ 1:

git fetch origin

ধাপ ২:

git rebase origin/master

পদক্ষেপ 3: (কোনও বিরোধ থাকলে ঠিক করুন)

git add .

পদক্ষেপ 4:

git rebase --continue

পদক্ষেপ 5:

git push --force

5
কোন শাখাটি শুরু হবে সে সম্পর্কে কোনও ব্যাখ্যা নেই। একটি ভাল উত্তর না।
কার্ল মরিসন

12

প্রথম মাস্টার আপডেট ...

git checkout [master branch]
git pull [master branch]

এখন মাস্টার শাখা সহ রিবেস উত্স-শাখা

git checkout [source branch]
git rebase [master branch]
git pull [source branch] (remote/source branch)
git push [source branch]

IF উত্স শাখা এখনও রিমোটে উপস্থিত নেই তবে করুন:

git push -u origin [source branch]

"এট ভয়েলা ..."


আমি এই উত্তরের ধাপে ধাপে প্রকৃতি পছন্দ করি। এটি ঠিক কী ঘটছে তা ভাঙ্গতে সহায়তা করে।
ডেভ লিউ

6

git fetch origin master:master এটি পরীক্ষা করে দেখার প্রয়োজন ছাড়াই মাস্টারের সর্বশেষতম সংস্করণ টান।

সুতরাং আপনার যা প্রয়োজন তা হ'ল:

git fetch origin master:master && git rebase master 👌


না git fetchখুব এটি চেক করার জন্য ছাড়াই মাস্টার আপডেট? ছাড়া যে git fetchনা git mergeআপডেট ঠিক আছে? সুতরাং আমরা যদি চেকআউট masterকরি তবে এটিতে সর্বশেষ আপডেট হবে না। সুতরাং বৈশিষ্ট্য শাখায় থাকার সময় কি এটি খাটো করা উচিত নয়, git fetchতাহলে git rebase origin/master? আমরা তা করতে পারি না git rebase masterকারণ এটি masterকর্মক্ষেত্র থেকে পুনরায় চালু করার চেষ্টা করবে , আমাদের origin/masterনিমজ্জিত কিন্তু লোকাল হয়ে বসে থাকতে হবে।
নোটিডার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.