গিট: স্থানীয়ভাবে একটি রিমোট শাখা মার্জ করুন


203

আমি সমস্ত দূরবর্তী শাখা মাধ্যমে টানছি git fetch --all। আমি যে শাখায় আমি git branch -aরিমোটস / উত্স / শাখা নাম হিসাবে মার্জ করতে চাই তা দেখতে পাচ্ছি। সমস্যাটি এর অ্যাক্সেসযোগ্য নয়। আমি মার্জ বা চেকআউট করতে পারি না?

উত্তর:


319

আপনি সেই দূরবর্তী ট্র্যাকিং শাখাগুলি উল্লেখ করতে পারেন ~ (এর সাথে তালিকাবদ্ধ git branch -r) তাদের রিমোটের নামের সাথে।

আপনাকে দূরবর্তী শাখাটি আনতে হবে:

git fetch origin aRemoteBranch

আপনি যদি স্থানীয় স্থানীয় শাখায় সেই দূরবর্তী শাখাগুলির মধ্যে একটি মার্জ করতে চান:

git checkout master
git merge origin/aRemoteBranch

দ্রষ্টব্য 1: দীর্ঘ ইতিহাস সহ বৃহত রেপোগুলির জন্য, আপনি --depth=1যখন ব্যবহার করবেন তখন বিকল্পটি যুক্ত করতে চাইবেন git fetch

দ্রষ্টব্য 2: এই কমান্ডগুলি অন্যান্য রিমোট রেপোগুলির সাথেও কাজ করে যাতে আপনি কাঁটাচামচায় কাজ করে থাকলে আপনি একটি originএবং একটি সেটআপ করতে পারেন upstream


বিপরীত পরিস্থিতি: আপনি যদি নিজের স্থানীয় একটি শাখা প্রত্যন্ত শাখায় মার্জ করতে চান (উপরের চিত্র অনুসারে দূরবর্তী শাখার বিপরীতে), আপনাকে প্রথমে উক্ত দূরবর্তী শাখার শীর্ষে একটি নতুন স্থানীয় শাখা তৈরি করতে হবে :

git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch

এখানে ধারণাটি হ'ল "আপনার স্থানীয় একটি শাখা" (এখানে anotherLocalBranch) একটি প্রত্যন্ত শাখায় ( origin/aBranch) সংযুক্ত করা।
তার জন্য, আপনি myBranchসেই দূরবর্তী শাখাকে উপস্থাপন করে প্রথমে তৈরি করেন : এটিই git checkout -b myBranch origin/aBranchঅংশ।
এবং তারপরে আপনি anotherLocalBranchএতে (এতে myBranch) মার্জ করতে পারেন ।


aLocalBranch? এটা কি টাইপো? আমার ধারণা আপনি আবার "মাই ব্রাঞ্চ" লিখতে চেয়েছিলেন?
19:40

1
@ কেঙ্কোটি নং: "আপনি যদি সেই স্থানীয় দূরবর্তী শাখার যে কোনও একটিতে আপনার স্থানীয় শাখাকে একত্রীকরণ করতে চান": আমি একটি " aLocalBranch" " " সাথে " myBranch" একত্রীকরণ করছি , myBranchএকটি প্রত্যন্ত শাখার প্রতিনিধিত্ব করে origin/aBranch
ভোনসি

আপনাকে @ ভনসিকে বিরক্ত করার জন্য দুঃখিত, আপনার আগের মন্তব্যে আপনি বলেছিলেন aLocalBranchযে টাইপো নয়, তবে আপনি সর্বশেষ সম্পাদনাটি অনুমোদন করেছেন (২ বছর পরে!) যা এই "সম্ভাব্য টাইপো" সংশোধন করে। আমি সম্পাদনাটি পূর্বাবস্থায় ফেলার আগে আপনার সাথে চেক করতে চেয়েছিলাম।
রথ

