আমি কীভাবে একটি দূরবর্তী গিট সংগ্রহস্থলের কেবল একটি শাখা আনতে পারি?


246

আমি দূরবর্তী সংগ্রহস্থলের একটি একক শাখা (তাদের সব নয়) দখল করতে এবং স্থানীয় ট্র্যাকিং শাখা তৈরি করতে চাই যা সেই দূরবর্তী শাখায় আরও আপডেটগুলি ট্র্যাক করতে পারে। দূরবর্তী সংগ্রহস্থলের অন্যান্য শাখাগুলি খুব বড়, তাই আমি এগুলি এড়ানো এড়াতে চাই। আমি এটা কিভাবে করবো?

সম্পাদনা: আমি এটি নিজেই খুঁজে পেয়েছি তবে স্ট্যাকওভারফ্লো আমাকে উত্তর হিসাবে উত্তর সরবরাহ করতে অস্বীকার করেছে যাতে আমি তার পরিবর্তে এখানে প্রশ্নটিতে রাখব।

আপনি রিমোট অ্যাড গিট করতে -t বিকল্পটি ব্যবহার করেন, যেমন:

git remote add -t remote-branch remote-name remote-url

আপনি -t branchএকাধিক শাখা দখল করতে একাধিক বিকল্প ব্যবহার করতে পারেন ।


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

নিশ্চয়ই আপনি নিজের প্রশ্নের উত্তর দিতে পারবেন, আপনি পারবেন না কেন?
চার্লসবি

2
আমি মনে করি ওপিটির অর্থ হ'ল তিনি তখন এর উত্তর দিতে পারবেন না। স্ট্যাকওভারফ্লো আপনার নিজের প্রশ্নের উত্তর দেওয়ার আগে আপনাকে ন্যূনতম সময় নির্ধারণ করতে হবে।
লার্স নর্ডিন

1
হাই ওপি, আপনার উত্তরটি এখনই যোগ করা ভাল লাগবে। এইভাবে আমরা এটিতে ভোট দিতে পারি (এবং অন্যান্য উত্তরের সাথে তুলনা করব)
লুলালালা

3
আপনার গিট রিমোট অ্যাড কমান্ডটি একটি রিমোট শাখা যুক্ত করছে, যার শাখা আনার সাথে কোনও সম্পর্ক নেই!
ক্রিস হ্যালক্রো

উত্তর:


220
git fetch <remote_name> <branch_name>

আমার জন্য কাজ করেছেন।


14
সবেমাত্র শিখেছি যে আনা শাখা FETCH_HEADআনার পরে যেমন পাওয়া যায় । ধন্যবাদ!
ক্রিস্টোফ

4
তারপরে git checkout FETCH_HEADচেকআউট করতে
d9k

সহজ এবং সহজ।
gsumk

<কমান্ড_নাম> কীভাবে পাবেন?
mrgloom

বেশিরভাগ ক্ষেত্রেই @mrgloom remote_nameহয় origin। উদাহরণস্বরূপ:git fetch origin <branch_name>
সহিথিয়ান ভগ্নেশ্বরান

67

একটি উপায় নিম্নলিখিত:

git fetch <remotename> <remote branch>:refs/remotes/<remotename>/<local branch>

এটি যদিও ট্র্যাকিং সেট আপ করে না।

আরও তথ্যের জন্য, গিট আনার ডকুমেন্টেশন দেখুন ।

সম্পাদনা : @ ব্যবহারকারী 1338062 হিসাবে নীচের নোটগুলি : আপনার যদি ইতিমধ্যে নতুন শাখাটি যুক্ত করতে চান যেখানে আপনার সংগ্রহস্থলের স্থানীয় ক্লোন না থাকে তবে আপনি একটি নতুন স্থানীয় সংগ্রহস্থল তৈরি করতে চান, তবে git clone --branch <branch_name> --single-branch <repo_url>সংক্ষিপ্ততর সমাধান সরবরাহ করে।


1
ধন্যবাদ এটি ওপি যা বলেছে তা করে। ট্র্যাকিং শাখা গিট চেকআউট তৈরি করতে - টি <দূরবর্তী শাখা> / <শাখার নাম> <শাখার নাম>
কেন

7
যদি আমি কেবল এটি করি git checkout <branchname>, আমি দেখতে পাচ্ছি যে গিটটি স্বয়ংক্রিয়ভাবে ট্র্যাকিং শাখা সেট আপ করে, যদি সেই নামের একমাত্র শাখাটি দূরবর্তী শাখা হয়।
বুকজর

1
এটিই আমার জন্য কাজ করেছিল। কনফিগারেশনে একটি শাখার জন্য কেবল রেফ আনার জন্য সেট করা থাকলেও এটি আনতে বা টান ব্যবহার করে সমস্ত শাখায় রেফ টানত। এই কমান্ডটি কেবলমাত্র সেই শাখাটি টেনেছিল যাতে রেপো কেবল 500 এমবি 5 মিমি নয়। ধন্যবাদ।
বীরত্ববাদী

