আমি কীভাবে একটি দূরবর্তী গিট শাখা পরীক্ষা করব?


6710

কেউ একটি ভাগ করা সংগ্রহস্থলের testসাথে ডাকা একটি শাখা পুশ git push origin testকরে। আমি সঙ্গে শাখা দেখতে পারেন git branch -r

এখন আমি দূরবর্তী testশাখাটি পরীক্ষা করার চেষ্টা করছি ।

আমি চেষ্টা করেছিলাম:

  • git checkout test যা কিছুই করে না

  • git checkout origin/testদেয় * (no branch)। যা বিভ্রান্তিকর। আমি কীভাবে "কোন শাখায়" থাকতে পারি?

আমি কীভাবে একটি দূরবর্তী গিট শাখা পরীক্ষা করব?


9
@ জিঞ্জার তবে এতে নতুন স্থানীয় শাখার নাম পরিবর্তন করার সম্ভাবনা নেই (যদি আপনি পরে --set-upstream এবং নামকরণের ধারাবাহিকতা বজায় রাখতে চান)
ফেসবুকে

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

6
গিট কমান্ডগুলি শুরু করার জন্য স্বজ্ঞাত নয়, সাম্প্রতিক সংস্করণগুলির সাথে মিশ্রিত পরিবর্তনগুলি যুক্ত করুন এবং আপনার এই পৃষ্ঠাটি রয়েছে ...
ক্রিস্টোফ রাউসি

14
আমার মনে হচ্ছে আমি পাগল বড়ি নিচ্ছি। আমি upstreamকেবল একটি নয়, একটি থেকে একটি শাখা চেকআউট করার চেষ্টা করছি originএবং প্রতিটি প্রস্তাবিত উত্তর দূরবর্তীভাবে সহায়ক (পাং-উদ্দেশ্যযুক্ত) কিছু করে না। সম্পাদনা করুন - আমাকে ক্ষমা করুন, শীর্ষ 2 জবাবগুলিতে থাকা বহু সংখ্যক পরামর্শ অকেজো ছিল; তৃতীয় এক ( git branch test origin/test) যা কাজ করে। সেরা 2 জন 20x ভোটের সংখ্যা পেয়ে
খুশি

4
আপনার কার্যক্ষেত্রে আপনার 'টেস্ট' নামের একটি ফাইল থাকতে পারে, বিশদ জন্য stackoverflow.com/a/45006389/792416 দেখুন ।
oldman পর্ণ

উত্তর:


9148

হালনাগাদ

জাকুবের উত্তর আসলে এতে উন্নতি করে। গিট সংস্করণগুলি ≥ 1.6.6 সহ, কেবলমাত্র একটি রিমোট সহ, আপনি কেবল এটি করতে পারেন:

git fetch
git checkout test

ব্যবহারকারী মাসুকোমি যেমন একটি মন্তব্যে উল্লেখ করেছেন, git checkout testআপনার একাধিক রিমোট থাকলে আধুনিক গিটে কাজ করবে না। এই ক্ষেত্রে ব্যবহার করুন

git checkout -b test <name of remote>/test

বা শর্টহ্যান্ড

git checkout -t <name of remote>/test

পুরানো উত্তর

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

একটি শাখা আনতে, আপনার কেবল প্রয়োজন:

git fetch origin

এটি আপনার জন্য সমস্ত প্রত্যন্ত শাখাগুলি আনবে। আপনি এখানে চেকআউট করার জন্য উপলব্ধ শাখা দেখতে পারেন:

git branch -v -a

হাতে থাকা প্রত্যন্ত শাখাগুলি নিয়ে এখন আপনাকে যে শাখায় আগ্রহী সেগুলি আপনাকে স্থানীয় কাজের অনুলিপিটি পরীক্ষা করে দেখতে হবে:

git checkout -b test origin/test

398
এটি প্রসারিত করতে: গিট আপনাকে অন্য কারও শাখায় কাজ করতে দেয় না। আপনি কেবল নিজের কাজ করতে পারেন। সুতরাং আপনি যদি অন্য কারও শাখায় যুক্ত করতে চান তবে আপনাকে সেই শাখার নিজস্ব "অনুলিপি" তৈরি করতে হবে যা উপরের আদেশটি যা করে তা হ'ল (ভাল, এটি আপনার শাখাটি তৈরি করে এবং এটিও পরীক্ষা করে আনে)।
ড্যান মোল্ডিং

