git - কিভাবে গিট সব দূরবর্তী শাখা ক্লোন করতে?




github git-branch (20)

আপনি মনে করতে পারেন যে কমান্ড ব্যবহার করুন

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

প্রথমে আপনার সংগ্রহস্থল ক্লোন করুন, তারপর গন্তব্য ফোল্ডারে পরিবর্তন করুন। এবং শেষ কিন্তু অন্তত আনয়ন এবং চেকআউট:

git clone <repo> <destination_folder>
cd <destination_folder>
git fetch && git checkout <branch>

এটাই. এখানে আরো একটি বাস্তব বিশ্ব উদাহরণ:

git clone https://[email protected]/team/repository.git project_folder
cd project_folder
git fetch && git checkout develop

ডক্সগুলিতে কমান্ডগুলি সম্পর্কে বিস্তারিত তথ্য পাবেন: ক্লোন কমান্ড , Fetch কমান্ড , চেকআউট কমান্ড

আমি একটি master এবং একটি development শাখা আছে, উভয় GitHub ধাক্কা। আমি clone ডি করেছি, এড pull , এবং এড fetched, কিন্তু আমি master শাখা ফিরে ছাড়া অন্য কিছু পেতে অক্ষম।

আমি নিশ্চিত যে আমি কিছু সুস্পষ্ট অনুভব করছি, কিন্তু ম্যানুয়ালটি পড়েছি এবং আমি কোনও আনন্দ পাইনি।


কেন আপনি শুধুমাত্র "মাস্টার" দেখুন

git clone সমস্ত রিমোট রিমোট শাখা ডাউনলোড করে তবে এখনও তাদের "রিমোট" বিবেচনা করে, যদিও ফাইলগুলি আপনার নতুন সংগ্রহস্থলে অবস্থিত। এর মধ্যে একটি ব্যতিক্রম রয়েছে, যা ক্লোনিং প্রক্রিয়াটি "মাস্টার" নামক দূরবর্তী শাখা থেকে "মাস্টার" নামে একটি স্থানীয় শাখা তৈরি করে। ডিফল্টরূপে, git branch শুধুমাত্র স্থানীয় শাখা দেখায়, যার জন্য আপনি শুধুমাত্র "মাস্টার" দেখতে পান।

git branch -a দূরবর্তী শাখা সহ সমস্ত শাখা দেখায়।

কিভাবে স্থানীয় শাখা পেতে

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

git branch branchone origin/branchone
git branch branchtwo origin/branchtwo
git branch branchthree origin/branchthree

এই উদাহরণে, branchone হল স্থানীয় শাখার নাম যা আপনি origin/branchone উপর ভিত্তি করে তৈরি করছেন; যদি আপনি পরিবর্তে বিভিন্ন নামের সাথে স্থানীয় শাখাগুলি তৈরি করতে চান তবে আপনি এটি করতে পারেন:

git branch localbranchname origin/branchone

একবার আপনি স্থানীয় শাখা তৈরি করলে, আপনি এটি git branch সাথে দেখতে পারেন (মনে রাখবেন, আপনাকে স্থানীয় শাখার দেখতে হবে না)।


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

$ git pull --all

রিমোট রিপোজিটরিতে আঘাত না করে আপনি এখন যে কোনও শাখাটি চেক আউট করতে পারেন।


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

একটি দূরবর্তী শাখার উপর ভিত্তি করে একটি স্থানীয় শাখা তৈরি করতে, এরকম কিছু করুন:

git checkout -b dev refs/remotes/origin/dev

যা ভালো কিছু ফেরত করা উচিত:

Branch dev set up to track remote branch refs/remotes/origin/dev.
Switched to a new branch "dev"

এখন, যখন আপনি ডেভ শাখাতে থাকবেন, তখন "গিট পুল" দূরবর্তী ডেভ শাখা হিসাবে একই স্থানে আপনার স্থানীয় ডেভ আপডেট করবে। মনে রাখবেন যে এটি সমস্ত শাখাগুলি আনবে, কিন্তু শুধুমাত্র আপনি যেটির উপরে গাছের উপরে যাবেন তা টেনে আনুন।


আপনি সহজেই অভিনব "গিট চেকআউট-বি কিছু ব্র্যান্ড মূল / কিছু ব্র্যাঞ্চ" সিনট্যাক্স ব্যবহার না করেই একটি শাখাতে স্যুইচ করতে পারেন। আপনি শুধু করতে পারেন:

git checkout somebranch

