আমি কীভাবে গিট ১.+++ তে সমস্ত দূরবর্তী শাখা তালিকাভুক্ত করব?


633

আমি চেষ্টা করেছি git branch -r, তবে এটি কেবল স্থানীয়ভাবে ট্র্যাক করে এমন প্রত্যন্ত শাখাগুলির তালিকা প্রদর্শন করে। আমি যেগুলি পাইনি তাদের তালিকা আমি কীভাবে খুঁজে পাব? (কমান্ডটি সমস্ত দূরবর্তী শাখা তালিকাভুক্ত করে বা কেবল ট্রেড করা নেই সেগুলি আমার কাছে গুরুত্বপূর্ণ নয়))


11
আপনি বোঝাতে চেয়েছেন যে আপনি ডিফল্ট রেফস্পেকটি পরিবর্তন করেছেন, যাতে git fetchএবং git remote updateদূরবর্তী সমস্ত শাখা নিয়ে আসে না? কারণ অন্যথায় আপনি ঠিক তখনই ব্যবহার করতে পারবেন git branch -r...
ক্যাসাবেল

2
আমার অবশ্যই আছে. git branch -rআমি কেবল স্থানীয়ভাবে ট্র্যাক করেছিলাম এমন প্রত্যন্ত শাখাগুলি দেখিয়েছিলাম। এটি এখন আরও ভাল কাজ করছে।
জেমস এ রোজেন

উত্তর:


803

এখানে বিশাল সংখ্যক দর্শনার্থীর [1] দর্শকের জন্য, "আমি গিট 1.7+ এর সমস্ত দূরবর্তী শাখাগুলিকে কীভাবে তালিকাবদ্ধ করব?" হল:

git branch -r

ক্ষুদ্র সংখ্যালঘুদের জন্য [1] git branch -r কাজ করে না। যদি git branch -rকাজ না করে তবে চেষ্টা করুন:

git ls-remote --heads <remote-name>

যদি git branch -rএটি কাজ না করে, তবে ক্যাসাবেল যেমন বলেছিলেন "আপনি ডিফল্ট রেফস্পেকটি পরিবর্তন করেছেন, যাতে git fetchএবং git remote updateসমস্ত remoteশাখাগুলি আনবে না "


[1] এই পাদটীকা 2018-ফেব্রুয়ারির লেখা হিসাবে, আমি মন্তব্যগুলিতে লক্ষ্য করেছি এবং দেখতে পাচ্ছি যে git branch -rবিশাল সংখ্যাগরিষ্ঠদের জন্য কাজ করা হয়েছে ( 140 এর মধ্যে প্রায় 90% বা 125 )।

যদি git branch -rকাজ না করে তবে এই উত্তর হিসাবে git config --get remote.origin.fetchচেকটিতে একটি ওয়াইল্ডকার্ড ( *) রয়েছে


15
আপনি এটি করতে পারেন git ls-remote [url]যাতে আপনাকে এটির প্রথমে ক্লোন করতে হবে না :)
Zsub

142
এই উত্তরটি সঠিক তবে বিভ্রান্তিমূলক, অনুসন্ধানকারী ইঞ্জিনগুলি থেকে ব্যবহারকারীরা প্রথম যে বিষয়টি দেখতে পাবে তা হ'ল: git branch -rযেহেতু এটি সঠিক এবং সহজ উত্তর, তাই প্রশ্নকারীর একটি বিশেষ ঘটনা ছিল যেখানে তিনি তার আচরণের পরিবর্তন করেছিলেন git branch -rযে এখানে আসা বেশিরভাগ ব্যবহারকারীরা তা করবে না আছে
স্টিফান

24
@ স্টেফান: আপনি কি এ সম্পর্কে নিশ্চিত? git branch -rআমার জন্য কাজ করে না। এটি কেবল স্থানীয়ভাবে ইতিমধ্যে ট্র্যাক করা শাখাগুলি তালিকাবদ্ধ করছে। তবে git ls-remote --headsদূরবর্তী সংগ্রহস্থলে উপলভ্য সমস্ত শাখা তালিকাভুক্ত করা হয়েছে ...
রেক্সফোর্ড

2
যদি কেউ তালিকাভুক্ত শাখাগুলি থেকে git ls-remote(এবং তালিকাভুক্ত নয় git branch -r) git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"আনতে চান তবে স্ট্যাকওভারফ্লো . com/a/26649770/873282 তে বর্ণিত হিসাবে আনার আগে একজনকে কার্যকর করতে হবে ।
koppor

11
git fetch --allসমস্ত বর্তমান দূরবর্তী শাখা পেতে আগে করতে ভুলবেন না ।
এ। এতিয়া

173

remote show স্থানীয়ভাবে ট্র্যাক করা হয়নি এমনকী এবং এমনকি যেগুলি এখনও প্রাপ্ত হয়নি এমনগুলি সহ রিমোটের সমস্ত শাখা দেখায়।