139
এটি যদি কোনও নতুন দূরবর্তী শাখা হয় তবে এটি করার git fetchআগে আপনার প্রয়োজন হতে পারে যাতে গিটটি সচেতন হয়origin/test
নীল সরকার

56
... এবং আপনি এটি দিয়ে যাবেনgit fetch origin test
অ্যান্ড্রু

22
ত্রুটি: "গিট চেকআউট: পাথ আপডেট করা শাখাগুলি স্যুইচ করার সাথে বেমানান। আপনি কি চেকআউট করার পরিকল্পনা করেছিলেন origin/testযা প্রতিশ্রুতি হিসাবে সমাধান করা যায় না?"
শিওনক্রস

85
git checkout testআধুনিক গিটটিতে কাজ করবে না যদি আপনার একাধিক রিমোট থাকে তবে একই শাখার নাম রয়েছে । এটি কোনটি ব্যবহার করতে হবে তা জানতে পারে না।
মাসুকোমি

1256

সিডিনোট: আধুনিক গিট (> = 1.6.6 ) দিয়ে আপনি স্রেফ ব্যবহার করতে সক্ষম

git checkout test

(দ্রষ্টব্য যে এটি 'পরীক্ষা' 'উত্স / পরীক্ষা' নয়) আপনার জন্য জাদুকরী ডিডব্লিউআইএম- ম্যারি সম্পাদন করা এবং স্থানীয় শাখা 'পরীক্ষা' তৈরি করা, যার জন্য আপস্ট্রিমটি দূরবর্তী ট্র্যাকিং শাখা 'উত্স / পরীক্ষা' হবে।


* (no branch)মধ্যে git branchআউটপুট মানে কি নামহীন শাখা আছে, (মাথা পয়েন্ট সরাসরি কমিট, এবং কিছু স্থানীয় শাখা থেকে প্রতীকী রেফারেন্স নয়) তথাকথিত 'বিচ্ছিন্ন মাথা "রাজ্যের যে। আপনি যদি এই নামহীন শাখায় কিছু কমিট করেন তবে আপনি সর্বদা বর্তমান কমিট বন্ধ করে স্থানীয় শাখা তৈরি করতে পারেন:

git checkout -b test HEAD

** সম্পাদনা (সম্পাদক দ্বারা লেখক নয় ) **

আমি নীচে সমাহিত একটি মন্তব্য পেয়েছি যা এই উত্তরটিকে আধুনিকীকরণ বলে মনে হচ্ছে:

@ ডেনিস: গিট চেকআউট, উদাহরণস্বরূপ গিট চেকআউট উত্স / পরীক্ষার ফলাফল পৃথক হেড / নামবিহীন শাখায় ফলাফল, যখন গিট চেকআউট পরীক্ষা বা গিট চেকআউট-বি পরীক্ষার উত্স / পরীক্ষার ফলাফল স্থানীয় শাখার পরীক্ষায় (রিমোট-ট্র্যাকিং শাখার উত্স / পরীক্ষার সাথে প্রবাহ হিসাবে) ) - জাকুব নরবস্কি জানুয়ারী 9 '14 এ 8:17 এ

গুরুত্ত আরোপ করা git checkout origin/test


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

10
"আধুনিক গিট" - রেকর্ডের জন্য, (প্রায়) আপনি কোন সংস্করণটি উল্লেখ করছেন? কখনও কখনও আমাদের পুরানো ডিস্ট্রোস চলমান সিস্টেমে কাজ করতে হয়।
ক্রেগ ম্যাককুইন

5
এই প্রসঙ্গে "আধুনিক গিট" হ'ল গিট 1.6.6
ববি নর্টন

10
@ সৈয়দান যদি আপনি এর মতো প্রতিক্রিয়া পান error: pathspec 'branch_name' did not match any file(s) known to git.তবে প্রথমে আপনাকে গিট আনতে হবে।
ডেনিস

6
1.8.3.msysgit.0 গিট সংস্করণ ব্যবহার করে এবং এটি আমার পক্ষে কাজ করে না - গিট হিসাবে পরিচিত কোনও ফাইল (গুলি) এর সাথে মেলে না - আমি অনেক গিট
ফেচ

563

এই ক্ষেত্রে, আপনি সম্ভবত একটি স্থানীয় testশাখা তৈরি করতে চান যা দূরবর্তী testশাখাকে ট্র্যাক করছে :

$ git branch test origin/test