Git স্বয়ংক্রিয়ভাবে সঠিক জিনিস করবে:

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

Git একই নামের সাথে একটি শাখা ঠিক একই দূরবর্তী স্থানে উপস্থিত কিনা তা যাচাই করবে এবং যদি এটি করা হয় তবে এটি আপনাকে এটির একটি দূরবর্তী শাখা হিসাবে স্পষ্টভাবে উল্লেখ করে, এটি একইভাবে ট্র্যাক করে। গিট 1.8.2.1 এর গিট-চেকআউট ম্যান পৃষ্ঠা থেকে:

যদি <branch> খুঁজে পাওয়া যায় না তবে মিলযুক্ত নামের সাথে একটি দূরবর্তী ট্র্যাকিংয়ের ট্র্যাকিং শাখা বিদ্যমান (এটি <দূরবর্তী> কল করুন), সমতুল্য হিসাবে আচরণ করুন

$ git checkout -b <branch> --track <remote>/<branch>

আমার টুলটি git_remote_branch ব্যবহার করুন (আপনার রুবিতে আপনার মেশিনে ইনস্টল থাকা দরকার)। এটা বিশেষভাবে দূরবর্তী শাখা ম্যানিপুলেশন মৃত সহজ করতে নির্মিত হয়েছে।

প্রতিবার এটি আপনার পক্ষে কোনও অপারেশন করে, এটি কনসোলে এটি লাল প্রিন্ট করে। সময়ের সাথে সাথে, অবশেষে তারা আপনার মস্তিষ্কের মধ্যে আটকা পড়ে :-)

আপনি যদি GRB আপনার পক্ষ থেকে কমান্ড চালাতে চান না তবে কেবল 'ব্যাখ্যা করুন' বৈশিষ্ট্যটি ব্যবহার করুন। কমান্ডগুলি আপনার কনসোলে মুদ্রণের পরিবর্তে আপনার জন্য কার্যকর করা হবে।

অবশেষে, সমস্ত কমান্ডের memorization সহজ করতে aliases আছে।

এই git_remote_branch যে নোট করুন ;-)

আপনি GRB সহায়তা চালানোর সময় এখানে সাহায্য:

git_remote_branch version 0.2.6

  Usage:

  grb create branch_name [origin_server] 

  grb publish branch_name [origin_server] 

  grb rename branch_name [origin_server] 

  grb delete branch_name [origin_server] 

  grb track branch_name [origin_server] 



  Notes:
  - If origin_server is not specified, the name 'origin' is assumed 
    (git's default)
  - The rename functionality renames the current branch

  The explain meta-command: you can also prepend any command with the 
keyword 'explain'. Instead of executing the command, git_remote_branch 
will simply output the list of commands you need to run to accomplish 
that goal.

  Example: 
    grb explain create
    grb explain create my_branch github

  All commands also have aliases:
  create: create, new
  delete: delete, destroy, kill, remove, rm
  publish: publish, remotize
  rename: rename, rn, mv, move
  track: track, follow, grab, fetch

এই Bash স্ক্রিপ্ট আমাকে সাহায্য করেছে:

#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
    git branch --track "${branch##*/}" "$branch"
done

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

git fetch --all
git pull --all

নিশ্চিত হতে হবে.

এক মাছ ধরার নৌকা : git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs স্বাভাবিক হিসাবে: আমরা এটি জানি হিসাবে rm -rf মহাবিশ্ব অনুলিপি করার আগে আপনার সেটআপ পরীক্ষা

এক-মাছ ধরার জন্য ক্রেডিট ব্যবহারকারী সিএফআই যান


এই খুব জটিল হয় না, খুব সহজ এবং সোজা এগিয়ে পদক্ষেপ হিসাবে অনুসরণ করা হয়;

git fetch origin এই আপনার দূরবর্তী সব দূরবর্তী শাখা আনতে হবে।

git branch -a এটি আপনাকে সমস্ত দূরবর্তী শাখাগুলি দেখাবে।

git checkout --track origin/<branch you want to checkout>

আপনি নিম্নলিখিত কমান্ড দ্বারা পছন্দসই শাখা আছে কিনা তা যাচাই করুন;

git branch

আউটপুট এই পছন্দ হবে;

*your current branch 
some branch2
some branch3 

বর্তমান শাখাকে নির্দেশ করে * চিহ্নটি লক্ষ্য করুন।


একটি স্থানীয় রেপো থেকে ক্লোনিং গিট ক্লোন এবং গিট ফ্যাক্টের সাথে কাজ করবে না: অনেকগুলি শাখা / ট্যাগগুলি অপ্রয়োজনীয় থাকবে।

সব শাখা এবং ট্যাগ সঙ্গে একটি ক্লোন পেতে।

git clone --mirror git://example.com/myproject myproject-local-bare-repo.git

সমস্ত শাখা এবং ট্যাগগুলির সাথে একটি ক্লোন পেতে কিন্তু একটি কার্যকরী অনুলিপি সহ:

git clone --mirror git://example.com/myproject myproject/.git
cd myproject
git config --unset core.bare
git config receive.denyCurrentBranch updateInstead
git checkout master

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

যখন আপনি একটি সংগ্রহস্থল ক্লোন করেন তখন শাখার সমস্ত তথ্য আসলে ডাউনলোড করা হয় তবে শাখাগুলি লুকানো থাকে। কমান্ড সঙ্গে

$ git branch -a

আপনি সংগ্রহস্থল সব শাখা, এবং কমান্ড দিয়ে প্রদর্শন করতে পারেন

$ git checkout -b branchname origin/branchname

আপনি তারপর একটি সময়ে তাদের এক "ডাউনলোড" করতে পারেন।

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

  1. প্রথম ধাপ

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

$ cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
$ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git

ফোল্ডার my_repo_folder এর অভ্যন্তরে অবস্থিত স্থানীয় সংগ্রহস্থল এখনও খালি, সেখানে একটি লুকানো। গিট ফোল্ডার রয়েছে যা আপনি এখন টার্মিনাল থেকে "ls -alt" কমান্ডটি দেখতে পারেন।

  1. দ্বিতীয় ধাপ

গিট কনফিগারেশনগুলির বুলিয়ান মান "বেয়ার" মিথ্যাতে স্যুইচ করে একটি নিয়মিত সংগ্রহস্থল থেকে খালি (খালি) সংগ্রহস্থল থেকে এই সংগ্রহস্থলটি স্যুইচ করুন:

$ git config --bool core.bare false
  1. তৃতীয় ধাপ

বর্তমান ফোল্ডারের ভিতরে যে সব কিছু এবং স্থানীয় মেশিনে সমস্ত শাখা তৈরি করুন, তাই এটি একটি স্বাভাবিক রেপো তৈরি করুন।

$ git reset --hard

তাই এখন আপনি "git branch" কমান্ড টাইপ করতে পারেন এবং আপনি দেখতে পারেন যে সমস্ত শাখা ডাউনলোড করা হয়।

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


প্রথমে, একটি রিমোট Git রিপোজিটরি এবং cd এটিতে ক্লোন করুন:

$ git clone git://example.com/myproject
$ cd myproject

পরবর্তীতে, আপনার সংগ্রহস্থলে স্থানীয় শাখায় দেখুন:

$ git branch
* master

কিন্তু আপনার সংগ্রহস্থলে লুকানো অন্যান্য শাখা আছে! আপনি -a পতাকা ব্যবহার করে দেখতে পারেন:

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

আপনি যদি আপস্ট্রিম শাখায় দ্রুত চিট নিতে চান তবে আপনি সরাসরি এটি পরীক্ষা করতে পারেন:

$ git checkout origin/experimental

কিন্তু আপনি যদি সেই শাখায় কাজ করতে চান তবে আপনাকে স্থানীয় ট্র্যাকিং শাখা তৈরি করতে হবে যা স্বয়ংক্রিয়ভাবে দ্বারা করা হয়:

$ git checkout experimental

এবং আপনি দেখতে হবে

Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'

সেই শেষ লাইনটি কিছু লোককে ছুঁড়ে ফেলেছে: "নতুন শাখা" - হাহ? এটি আসলেই অর্থ বহন করে যে শাখা সূচী থেকে নেওয়া হয়েছে এবং আপনার জন্য স্থানীয়ভাবে তৈরি করা হয়েছে। পূর্ববর্তী লাইন প্রকৃতপক্ষে আরো তথ্যপূর্ণ হিসাবে এটি আপনাকে বলে যে শাখাটি দূরবর্তী শাখার ট্র্যাক করার জন্য সেট আপ করা হচ্ছে, যা সাধারণত মূল / শাখা_নাম শাখার অর্থ করে

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

$ git branch
* experimental
  master

আপনি git remote ব্যবহার করে একাধিক দূরবর্তী রিপোজিটরি ট্র্যাক করতে পারেন।

$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental
  remotes/win32/master
  remotes/win32/new-widgets

এই মুহুর্তে, জিনিসগুলি বেশ পাগল হয়ে উঠছে, তাই কি gitk তা দেখতে gitk চালান:

$ gitk --all &

প্রশ্নের উত্তরগুলির দিকে তাকিয়ে আমি লক্ষ্য করেছি যে এটি হ্রাস করা সম্ভব:

for branch in  `git branch -r | grep -v 'HEAD\|master'`; do  
 git branch --track ${branch##*/} $branch;
done

তবে সতর্ক থাকুন, দূরবর্তী শাখাগুলির একটি নাম যেমন অ্যাডমিন_মাস্টার হিসাবে নামকরণ করা হবে এটি ডাউনলোড হবে না!

মূল ধারণা জন্য bigfish ধন্যবাদ


শুধু এটা কর

$ git clone git://example.com/myproject
$ cd myproject
$ git checkout branchxyz
Branch branchxyz set up to track remote branch branchxyz from origin.
Switched to a new branch 'branchxyz'
$ git pull
Already up-to-date.
$ git branch
* branchxyz
  master
$ git branch -a
* branchxyz
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branchxyz
  remotes/origin/branch123

আপনি দেখেন, 'গিট ক্লোন গিট: //example.com/myprojectt' সবকিছুকে এমনকি শাখাগুলিও ফিরিয়ে দেয়, আপনাকে কেবল তাদের চেক আউট করতে হবে, তারপরে আপনার স্থানীয় শাখা তৈরি হবে।


সংক্রান্ত,

$ git চেকআউট -b পরীক্ষামূলক মূল / পরীক্ষামূলক

ব্যবহার

$ git checkout -t origin/experimental

অথবা আরো verbose কিন্তু মনে রাখা সহজ

$ git checkout --track origin/experimental

একটি রিমোট রিপোজিটরি ট্র্যাকিং শর্তাবলী ভাল হতে পারে।


ঠিক আছে, যখন আপনি আপনার রেপো ক্লোন করবেন , তখন আপনার সমস্ত শাখা আছে ...

আপনি যদি শুধু git branch তারা লুকানো থাকে ...

তাই যদি আপনি সমস্ত শাখার নাম দেখতে চান তবে কেবল এইভাবে সমস্ত পতাকা যুক্ত করুন:

git branch --all git branch -a বা git branch -a

আপনি শুধু শাখা চেকআউট, আপনি আপনার প্রয়োজন সব পেতে।

কিন্তু ক্লোনের পরে অন্য কেউ কী করে তৈরি করে শাখাটি সম্পর্কে?

এই ক্ষেত্রে, শুধু করবেন:

git fetch

এবং আবার সব শাখা চেক করুন ...

আপনি একই সময়ে fetch এবং চেকআউট করতে চান, আপনি করতে পারেন:

git fetch && git checkout your_branch_name

আমি যা বলেছি তা সহজ করার জন্য আপনার জন্য নিচের চিত্রটিও তৈরি করেছেন:


এই উত্তরগুলির মধ্যে কোনটিই এটি কাটবে না, ব্যতীত কেউ সঠিক ট্র্যাকে নেই।

আমি একটি সার্ভার / সিস্টেম থেকে অন্য একটি repo সরানো সঙ্গে সমস্যা ছিল। যখন আমি রেপো ক্লোন করি, তখন এটি শুধুমাত্র মাস্টারের জন্য একটি স্থানীয় শাখা তৈরি করে যাতে আমি নতুন দূরবর্তী স্থানে ধাক্কা দিলে শুধুমাত্র মাস্টার শাখা ধাক্কা দেয়।

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

পদ্ধতি 1:

git clone --mirror OLD_REPO_URL
cd new-cloned-project
mkdir .git
mv * .git
git config --local --bool core.bare false
git reset --hard HEAD
git remote add newrepo NEW_REPO_URL
git push --all newrepo
git push --tags newrepo

পদ্ধতি 2:

git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'
git clone OLD_REPO_URL
cd new-cloned-project
git clone-branches
git remote add newrepo NEW_REPO_URL
git push --all newrepo
git push --tags newrepo

2017 সালের শুরুতে, এই মন্তব্যের উত্তরটি কাজ করে:

git fetch <origin-name> <branch-name>আপনার জন্য শাখা এনেছে। যদিও এটি একযোগে সমস্ত শাখা টানতে পারে না, আপনি একচেটিয়াভাবে এই প্রতি-শাখাটি চালাতে পারবেন।


Git সাধারণত (যখন নির্দিষ্ট না হয়) git ls-refsতাদের ইতিহাসগুলি সম্পূর্ণ করতে প্রয়োজনীয় বস্তুর সাথে এক বা একাধিক অন্যান্য সংগ্রহস্থল থেকে সমস্ত শাখা এবং / অথবা ট্যাগগুলি (রেফস, দেখুন :) সংগ্রহ করে। অন্য কথায় এটি এমন বস্তু সংগ্রহ করে যা ইতিমধ্যে ডাউনলোড করা বস্তুগুলি দ্বারা পৌঁছানো যায়। দেখুন: কী git fetchসত্যিই কি?

কখনও কখনও আপনার কাছে এমন শাখা / ট্যাগ থাকতে পারে যা বর্তমানের সাথে সরাসরি সংযুক্ত নয়, তাই git pull --all/ git fetch --allসেই ক্ষেত্রে সহায়তা করবে না, তবে আপনি তাদের দ্বারা তালিকাবদ্ধ করতে পারেন:

git ls-remote -h -t origin

এবং রেফারেন্স নাম বুদ্ধিমান দ্বারা তাদের ফিরিয়ে আনুন।

তাই তাদের সব আনতে , চেষ্টা করুন:

git fetch origin --depth=10000 $(git ls-remote -h -t origin)

--depth=10000প্যারামিটার আপনি সংগ্রহস্থলের অভিগ্রস্ত থাকেন সাহায্য করতে পারে।

তারপর আবার আপনার সব শাখা চেক করুন:

git branch -avv

উপরের দিকে সাহায্য না করলে, ট্র্যাক করা তালিকায় ম্যানুয়ালি অনুপস্থিত শাখাগুলি যুক্ত করতে হবে (যেহেতু তারা যেভাবে হারিয়ে গেছে):

$ git remote -v show origin
...
  Remote branches:
    master      tracked

দ্বারা git remote set-branchesমত:

git remote set-branches --add origin missing_branch

তাই এটি remotes/originআনতে পর অধীনে প্রদর্শিত হতে পারে :

$ git remote -v show origin
...
  Remote branches:
    missing_branch new (next fetch will store in remotes/origin)
$ git fetch
From github.com:Foo/Bar
 * [new branch]      missing_branch -> origin/missing_branch

সমস্যা সমাধান

যদি আপনি মাস্টার শাখার বাইরে অন্য কিছু না পান তবে অনুসরণগুলি দেখুন:

  • আপনার রিমোট চেক করুন ( git remote -v), উদাহরণস্বরূপ
    • যাচাই যে git config branch.master.remoteহয় origin
    • originসঠিক URL টির মাধ্যমে পয়েন্টগুলি কিনা তা পরীক্ষা করুন: git remote show origin(এই post )।

আমি এখানে আমার ২ সেন্ট যোগ করতে যাচ্ছি কারণ আমি স্থানীয়ভাবে মুছে ফেলা একটি রিমোট শাখাটি কীভাবে টেনে আনতে চেষ্টা করেছি। মূল আমার ছিল না, এবং আমি সবকিছু পুনরায় cloning এর ঝগড়া মাধ্যমে যেতে চান না

এটা আমার জন্য কাজ করেছে:

আপনি স্থানীয়ভাবে শাখা পুনরায় তৈরি করতে হবে অনুমান:

git checkout -b recreated-branch-name
git branch -a (to list remote branches)
git rebase remotes/remote-origin/recreated-branch-name

তাই আমি gituser / master থেকে sjp থেকে ফর্ক করে এবং তারপর sjp / mynewbranch এ এটি branched এটি দেখতে ভালো হবে:

$ git checkout -b mynewbranch
$ git branch -a
  master
  remotes/sjp/master
  remotes/sjp/mynewbranch
$ git fetch (habit to always do before)
$ git rebase remotes/sjp/mynewbranch

আমি ঠিক একই কাজ করতে হবে। এখানে আমার Ruby স্ক্রিপ্ট।

#!/usr/bin/env ruby

local = []
remote = {}

# Prepare
%x[git reset --hard HEAD]
%x[git checkout master] # Makes sure that * is on master.
%x[git branch -a].each_line do |line|
  line.strip!
  if /origin\//.match(line)
     remote[line.gsub(/origin\//, '')] = line
   else
     local << line
   end
end
# Update 
remote.each_pair do |loc, rem|
  next if local.include?(loc)
  %x[git checkout --track -b #{loc} #{rem}]
end
%x[git fetch]






remote-branch