git remote show <remote-name>

এটি আপনার স্থানীয় ভাণ্ডারের তুলনায় শাখার স্থিতি প্রদর্শন করার চেষ্টা করে:

> git remote show origin
* remote origin
  Fetch URL: C:/git/.\remote_repo.git
  Push  URL: C:/git/.\remote_repo.git
  HEAD branch: master
  Remote branches:
    branch_that_is_not_even_fetched new (next fetch will store in remotes/origin)
    branch_that_is_not_tracked      tracked
    branch_that_is_tracked          tracked
    master                          tracked
  Local branches configured for 'git pull':
    branch_that_is_tracked merges with remote branch_that_is_tracked
    master                 merges with remote master
  Local refs configured for 'git push':
    branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable)
    master                 pushes to master                 (up to date)

যথাযথভাবে। স্থানীয়ভাবে ট্র্যাক করা যায় না।
থুফির

3
branch_that_is_not_tracked tracked?
পাইটর ডব্রোগস্ট

3
@ পাইওটারডব্রোগস্ট হ্যাঁ! branch_that_is_not_trackedএমন একটি শাখা যা কোনও স্থানীয় গিট শাখা দ্বারা ট্র্যাক করা হয় না। তবে এটি স্থানীয় সংগ্রহস্থলে নিয়ে আসা হয়েছে (সুতরাং এখানে একটি প্রত্যন্ত শাখা রয়েছে)। কোনও অদ্ভুত কারণে git remote showএই রাষ্ট্রটিকে কল করে tracked, যদিও এমন কোনও স্থানীয় শাখা নেই যা দূরবর্তীটিকে ট্র্যাক করে। এই ক্ষেত্রে, বিপরীত trackedহয় new, যার অর্থ "সংগ্রহ করা"।
ক্লাস মেলবর্ন

এটি কর্মসূচী হিসাবে কাজ করে না, পার্স করা খুব কঠিন
আলেকজান্ডার মিলস

এটি আমার একটি বিশেষ ক্ষেত্রে ধরা পড়েছিল যেখানে আমি স্থানীয়ভাবে একটি দূরবর্তী শাখা টানলাম যা তখন রিমোটে সরানো হয়েছিল। তারপরে git branch -rপ্রস্তাবিত যে এখানে একটি প্রত্যন্ত শাখা রয়েছে তবে এটি git remote show originদেখায় refs/remotes/origin/my-now-dead-branch stale (use 'git remote prune' to remove)। আরও অনেক দরকারী!
icc97