1
এই উত্তর সম্ভবত পুরানো। git cloneএখন সমর্থন --branchএবং --single-branchবিকল্পগুলি, আমি বিক্ষোভ সহ একটি উত্তর পোস্ট করেছি ।
ব্যবহারকারী 1338062

3
@ ব্যবহারকারী 1338062 ক্লোনিংয়ের পরে যদি আপনি কেবল একটি নতুন শাখা আনতে চান (গিট ফেচ ব্যবহার করে সমস্ত শাখা নয়)
রুবিপ্রিন্স

35

আমি জানি ইতিমধ্যে প্রচুর উত্তর রয়েছে, তবে এগুলি আমার জন্য কাজ করেছে:

  1. git fetch <remote_name> <branch_name>
  2. git branch <branch_name> FETCH_HEAD
  3. git checkout <branch_name>

এগুলি @ আব্দুলসত্তার মোহাম্মদের উত্তর, উত্তর সম্পর্কে ক্রিসটফের মন্তব্য এবং এই অন্যান্য স্ট্যাকের ওভারফ্লো প্রশ্ন এবং তাদের উত্তরগুলির ভিত্তিতে:


1
এখানে সবচেয়ে দরকারী উত্তর আইএমও
ড্যানিয়েল হোমস

31

নির্দিষ্ট শাখাগুলি ট্র্যাক করতে বিদ্যমান রিমোট আপডেট করতে কেবল ব্যবহার করুন:

git remote set-branches <remote-name> <branch-name>

থেকে git help remote:

set-branches
    Changes the list of branches tracked by the named remote. This can be used to track a subset of the available remote branches
    after the initial setup for a remote.

    The named branches will be interpreted as if specified with the -t option on the git remote add command line.

    With --add, instead of replacing the list of currently tracked branches, adds to that list.

1
আশ্চর্যজনক, আমি একটি --single-branchসংগ্রহস্থলে ছিলাম এবং পরে অতিরিক্ত শাখাগুলি ডাউনলোড করতে পারিনি। ধন্যবাদ!
ইয়াজো

22

এটি করার একটি উপায়:

দূরবর্তী রেপোর জন্য .git / কনফিগার আনতে কোনও শাখা আনতে সেট করা উচিত:

   [remote "origin"]
            fetch = +refs/heads/*:refs/remotes/origin/*

দূরবর্তী শাখা আনতে:

git fetch origin branch-name

মূল থেকে দূরবর্তী শাখা 'শাখা-নাম' ট্র্যাক করতে একটি স্থানীয় শাখা 'শাখা-নাম' তৈরি করতে।

git checkout -b branch-name origin/branch-name

সমস্ত শাখা তালিকাবদ্ধ

git branch -a

16

লেখকের পোস্ট থেকে অনুলিপি করা:

ব্যবহার করুন -tবিকল্প git remote add, যেমন:

git remote add -t remote-branch remote-name remote-url

আপনি -t branchএকাধিক শাখা দখল করতে একাধিক বিকল্প ব্যবহার করতে পারেন ।


10
নিম্নচ্যুত, আপনি কেন একই থ্রেডে বিদ্যমান উত্তর দিয়ে উত্তর দিবেন?
বোয়েন

13

আপনি যদি "গিট টান" এবং "গিট ফেচ" এর জন্য কেবল নির্দিষ্ট শাখাগুলি আনতে ডিফল্ট পরিবর্তন করতে চান তবে আপনি .git / কনফিগারটি সম্পাদনা করতে পারেন যাতে দূরবর্তী কনফিগারেশনটি দেখতে লাগে:

[remote "origin"]
  fetch = +refs/heads/master:refs/remotes/origin/master

এটি কেবলমাত্র ডিফল্টরূপে উত্স থেকে মাস্টার আনবে। আরও তথ্যের জন্য দেখুন: https://git-scm.com/book/en/v2/Git-Internals- The-Refspec

সম্পাদনা: ঠিক বুঝতে পেরেছি যে গিট রিমোট অ্যাডের জন্য -t বিকল্পটি একই কাজ করে। কমপক্ষে রিমোট যুক্ত হওয়ার পরে এটি করার একটি দুর্দান্ত উপায় আপনি যদি ওটি রিমোটটি মুছতে না চান এবং -t ব্যবহার করে আবার যুক্ত করেন।


1
progit.org/book/ch9-5 লিংক থেকে সরানো হয়েছে git-scm.com/book/en/Git-Internals-The-Refspec
এখানে

8

সম্পূর্ণতার জন্য, একটি নতুন চেকআউটের জন্য এখানে উদাহরণ কমান্ড:

git clone --branch gh-pages --single-branch git://github.com/user/repo

অন্যান্য উত্তরে উল্লিখিত হিসাবে এটি এটির remote.origin.fetchমতো সেট করে :

[remote "origin"]
        url = git://github.com/user/repo
        fetch = +refs/heads/gh-pages:refs/remotes/origin/gh-pages

5

গিট সংস্করণ: 2.74

আমি এটি এইভাবে করি:

git remote add [REMOTE-NAME] [REMOTE-URL]
git fetch [REMOTE-NAME] -- [BRANCH]

4

গিট সংস্করণ 2.16.1.windows.4

সবেমাত্র একটি গিট আনতে রিমোট রিপোসিটোরিনাম শাখা নাম (eg: git fetch origin my_local_branch) নাম করা যথেষ্ট is আনার কাজ সম্পন্ন হবে এবং একই নামে একটি নতুন স্থানীয় শাখা তৈরি করা হবে এবং ট্র্যাকিং দূরবর্তী শাখায় সেট করা হবে।

তারপরে গিট চেকআউট ব্রাঞ্চনাম সম্পাদন করুন


1
git branchআপনি এটিতে চেকআউট না করা পর্যন্ত শাখাটি এর অধীনে উপস্থিত হবে না
পাইপ

3

আমার কাজের ক্ষেত্র:

git fetch --depth=1
git checkout <branch_name>

আপনার যদি স্থানীয় ক্লোন না থাকে:

git clone --depth 1 -b <branch_name> <repo_url>

3
  1. <remote_name>আপনি যে কোনওটি ব্যবহার করতে চান তা চয়ন করুন (বিনা দ্বিধায় origin এবং পদক্ষেপ 1 এড়িয়ে যান)
  2. git remote add <remote_name> <remote_url>
  3. git fetch <remote_name> <branch>
  4. <your_local_branch_name>আপনি ব্যবহার করতে চান তা চয়ন করুন । হিসাবে একই হতে পারে <branch>
  5. git checkout <remote_name>/<branch> -b <your_local_branch_name>

আশা করি এইটি কাজ করবে!


1

উত্তরটি আসলে আপনার কাছে থাকা ট্র্যাকিং শাখার বর্তমান তালিকার উপর নির্ভর করে। ট্র্যাকিং শাখা তালিকায় git fetch <remote_name> <branch_name> যদি শাখাটি ইতিমধ্যে থাকে তবে আপনি দূরবর্তী থেকে একটি নির্দিষ্ট শাখা আনতে পারেন (আপনি এটি দিয়ে পরীক্ষা করতে পারেন)git branch -r )।

ধরা যাক আমি পূর্বে - ইউনিট-ব্রাঞ্চ বিকল্পের সাহায্যে রিমোটটি ক্লোন করেছি এবং এই ক্ষেত্রে আমার কাছে কেবল একটি ট্র্যাকিং শাখা হ'ল "ক্লোনড"। আমি নিজেই গিট কনফিগার করে নিজেই টুইঙ্ক করতে পরামর্শ দিয়েছি, পাশাপাশি git remote add <remote_name> <remote_url>কমান্ড টাইপ করে কিছুটা বিস্মিত হয়েছি । "গিট রিমোট অ্যাড" যেমন একটি নতুন রিমোট সেট আপ করে, সম্ভবত এটি বিদ্যমান দূরবর্তী সংগ্রহস্থলের সাথে কাজ করে না; "-t শাখা" বিকল্পগুলি সরবরাহ করা আমাকে সাহায্য করেনি।

রিমোটটি উপস্থিত থাকলে এবং যে শাখাটি আপনি আনতে চান তা সেই দূরবর্তীটিতে বিদ্যমান:

  1. git branch -rআপনি এই শাখাটিকে ট্র্যাকিং শাখা হিসাবে দেখতে পারেন কিনা তা পরীক্ষা করে দেখুন। যদি না হয় (যেমন একক শাখার ক্লোন হিসাবে আমার ক্ষেত্রে), - এডিডি বিকল্পের সাথে "গিট রিমোট সেট-ব্রাঞ্চস" দ্বারা ট্র্যাকিং শাখার তালিকায় এই শাখাটি যুক্ত করুন:

    • git remote set-branches --add <remote_name> <branch_name>
  2. এখন আপনি একটি নির্দিষ্ট শাখা আনতে পারেন (অন্যান্য উত্তরগুলি এখানে নকল করুন):

    • git fetch <remote_name> <branch_name>
  3. এবং "চেকআউট - ট্র্যাক" দিয়ে একটি নতুন স্থানীয় শাখা তৈরি এবং চেকআউট করুন, যা ট্র্যাকিং শাখার একই "শাখা_নাম" দেওয়া হবে:

    • git checkout --track <remote_name>/<branch_name>

0

এটি করার সহজ উপায়

  git fetch origin <branch> && git checkout <branch>

উদাহরণ: আমি উত্স থেকে ইউট শাখা আনতে চাই এবং এটি বর্তমান কার্যকারী শাখা হিসাবে স্যুইচ করতে চাই।

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