পূর্ববর্তী সংস্করণগুলিতে gitআপনার একটি সুস্পষ্ট --trackবিকল্পের প্রয়োজন ছিল , তবে আপনি যখন কোনও দূরবর্তী শাখাটি শাখা বন্ধ করছেন তখন এটি এখন ডিফল্ট।


15
এটি এতে স্যুইচ না করে একটি স্থানীয় শাখা তৈরি করবে।
অ্যালেক্স স্ক্রিপনিক

2
যদিও আমি মারাত্মক হয়ে উঠলাম: দ্ব্যর্থক অবজেক্টের নাম: 'উত্স / দেব' - যেখানে উত্সের উপর 'ডভ' একটি শাখা অবশ্যই উপস্থিত রয়েছে - তবে আমি ভুলক্রমে আমার মেশিনে "উত্স / দেব" নামে একটি শাখা তৈরি করেছি (আমার পূর্ববর্তী বোকাম প্রচেষ্টায়) এই অধিকারটি পেতে, কোনও সন্দেহ নেই) ... আউট
প্যান্ডাওড

1
এটি আমাকে ত্রুটি ত্রুটি দিচ্ছে: কিছু রেফগুলিকে ইঙ্গিত দেওয়ার জন্য ব্যর্থ হয়েছে: আপডেটগুলি প্রত্যাখ্যান করা হয়েছিল কারণ একটি পুশিত শাখার টিপটি এর প্রত্যন্ত ইঙ্গিতটির পিছনে রয়েছে: প্রতিপক্ষ। এই শাখাটি দেখুন এবং দূরবর্তী পরিবর্তনগুলির ইঙ্গিতটি মার্জ করুন: (যেমন 'গিট টান') আবার চাপ দেওয়ার আগে। ইঙ্গিত: বিশদটির জন্য 'গিট পুশ - হেল্প' এ 'ফাস্ট-ফরওয়ার্ডস সম্পর্কে নোট দেখুন'।
pal4 Life

475

স্বীকৃত উত্তরটি আপনার পক্ষে কাজ করছে না?

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

$ git checkout -b remote_branch origin/remote_branch

মারাত্মক: গিট চেকআউট: পাথ আপডেট করার শাখাগুলি স্যুইচিংয়ের সাথে বেমানান।
প্রতিশ্রুতি হিসাবে সমাধান করা যায় না এমন 'উত্স / দূরবর্তী_ব্রাঞ্চ' চেকআউট করার ইচ্ছা কি আপনার ছিল?

সমাধান

আপনি যদি এই বার্তাটি গ্রহণ করেন তবে আপনাকে প্রথমে চালানোর আগে দূরবর্তী সংগ্রহস্থলের নাম git fetch originকোথায় করতে হবে । প্রতিক্রিয়া সহ এখানে একটি সম্পূর্ণ উদাহরণ:origingit checkout remote_branch

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

আপনি দেখতে পাচ্ছেন, চলমান যে git fetch originকোনও দূরবর্তী শাখা পুনরুদ্ধার করা আমরা আমাদের স্থানীয় মেশিনে ট্র্যাক করার জন্য এখনও সেটআপ করি নি। সেখান থেকে, যেহেতু এখন আমাদের কাছে প্রত্যন্ত শাখায় একটি রেফ রয়েছে, আমরা কেবল চালাতে পারি git checkout remote_branchএবং আমরা দূরবর্তী ট্র্যাকিংয়ের সুবিধা অর্জন করব।


2
স্থানীয়ভাবে আপনার আলাদা শাখা থাকলে আমি একটি নোট যুক্ত করব: 'গিট রিমোট অ্যাড উত্স [the_path_to_your_repo / repo_name.git]' ব্যবহার করে আপনি এটি রিমোট রেপোর সাথে যুক্ত করেছেন তা নিশ্চিত করুন। তারপরে 'গিট ফেচ অরিজিন' ব্যবহার করুন যেখানে 'উত্স' বলতে বোঝায় যে সংস্থানটি আপনার সাথে তৈরি হয়েছে সেই উত্স ভাণ্ডার।
এলিওট্রোক

git checkout -b newbranch1-পদক্ষেপ তৈরি এবং বর্তমান শাখার উপর ভিত্তি করে একটি নতুন শাখা চেকআউট করার জন্য দুর্দান্ত কাজ করে।
লিনাস