53
git branch -a | grep remotes/*

10
এটি মূলত এর সমতুল্য git branch -r, যা ওপি বলেছিল যে যথেষ্ট ভাল ছিল না।
ক্যাসকেবেল

9
আসলে উভয়ই git branch -aএবং git branch -rআমার জন্য সমস্ত দূরবর্তী শাখা তালিকাভুক্ত, ওপি যা বলেছিল তা সত্য কিনা তা আমি নিশ্চিত নই। আমি কেবল একটি পরীক্ষার সংগ্রহশালা সেটআপ করেছি এবং এটি যাচাই করেছি (কেবলমাত্র মাস্টার ট্র্যাকিংয়ের উত্স / মাস্টার ছিল তবে এখনও উভয় পতাকা সহ সমস্ত দূরবর্তী শাখা দেখেছি)।
ইডান কে

2
আমি যদি বিদ্যমান টানা রেপো থেকে ক্লোন করে এবং তারপর গিট সার্ভারে ম্যানুয়ালি উত্স নির্দেশ করি তবে এটি সমস্ত দূরবর্তী শাখাগুলির তালিকাবদ্ধ করে না বলে মনে হয়। গৃহীত উত্তর এই কেস পরিচালনা করে।
নিলসবট

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

আশ্চর্যের বিষয়: কয়েক বছর ধরে আমি git fetchঅনুসরণ করেছি git branch -a, যা সম্প্রতি আমার জন্য ব্যর্থ হতে শুরু করে। সম্ভবত গিট আচরণ বদলেছে?
সেবাস্তিয়ান মাচ

39

ব্যবহার git branch -rতালিকা সমস্ত দূরবর্তী শাখা এবং git branch -aতালিকা, স্থানীয় ও দূরবর্তী সব শাখা। এই তালিকাগুলি যদিও পুরানো হয়ে যায়। এই তালিকাগুলি আপ টু ডেট রাখার জন্য চালান run

git remote update --prune

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

রিমোট নির্দিষ্ট করে আপনি এই আপডেটটি দ্রুত করতে পারবেন, অন্যথায় এটি আপনার যোগ করা সমস্ত রিমোটগুলি থেকে আপডেটগুলি টানবে

git remote update --prune origin

এটি আমার সমস্যা সমাধান করেছে - 'গিট শাখা -আর' এখন আমার পক্ষে কাজ করে।
ফ্রান্সিস নর্টন

27

কিন্তু

git branch -ar

এটা করা উচিত।


41
উভয় যুক্তিতে পাস করা নিরর্থক। কেবল প্রত্যন্ত শাখা -rফেরত দেয়। স্থানীয় এবং দূরবর্তী উভয় শাখা ফেরত দেয়। সুতরাং, এবং উভয় একই আউটপুট ফলন। -agit branch -agit branch -ar
ওয়াল্টার রোমান


19

গিট ব্রাঞ্চিং - রিমোট শাখা

git ls-remote

Git ডকুমেন্টেশন


Git LS-দূরবর্তী --heads আরো নির্দিষ্ট ফলাফল পেতে
উলফগ্যাং Fahl

1
এটি কেবলমাত্র কমান্ড আমার শাখা আমি ঘটনাক্রমে ধাক্কা তালিকা যা ছাড়া হয় heads/refs/heads/features/my-branchধন্যবাদ!
মিশা


9

টি এল; টিআর;

এটিই আপনার সমস্যার সমাধান:

git remote update --prune    # To update all remotes
git branch -r                # To display remote branches

বা:

git remote update --prune    # To update all remotes
git branch <TAB>             # To display all branches

5

রান করার জন্য সেরা কমান্ডটি git remote show [remote] । এটি দূরবর্তী এবং স্থানীয়, ট্র্যাকড এবং তালিবদ্ধ সমস্ত শাখা প্রদর্শন করবে।

ওপেন সোর্স প্রকল্পের একটি উদাহরণ এখানে:

> git remote show origin
* remote origin
  Fetch URL: https://github.com/OneBusAway/onebusaway-android
  Push  URL: https://github.com/OneBusAway/onebusaway-android
  HEAD branch: master
  Remote branches:
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked
    refs/remotes/origin/branding stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    develop merges with remote develop
    master  merges with remote master
  Local refs configured for 'git push':
    develop pushes to develop (local out of date)
    master  pushes to master  (up to date)

আমরা যদি কেবল দূরবর্তী শাখাগুলি পেতে চাই তবে আমরা ব্যবহার করতে পারি grep। আমরা যে আদেশটি ব্যবহার করতে চাই তা হ'ল:

grep "\w*\s*(new|tracked)" -E

এই আদেশ সহ:

> git remote show origin | grep "\w*\s*(new|tracked)" -E
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked

আপনি এটির জন্য একটি নামও তৈরি করতে পারেন:

git config --global alias.branches "!git remote show origin | grep \w*\s*(new|tracked) -E"

তারপর আপনি শুধু চালাতে পারেন git branches




4

শুধু একটি git fetchকমান্ড চালান । এটি সমস্ত রিমোট শাখাগুলি আপনার স্থানীয় সংগ্রহস্থলে টানবে এবং তারপরে git branch -aসমস্ত শাখার তালিকা তৈরি করতে একটি করবে।


1

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

git remote show origin

যদি সবকিছু ঠিকঠাক হয় তবে সম্ভবত আপনার একটি আপডেট চালানো উচিত:

git remote update

সফলভাবে চলমান ধরে নিলে, অন্যান্য উত্তরগুলি যা বলে তা করতে সক্ষম হবেন:

git branch -r

1

এই কমান্ডটি ব্যবহার করে,

git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n"

CommitID       : 27385d919
Remote Branch  : (origin/ALPHA)
Commit Message :  New branch created

এটি প্রতিশ্রুতি বার্তা এবং প্রতিশ্রুতিবদ্ধ ID সহ সমস্ত দূরবর্তী শাখাগুলিকে তালিকাবদ্ধ করে যা প্রত্যন্ত শাখা দ্বারা উল্লেখ করা হয়।


1

আমি ব্যবহার করব:

git branch -av

এই কমান্ডটি আপনাকে কেবল প্রত্যন্ত শাখাগুলি সহ সমস্ত শাখার তালিকা প্রদর্শন করে না /remote, তবে আপনি *কী আপডেট করেছেন এবং শেষ প্রতিশ্রুতিবদ্ধ মন্তব্যগুলির প্রতিক্রিয়াও আপনাকে সরবরাহ করে ।


0

নিশ্চিত করুন যে আপনি যে রিমোট উত্সটি তালিকাভুক্ত করছেন সেটি হ'ল সত্যই আপনি যে সংগ্রহস্থলটি চান সেটি পুরানো ক্লোন নয়।


0

আমি যা চেয়েছিলাম তা পেতে আমি একটি জগাখিচুড়ি শেল পাইপলাইন শেষ করেছি। আমি স্রেফ মূল রিমোট থেকে শাখাগুলি মার্জ করেছি:

git branch -r --all --merged \
    | tail -n +2 \
    | grep -P '^  remotes/origin/(?!HEAD)' \
    | perl -p -e 's/^  remotes\/origin\///g;s/master\n//g'

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