1
@ আরথ আপনি সঠিক: এটি প্রতীয়মান হয়েছে যে আমি অসতর্কতার সাথে সীমাবদ্ধ হয়ে কিছুটা তাড়াহুড়ো করে সম্পাদনা করেছি। দ্বিতীয় সংশ্লেষের মামলাটি পরিষ্কার করার জন্য আমি উত্তরটি সম্পাদনা করেছি: আপনি কি আমাকে বলতে পারবেন এটি এখন আরও পরিষ্কার হয় কিনা?
ভোনসি

91

আমি যখনই মার্জ করি তখন আমি যে শাখায় মার্জ করতে চাই (যেমন " git checkout branch-i-am-working-in") এবং তারপরে নিম্নলিখিতটি করতে চাই:

git merge origin/branch-i-want-to-merge-from


2
আমার ধারণা আপনি git fetch origin/branch-i-want-to-merge-fromপ্রথমে করতে হবে , তাই না?
হিনিরিচ

9
git fetch origin developএরপরেgit merge origin/develop
অলিভিয়ার

2
@ অলিভার আপনি সঠিক, এটি করার সঠিক উপায় is git merge একা এটা করবে না।
স্যাম

1
চতুর নামকরণ কনভেনশনটির জন্য আপনাকে ধন্যবাদ যা আমাকে বুঝতে সাহায্য করেছে
টনি 2 টোনস

1
@ আকীরা git add .-> git commit -m <message>-> না git push -u origin <branch>?
মেঘ চো

24

প্রথমে উত্স থেকে দূরবর্তী শাখাটি আনুন।

git fetch origin remote_branch_name

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

git merge origin/remote_branch_name

1
এটি আমার পক্ষে কাজ করেছিল যখন গৃহীত উত্তরটি জানায় যে আমরা মার্জ করতে পারি এমন কিছু নয়। আমার ক্ষেত্রে আমি অন্য ব্যবহারকারীর আমার রেপির কাঁটাচামচটি গিটহাবটিতে মার্জ করছিলাম।
এসজেটি

প্রথম কমান্ড আনতে হবে? 'গিট মার্জ উত্স / রিমোট_ ব্র্যাঞ্চ_নাম' স্থানীয় থেকে নয়, দূরবর্তী শাখা থেকে পড়ে reads সুতরাং আমার যত্ন নেওয়া উচিত নয়, স্থানীয় শাখাটি আপডেট হয়েছে কি না?
মাইকেল ফ্রেইজিম

20

সম্ভবত আপনি একটি স্থানীয় শাখা সহ দূরবর্তী শাখা ট্র্যাক করতে চান :

  1. একটি নতুন স্থানীয় শাখা তৈরি করুন: git branch new-local-branch
  2. রিমোট শাখা ট্র্যাক করতে এই নতুন নির্মিত শাখাটি সেট করুন: git branch --set-upstream-to=origin/remote-branch new-local-branch
  3. এই শাখায় প্রবেশ করুন: git checkout new-local-branch
  4. দূরবর্তী শাখার সমস্ত সামগ্রী স্থানীয় শাখায় টানুন: git pull

3

আপনি ইতিমধ্যেই আপনার দূরবর্তী শাখা সংগৃহীত এবং তা করেন তাহলে git branch -a,
আপনার মত কিছু প্রাপ্ত:

* 8.0
  xxx
  remotes/origin/xxx
  remotes/origin/8.0
  remotes/origin/HEAD -> origin/8.0
  remotes/rep_mirror/8.0

এর পরে, আপনি rep_mirror/8.0স্থানীয়ভাবে আপনার দূরবর্তী শাখা নির্ধারণ করতে ব্যবহার করতে পারেন ।

কৌশলটি remotes/rep_mirror/8.0কাজ করে না তবে rep_mirror/8.0তা করে does

সুতরাং, কমান্ড যেমন git merge -m "my msg" rep_mirror/8.0মার্জ করে।

(দ্রষ্টব্য: এটি @ ভনসি উত্তরের একটি মন্তব্য I আমি এটিকে অন্য উত্তর হিসাবে রেখেছি কারণ কোড ব্লকগুলি মন্তব্য বিন্যাসে ফিট করে না)

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