2
আমি মনে করি এটি সর্বাধিক আপ টু ডেট (এটি changing @ #! আইং পরিবর্তন করে রাখে!)। গিটার 2.5.5 আমি রিমোট শাখাগুলি আসলে দেখারgit ls-remote একমাত্র উপায় এবং প্রকৃতপক্ষে একটি ব্যবহার করার একমাত্র উপায় ছিল git checkout -b [branch] --track [remote/branch]... এবং এটি কাজ করার পরে git pull [remote] [branch] । অর্থাত্, এটি আসলে পুরো শাখাটি টেনেছিল, তবে এখনও এটি তালিকাবদ্ধ করবে না।
delicateLatticeworkFever

এবং যখন এই উত্তরটি কাজ করে না, এইটি দেখুন ।
eis

কেবল যুক্ত করতে git fetch other_remote only_branch, আপনি যদি তবুও fatalত্রুটি পান। আপনি git fetch other_remoteশাখার নাম ছাড়া করতে হবে। অদ্ভুত নকশা।
হল

258

আমি উপরের সমাধানটি চেষ্টা করেছিলাম, কিন্তু এটি কার্যকর হয়নি। এটি চেষ্টা করুন, এটি কাজ করে:

git fetch origin 'remote_branch':'local_branch_name'

এটি দূরবর্তী শাখাটি আনবে এবং নামের সাথে একটি নতুন স্থানীয় শাখা তৈরি করবে (যদি ইতিমধ্যে উপস্থিত না থাকে) local_branch_nameএবং এতে দূরবর্তীটিকে ট্র্যাক করবে।


37
গিট আনার উত্স বা গিট রিমোট আপডেট স্থানীয় শাখা তৈরি না করে এটি আমার পক্ষে কাজ করেছিল। আমি নিশ্চিত না কেন।
গডস্মিথ

4
আমার প্রয়োজনের পরিপূর্ণতা অর্জনের এটি সর্বাধিক প্রত্যক্ষ উপায় যা ছিল একটি নতুন শাখা তৈরি করার জন্য একটি দূরবর্তী শাখা (মাস্টার নয়) ব্যবহার করা।
রোরালি

7
নির্বিঘ্নে কাজ করেছেন, বিশেষত যখন একাধিক শাখা সহ দূরবর্তী থেকে একটি একক শাখা ক্লোন করে রেখেছেন।
অ্যালেক্স সি

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

5
যখন অন্য কিছু না করে কেন এই কাজ করে কারও কি ধারণা আছে? (আমি গিটার 2.13.0 এ আছি)
নাথন আর্থার

108

এটি কোনও রিমোট নামবিহীন উত্স ( ডকুমেন্টেশন ) এর জন্য DWIM করবে :

$ git checkout -t remote_name/remote_branch

একটি নতুন রিমোট যুক্ত করতে, আপনাকে প্রথমে নিম্নলিখিতগুলি করতে হবে:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

প্রথমটি গিটকে বলে রিমোটটি বিদ্যমান, দ্বিতীয়টি কমিট করে।


104

ব্যবহার করুন:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

অন্যান্য উত্তর আমার সৌম্য ক্ষেত্রে আধুনিক গিটের সাথে কাজ করে না। দূরবর্তী শাখাটি নতুন হলে আপনাকে প্রথমে টানতে হবে, তবে আমি কেসটি পরীক্ষা করে দেখিনি।


2
আপনি কি বুঝতে পেরেছেন যে এটি এই উত্তরের
টমাস আইয়ুব

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

1
গিট আনার নিরাপদ বিকল্প। টান ব্যবহার করার আগে আনার চেষ্টা করুন। উভয়ই দূরবর্তী সামগ্রী ডাউনলোড করে তবে আনার সময় স্থানীয় রাষ্ট্র পরিবর্তন হয় না, তবে টান তাৎক্ষণিকভাবে স্থানীয় রাষ্ট্র পরিবর্তন করে।
পিটার স্মায়ালয়

89

ঠিক আছে , উত্তরটি সহজ ... আপনি মূলত শাখাটি দেখেন, তবে আপনার কাছে এখনও স্থানীয় কপি নেই! ...

fetchআপনার শাখার দরকার ...

আপনি কেবল শাখায় আনতে এবং তারপরে চেকআউট করতে পারেন, এটি করতে নীচের একটি লাইন কমান্ড ব্যবহার করুন:

git fetch && git checkout test

পার্থক্যগুলি ভাগ করে নিতে, কীভাবে fetchকাজ করে এবং কীভাবে এটি আলাদা তাও দেখুন আমি নীচের চিত্রটিও তৈরি করেছি pull:

গিট আনা


@ দিমিত্রিজেটসেভ হ্যাঁ, এটি কাজ করবে, যদি প্রত্যন্ত শাখা থাকে এবং আপনি আনেন তবে স্থানীয়ভাবে আপনি শাখাটি পাবেন ... গিট ফেচ অ্যান্ড অ্যান্ড গিট চেকআউট পরীক্ষা .. সুতরাং এটি কাজ করে, যদি না কোনও দূরবর্তী শাখা না থাকে তবে প্রশ্ন বলছে সেখানে ইতিমধ্যে একটি প্রত্যন্ত শাখা রয়েছে ...
আলিরেজা

আমি যেভাবে প্রশ্নটি দেখছি, testদেখতে একটি নতুন শাখার মতো দেখাচ্ছে, তাই এটি স্থানীয়ভাবে উপস্থিত হওয়ার সম্ভাবনা নেই। অন্যথায় আপনি একক git pullকমান্ড দিয়ে এটিকে আরও সহজে টানতে পারেন ।
দিমিত্রি জায়তসেভ

@ দিমিত্রিজাইতসেভ, হ্যাঁ, তাই আমি বলেছি যে গিট আনতে হবে, যে সবেমাত্র তৈরি করা দূরবর্তী শাখাগুলি পরীক্ষা করে, টান দিয়ে অন্য অযাচিত জিনিসগুলি আনতে পারে, তবে স্থানীয়ভাবে রেপো যদি স্থানীয়ভাবে আপনার কাছে থাকে তবে আনতে সমস্ত শাখা উপলব্ধ করা হয় ...
আলিরিজা

না fetchছাড়া pullসংগৃহীত কপিতে ছুটি পরিবর্তন কিন্তু স্থানীয় শাখায় না হয়, আপনার স্থানীয় শাখা নেতৃস্থানীয় আপ-টু-ডেট হচ্ছে না কেন?
দিমিত্রি জায়তসেভ

56

একটি গিট সংগ্রহস্থল ক্লোন করতে, করুন:

git clone <either ssh url /http url>

উপরের কমান্ডটি সমস্ত শাখা পরীক্ষা করে দেখায় তবে কেবল masterশাখাটি আরম্ভ করা হবে। আপনি যদি অন্য শাখাগুলি চেকআউট করতে চান তবে করুন:

git checkout -t origin/future_branch (for example)

এই কমান্ডটি দূরবর্তী শাখাটি পরীক্ষা করে এবং আপনার স্থানীয় শাখার নাম দূরবর্তী শাখার মতো হবে।

আপনি যদি চেকআউটে আপনার স্থানীয় শাখার নামটি ওভাররাইড করতে চান:

git checkout -t -b enhancement origin/future_branch

এখন আপনার স্থানীয় শাখার নাম enhancementতবে আপনার দূরবর্তী শাখার নাম future_branch

নথিপত্র


গিট ক্লোন <হয় ssh url / http url> - আমার জন্য পুরোপুরি কাজ করে
Kmeixner

হ্যাঁ আপনি সঠিক. আপনার তথ্যের জন্য ধন্যবাদ, আমি খুব শিগগিরই এটি আপডেট করব @warvaruc
মাধন

রিমোটের যদি না থাকে তবে এটি masterকাজ করে না।
polkovnikov.ph

36

আপনি চেষ্টা করতে পারেন

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

অথবা

git fetch
git checkout -b local_branch_name origin/branch_name

2
এফওয়াইআই, গিটের আরও --trackনতুন সংস্করণগুলিতে আর প্রয়োজন নেই, কারণ এটি পূর্ববর্তী উত্তরে বর্ণিত হিসাবে এটি ডিফল্টরূপে সেট করা আছে ।

33

প্রথমত, আপনাকে এটি করতে হবে:

git fetch # আপনি যদি শাখার নাম সম্পর্কে জানেন না

git fetch origin branch_name

দ্বিতীয়ত, আপনি নিজের স্থানীয় এ দূরবর্তী শাখা পরীক্ষা করে দেখতে পারেন:

git checkout -b branch_name origin/branch_name

-b আপনার নির্বাচিত দূরবর্তী শাখা থেকে নির্দিষ্ট নামে নতুন শাখা তৈরি করবে।


আমি বুঝতে পারি না - বি। আপনি যদি "গিট চেকআউট মাস্টার" করতে পারেন তবে কেন আপনি "গিট চেকআউট উত্স / পরীক্ষা" করতে পারবেন না?
জন লিটল

-b নতুন শাখার জন্য যা উত্স / মাস্টার থেকে
মহিদীন বিন মোহাম্মদ

28

আমি নিম্নলিখিত কমান্ডটি ব্যবহার করি:

git checkout --track origin/other_remote_branch

13
আপনি কেন এইভাবে এটি ব্যবহার করছেন তা যদি আপনি ব্যাখ্যা করেন তবে এই উত্তরটি আরও বেশি কার্যকর হবে। অর্থাত্ কারও কারও '- ট্র্যাক' ইত্যাদি ব্যবহার করা উচিত ...
ম্যাট ফ্রাইডম্যান

27

কমান্ড

git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>

সমান

 git fetch --all

এবং তারপর

 git checkout -b fixes_for_dev origin/development

উভয় একটি latest fixes_for_devথেকে তৈরি করবেdevelopment


24

ব্রাঞ্চটি যদি originরিমোট ছাড়া অন্য কোনও কিছুতে থাকে তবে আমি নিম্নলিখিতগুলি করতে পছন্দ করি:

$ git fetch
$ git checkout -b second/next upstream/next

এটি রিমোটে অবস্থিত একটি স্থানীয় শাখায় nextশাখাটি চেকআউট করবে । যার অর্থ আপনার যদি ইতিমধ্যে পরবর্তী একটি স্থানীয় শাখা থাকে তবে এটি বিরোধ করবে না।upstreamsecond/next

$ git branch -a
* second/next
  remotes/origin/next
  remotes/upstream/next


18

এই উত্তরগুলির কোনওোটাই আমার পক্ষে কাজ করেনি। এটি কাজ করেছে:

git checkout -b feature/branch remotes/origin/feature/branch


1
ধন্যবাদ। আমি ভাবছিলাম যে কমান্ড কল করার সময় আমি যে পুরো পথটি ( রিমোটস / উত্স / বৈশিষ্ট্য / শাখা ) দেখেছি সেগুলি ব্যবহার করতে হবে, তবে আমি নিশ্চিত ছিলাম না, তাই আমি কেবল ব্যবহার করেছি এবং এটি কাজ করার জন্য উপস্থিত হয়েছিল। বার্তা:gitgit branch -agit checkout -b apps/FEATURE/branch origin/apps/FEATURE/branchBranch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
ক্রিস 22

18

error: pathspec 'desired-branch' did not match any file(s) known to git.উপরের সমস্ত পরামর্শ দেখে আমি এমন পরিস্থিতিতে আটকে ছিলাম । আমি গিট সংস্করণে 1.8.3.1 এ আছি।

সুতরাং এটি আমার পক্ষে কাজ করেছে :

git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD

এর পিছনে ব্যাখ্যাটি হ'ল আমি লক্ষ্য করেছি যে দূরবর্তী শাখাটি আনার সময় এটি FETCH_HEAD এ আনা হয়েছিল:

$ git fetch origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD

17

কেবল git checkoutরিমোট শাখার নাম দিয়ে চালান । গিটটি স্বয়ংক্রিয়ভাবে একটি স্থানীয় শাখা তৈরি করবে যা দূরবর্তীটিকে ট্র্যাক করে:

git fetch
git checkout test

তবে, যদি সেই শাখার নাম একাধিক রিমোটে পাওয়া যায় তবে এটি কাজ করবে না কারণ গিট কোনটি ব্যবহার করবেন তা জানেন না। সেক্ষেত্রে আপনি যে কোনওটি ব্যবহার করতে পারেন:

git checkout --track origin/test

অথবা

git checkout -b test origin/test

ইন 2.19 , গীত শিখেছি checkout.defaultRemoteকনফিগারেশন, যা যখন যেমন একটি অস্পষ্টতা সমাধানে ডিফল্ট করার জন্য একটি দূরবর্তী নির্দিষ্ট করে।


16

git branch -rবলে যে অবজেক্টের নামটি অবৈধ, কারণ সেই শাখার নাম গিটের স্থানীয় শাখার তালিকায় নেই। আপনার স্থানীয় শাখার তালিকাটি উত্স থেকে এর সাথে আপডেট করুন:

git remote update

এবং তারপরে আপনার দূরবর্তী শাখাটি আবার চেষ্টা করে দেখুন।

এটি আমার পক্ষে কাজ করেছে।

আমি বিশ্বাস করি যে সমস্ত প্রত্যন্ত শাখাগুলিতে git fetchটান পড়ে , যা মূল পোস্টারটি চেয়েছিল তা নয়।


2
এফওয়াইআই, git remote update সমস্ত প্রত্যন্ত শাখাও আনে

13

দ্য git remote show <origin name>কমান্ড (আন-ট্র্যাক শাখা সহ) সব শাখা তালিকা প্রস্তুত করা। তারপরে আপনি যে রিমোট শাখার নাম আনতে হবে তা খুঁজে পেতে পারেন।

উদাহরণ:

$ git remote show origin

দূরবর্তী শাখা আনতে এই পদক্ষেপগুলি ব্যবহার করুন:

git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

উদাহরণ:

$ git fetch origin test:test
$ git checkout test

@ হেলস্কি ২.১15.১ সংস্করণে কাজ না করে উত্তর দিয়েছিল তবে আমি .git ফাইলের ওজনের ক্লোনটি কেবলমাত্র 1 টি শাখা এবং ফিল্টার ইতিহাস -depth পতাকা সহ হ্রাস করেছি। উদাহরণস্বরূপ $ git clone -b release --single-branch --depth 5 https://github.com/user/repo.gitতথ্য লিখুন এতে $ git remote show originএকক শাখা ক্লোন করা সংগ্রহস্থল সহ সমস্ত দূরবর্তী শাখা তালিকাভুক্ত করা হয় না।
Qh0stM4N 13

10

রিমোট থেকে আনুন এবং শাখাটি চেকআউট করুন।

git fetch <remote_name> && git checkout <branch_name> 

উদাহরণ:

গিট আনার উত্স এবং & গিট চেকআউট বৈশিষ্ট্য / এক্সওয়াইজেড -1234-অ্যাড-সতর্কতা


9

অন্যান্য ছেলেরা এবং গালগুলি সমাধান দেয়, তবে কেন আমি তা বলতে পারি।

গিট চেকআউট পরীক্ষা যা কিছুই করে না

Does nothing সমান হয় না doesn't work , তাই আমি অনুমান করি যখন আপনি আপনার টার্মিনালে 'গিট চেকআউট পরীক্ষা' টাইপ করেন এবং এন্টার কী টিপুন, কোনও বার্তা উপস্থিত হবে না এবং কোনও ত্রুটি ঘটবে না। আমি কি সঠিক?

উত্তরটি যদি 'হ্যাঁ' হয় তবে আমি আপনাকে কারণটি বলতে পারি।

কারণটি হ'ল আপনার কার্যক্ষেত্রে 'পরীক্ষা' নামে একটি ফাইল (বা ফোল্ডার) রয়েছে।

git checkout xxxপার্স করা হলে ,

  1. গিট xxxপ্রথমে একটি শাখার নাম হিসাবে দেখায় , তবে পরীক্ষার নামে কোনও শাখা নেই।
  2. তারপরে গিট মনে করে যে xxxএটি একটি পথ, এবং সৌভাগ্যক্রমে (বা দুর্ভাগ্যক্রমে), আছে একটি ফাইল নামক পরীক্ষার নাম। সুতরাং ফাইলের git checkout xxxকোনও পরিবর্তন বাতিল করা মানে xxx
  3. যদি ফাইলের নামও না থাকে xxxতবে গিট xxxকিছু নিয়ম অনুসারে তৈরি করার চেষ্টা করবে । নিয়মগুলির মধ্যে একটি হ'ল xxxযদি remotes/origin/xxxউপস্থিত থাকে তবে নামকরণ করা একটি শাখা তৈরি করা ।

ধন্যবাদ, গিট কেন কিছু করছে না তা জানার চেষ্টা চালিয়ে গেলেন।
মাইক আর


6

আপনি নিম্নলিখিত বাশ স্ক্রিপ্ট দিয়ে সমস্ত দূরবর্তী শাখাগুলি ট্র্যাকিং শুরু করতে পারেন:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`
  do git branch -f --track "$branch" "origin/$branch"
done

এখানে একটি একক-লাইন সংস্করণও রয়েছে:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ;

5

গিট চেকআউট-বি "শাখা_নাম" [বি এর অর্থ স্থানীয় শাখা তৈরি করুন]

গিট শাখা - সব

গিট চেকআউট-বি "আপনার শাখার নাম"

গিট শাখা

সফলভাবে মাস্টার শাখা থেকে দেব শাখায় চেকআউট করুন

এখানে চিত্র বর্ণনা লিখুন


গিট চেকআউট-বি "শাখা_নাম" [বি এর অর্থ স্থানীয় শাখা তৈরি করুন]
কেশব গেরা

3

সমস্ত দূরবর্তী শাখা এটি ব্যবহার করতে:

git fetch --all

তারপরে শাখায় চেকআউট করুন:

git checkout test

2

আপনার fetchসমস্ত রিমোট টানতে ব্যবহার করুন

   git fetch --all

দূরবর্তী শাখা তালিকাবদ্ধ করতে:

   git branch -r

আপনার সমস্ত শাখার তালিকা জন্য

   git branch -l
   >>outpots like-
     * develop
       test
       master

একটি শাখা চেকআউট / পরিবর্তন করতে

   git checkout master

চেষ্টা করা হয়েছে git branch -lএবং কোনও দূরবর্তী শাখা প্রদর্শিত হয়নি।
দিমিত্রি জায়তসেভ

ব্যবহার git pull --allবাgit fetch --all
নাসির খান

হ্যাঁ, এবং তার পরে, git branch -l এখনও কেবল স্থানীয় শাখা দেখায় । দেখে মনে হচ্ছে ঠিক git branchবাইরে কাজ করছে -l, তার কারণ কী -l?
দিমিত্রি জইতসেভ

এছাড়াও আপনার উত্তর প্রশ্নের উত্তর দেয় না - masterএটি কোনও দূরবর্তী শাখা নয়।
দিমিত্রি জায়তসেভ

-lতালিকার জন্য পতাকা। আপনি ব্যবহার করতে পারেন --listখুব
নাসির খান

2

আমাদের জন্য, দেখে মনে হচ্ছে remote.origin.fetchকনফিগারেশনটি একটি সমস্যা দিয়েছে। অতএব, আমরা আর কোনও দূরবর্তী শাখা masterদেখতে git fetch [--all]পেলাম না , তাই সাহায্য করিনি। না হয় কাজ করে git checkout mybranchনি git checkout -b mybranch --track origin/mybranch, যদিও এটি অবশ্যই দূরবর্তী সময়ে ছিল।

পূর্ববর্তী কনফিগারেশনটি কেবল masterআনার অনুমতি ছিল:

$ git config --list | grep fetch
remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

*উত্স থেকে নতুন তথ্য ব্যবহার করে এটি এনে ফিক্স করুন:

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

$ git fetch
...
 * [new branch] ...
...

এখন আমরা পারতাম git checkout স্থানীয়ভাবে দূরবর্তী শাখাটি ।

এই কনফিগারেশনটি কীভাবে আমাদের স্থানীয় রেপোতে শেষ হয়েছিল তা ধারণা নেই।


1
এটি আমার জন্য সমাধান করেছে যেহেতু আমি একটি শাখা ক্লোন করেছি
পন্টাস হলম্বম

2

যদি দূরবর্তী শাখার নামটি বিশেষ বৈশিষ্ট্য দিয়ে শুরু হয় তবে আপনাকে চেকআউট কমান্ডে এর চারপাশে একক উদ্ধৃতি ব্যবহার করা উচিত, অন্যথায় গিটটি জানতে পারবে না আপনি কোন শাখার কথা বলছেন।

উদাহরণস্বরূপ, আমি নামকৃত একটি প্রত্যন্ত শাখাটি চেকআউট করার চেষ্টা করেছি #9773কিন্তু কমান্ডটি ঠিক মতো কাজ করে নি, যেমন নীচের ছবিতে দেখানো হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

কোনও কারণে আমি ভেবেছিলাম যে ধারালো প্রতীকটি (#) এর সাথে কিছু করতে পারে এবং তারপরে আমি শাখার নামটি একক উদ্ধৃতি দিয়ে ঘিরে চেষ্টা করেছি, যেমন '#9773'রাথিনের মতো #9773, এবং ভাগ্যক্রমে এটি ভাল কাজ করেছে।

$ git checkout -b '#9773' origin/'#9773'

অনেকগুলি ইউনিক শেলগুলিতে #চরিত্রটি মন্তব্যের জন্য ব্যবহৃত হয় তাই এর পরে যে কোনও কিছুই #এড়ানো হবে না। এটি শেল জিনিস এবং গিটের জন্য নির্দিষ্ট কিছু নয়। ব্যাকস্ল্যাশের উদ্ধৃতি ব্যবহার করার আগে #যথেষ্ট হওয়া উচিত।
পাওলো স্কার্ডাইন

1

একটি খালি ফোল্ডার তৈরি করতে দয়া করে কমান্ডটি অনুসরণ করুন। এটি লিখুন এবং এই আদেশটি ব্যবহার করুন:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin.
Switched to a new branch '1_4_0_content_discovery'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.