কোন স্থানীয় শাখা গিতে কোন দূরবর্তী শাখা ট্র্যাক করছে তা কীভাবে বলা যায়?


234

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

আমি একটি রিমোট সার্ভার ব্যবহার করছি, যার নাম "উত্স"।


আমাকে ভুল করুন যদি আমি ভুল না করি তবে এটি 'একটি দূরবর্তী শাখা যা সার্ভারের পরিবর্তে ডিফল্টরূপে উত্স হিসাবে নামকরণ করা হয়েছে ??
ক্রিস হ্যালক্রো

উত্তর:


196

আমার পুতুলের অনুলিপিটির উদাহরণ ব্যবহার করে গিথুব ডটকমের উজানের গিট সংগ্রহস্থল থেকে চেক আউট ...

$ git remote show origin
* remote origin
  Fetch URL: git://github.com/reductivelabs/puppet.git
  Push  URL: git://github.com/reductivelabs/puppet.git
  HEAD branch: master
  Remote branches:
    0.24.x                 tracked
    0.25.x                 tracked
    2.6.x                  tracked
    master                 tracked
    next                   tracked
    primordial-ooze        tracked
    reins-on-a-horse       tracked
    testing                tracked
    testing-17-march       tracked
    testing-18-march       tracked
    testing-2-april        tracked
    testing-2-april-midday tracked
    testing-20-march       tracked
    testing-21-march       tracked
    testing-24-march       tracked
    testing-26-march       tracked
    testing-29-march       tracked
    testing-31-march       tracked
    testing-5-april        tracked
    testing-9-april        tracked
    testing4268            tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

তারপরে যদি আমি নিম্নলিখিতগুলি সম্পাদন করি:

$ git checkout -b local_2.6 -t origin/2.6.x 
Branch local_2.6 set up to track remote branch 2.6.x from origin.
Switched to a new branch 'local_2.6'

এবং অবশেষে git remote show originকমান্ডটি আবার চালিত করুন আমি নীচের নীচে নীচে নীচে দেখতে পাবেন:

  Local branches configured for 'git pull':
    local_2.6 merges with remote 2.6.x
    master    merges with remote master

1
এর অর্থ কি এর অর্থ এই যে আপনি কয়েকটি স্থানীয় শাখা থাকলেও আপনি পুতুলের সমস্ত দূরবর্তী শাখাগুলি ট্র্যাক করতে পারেন। অনেকগুলি "ট্র্যাকড" চিহ্নগুলি অর্থ কি আপনি কমান্ডের ফলাফল দেখতে পাচ্ছেন? কোন স্থানীয় শাখা দ্বারা "ট্র্যাকড"?
পিজে।

রিমোট শাখাগুলি এতে ট্র্যাক করা হয় আপনি যদি কিছু করেন git fetchবা git pullদূরবর্তী শাখাগুলির আপডেট করা হয় তবে আপনার ক্লোন করা সংগ্রহস্থলটিতে ট্র্যাক করা হবে। স্থানীয় শাখাগুলি কেবল এটিই, দূরবর্তী শাখাগুলির স্থানীয় শাখাগুলি এবং সুতরাং যথাযথ আদেশ দেওয়ার পরে দূরবর্তী শাখাগুলির আপডেটগুলি ট্র্যাক এবং একত্রিত করা হবে। স্থানীয় শাখাটি তৈরি করার সময় আমি স্পষ্টতই '-t' বিকল্পটি অন্তর্ভুক্ত করি যাতে এটি যে শাখা থেকে উদ্ভূত হয়েছিল সেই শাখাকে ট্র্যাক করে তা নিশ্চিত করে। মনে রাখবেন একটি স্থানীয় শাখা অন্য একটি স্থানীয় শাখাও ট্র্যাক করতে পারে তাই দূরবর্তী শাখা হতে হবে না।
জেরেমি বাউস

5
@ পিজে: শব্দটি "ট্র্যাক" এর গিতে দুটি স্বতন্ত্র অর্থ রয়েছে। "ট্র্যাকিং " লাইনগুলি "ট্র্যাকিং শাখা" (দূরবর্তী সংগ্রহস্থলগুলির শাখাগুলির স্ন্যাপশট) git remote show remote-nameউল্লেখ করে to "একত্রিত" লাইনগুলি স্থানীয় শাখাগুলিকে বোঝায় যেগুলিতে একটি "আপস্ট্রি শাখা" কনফিগারেশন রয়েছে ( গিট শাখা বা গিট চেকআউটের / বিকল্পের সাহায্যে তৈরি এবং এভাবে প্রায়শই "ট্র্যাকিং শাখা" দিয়ে বিভ্রান্ত হয়)। --track-t
ক্রিস জনসন

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

124

সমস্ত শাখার জন্য:

git branch -avv

শুধুমাত্র স্থানীয় শাখার জন্য:

git branch -lvv

কেবল প্রত্যন্ত শাখার জন্য:

git branch -rvv

আপনাকে সমস্ত শাখা পাশাপাশি প্রবাহিত শাখার নাম দেখায়।


2
এটি এখন পর্যন্ত সবচেয়ে সহজ এবং পূর্ণ উত্তর!

6
গিট সংস্করণে ১.7..7. me এ এটি আমাকে স্থানীয় শাখা এবং শা -১ দেখায় যা এটি দেখিয়েছে তবে এটি ট্র্যাকড দূরবর্তী শাখাটি দেখায় না ...
এমপোনটিলো

গিট সংস্করণ 1.7.4.1 এ আমার জন্য কাজ করে দ্বিতীয় 'ভি' দূরবর্তী ট্র্যাকিং শাখাটি দেখানোর জন্য প্রয়োজনীয়।
পিটার জনসন

4
আউটপুট হ্রাস করতে git branch -lvvকেবল প্রবাহের স্থানীয় শাখাগুলি কার্যকর হতে পারে
এবি

5
^ git branch -vvআমার জন্য কাজ করে ...
notacouch

52

জেরেমি বাউস ট্র্যাকিংয়ের তথ্য কীভাবে git remote showপ্রদর্শন করে তা চিত্রিত করে । এটি কেবলমাত্র যদি আপনি মানুষের ব্যবহারের জন্য তথ্য চান তবে তা যথেষ্ট হবে।

যদি আপনি কোনও স্বয়ংক্রিয় প্রসঙ্গে তথ্যটি ব্যবহার করার পরিকল্পনা করেন (উদাহরণস্বরূপ স্ক্রিপ্ট) আপনার git for-each-refপরিবর্তে নিম্ন-স্তরের ("নদীর গভীরতানির্ণয়") ব্যবহার করা উচিত।

% git remote show origin
* remote origin
⋮
  Local branches configured for 'git pull':
    master merges with remote master
    pu     merges with remote pu
⋮
% git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads
master <- origin/master
pu <- origin/pu

git for-each-refশিখেছি %(upstream)মধ্যে টোকেন গীত 1.6.3 । গিটের পূর্ববর্তী সংস্করণগুলির সাথে আপনাকে ট্র্যাকিংয়ের তথ্যটি বের করতে হবে git config branch.<name>.remoteএবং git config branch.<name>.merge(সম্ভবত git for-each-refপ্রতিটি স্থানীয় শাখার নামের জন্য আদেশগুলি তৈরি করতে ব্যবহার করতে হবে)।


আপনার উত্তর আউটপুট অনেক বেশি সংক্ষিপ্ত এবং অনুসরণ করা সহজ, যাতে আপনি ভোট পেতে পারেন :)
কিউবানএক্স

এটিকে কম সাফল্যযুক্ত করার জন্য, তবে দূরবর্তী নামগুলি স্থানীয় শাখার নামগুলির মতো একই, দর্শনীয়ভাবে পরীক্ষা করার জন্য একটি দুর্দান্ত উপায় সরবরাহ করুন: ব্যাশgit for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
হাবসে

19

একটি নির্দিষ্ট শাখার জন্য, আপনি শাখার নামের উপর বা প্রত্যয় git rev-parseদিয়ে ব্যবহার করতে পারেন , যেমন:@{u}@{upstream}

$  git rev-parse --symbolic-full-name master@{u}
refs/remotes/github-mhl/master

... বা সংক্ষিপ্ত আকারের জন্য, যুক্ত করুন --abbrev-ref

$ git rev-parse --symbolic-full-name --abbrev-ref master@{u}
github-mhl/master

branch@{upstream}প্রতিশ্রুতি প্রত্যাশিত যেখানেই আপনি সাধারণত বাক্য গঠন ব্যবহার করতে পারেন ।


1
+1 আপনার উত্তর আমাকে ঠিক আমার যা প্রয়োজন তা দিয়েছে: git rev-parse --symbolic-full-name HEADবনাম git rev-parse --symbolic-full-name HEAD@{u}, ধন্যবাদ!
টিনো

10

git-tracksবর্তমান শাখার দ্বারা ট্র্যাক করা দূরবর্তী শাখাটি দেখানোর জন্য আমি নিম্নলিখিত শেল স্ক্রিপ্টটি (নামযুক্ত ) ব্যবহার করি :

#!/bin/sh -e
branch=$(git symbolic-ref HEAD)
branch=${branch##refs/heads/}
remote=$(git config "branch.${branch}.remote")
remoteBranch=$(git config "branch.${branch}.merge")
remoteBranch=${remoteBranch##refs/heads/}

echo "${remote:?}/${remoteBranch:?}"

এটি উল্লিখিতটিও ব্যবহার করতে পারে git for-each-refতবে আমি বর্তমান শাখার জন্য আউটপুট ফিল্টার করার চেয়ে সরাসরি অ্যাক্সেসটি কিছুটা সহজ পেয়েছি।


আপনি স্ক্রিপ্টের শীর্ষে "সেট-ই" ব্যবহার বিবেচনা করতে পারেন। এটি আপনাকে "|| প্রস্থান $" এর সমস্ত দৃষ্টান্ত সরাতে দেবে? একই ব্যর্থ-শুরুর আচরণ বজায় রাখার সময়।
জন হুইটলি 21

@ জনভিটলি: ধন্যবাদ, আমি আমার উত্তরটি সম্পাদনা করেছি। আমি জানি set -e, তবে সাধারণত স্পষ্ট চেকিংয়ে লেগে থাকি । তবে এই ক্ষেত্রে, এটি সত্যই ভাল।
ইনগো কারকাত

আমার জন্য কাজ করছে না git version 1.9.4। এত প্রতিধ্বনি কিছুই :(
ঐন

8

.git/config ফাইল হিসাবে ট্র্যাকিং শাখা তথ্য প্রদান করবে

[remote "Hub"]
    url = ssh://xxxx/tmp/Hub
    fetch = +refs/heads/*:refs/remotes/Hub/*
[branch "develop"]
    remote = Hub
    merge = refs/heads/develop
[branch "Dev1"]
    remote = Test
    merge = refs/heads/Dev1
[remote "Test"]
    url = ssh://xxxx/tmp/gittesting/Dev1GIT
    fetch = +refs/heads/*:refs/remotes/Test/*

5
git branch -vv

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


2

[alias]আপনার .gitconfig ফাইলের বিভাগে এই রুনগুলি যুক্ত করুন:

show-tracking = !sh -c 'git ls-remote . |grep `git log -1 --grep="git-svn-id" --format=%H`|perl -pe "s/[[:alnum:]]+[[:space:]]//"'

0

স্থানীয় শাখাগুলির একটি তালিকায় কাজ করে এমন একটি লুপের মধ্যে প্রতিটি স্থানীয় শাখার জন্য আমার সংশ্লিষ্ট দূরবর্তী শাখা (যদি থাকে) খুঁজে পাওয়া দরকার। আমি নিম্নলিখিত ব্যবহার করে শেষ:

git for-each-ref --format='%(refname:short):%(upstream:short)' refs/heads | grep "^LocalBranchName:.*/" | sed "s/^LocalBranchName://"

এটি স্থানীয় শাখাগুলির জন্য কোনও দূরবর্তী শাখা ("সামেরোমোট / সাম্র্যাঞ্চ") এর জন্য কিছুই (একটি ফাঁকা স্ট্রিং) আউটপুট দেবে।


-1

git branch বিকল্পগুলির সাথে চেষ্টা করুন :

 -r
List or delete (if used with -d) the remote-tracking branches. 

-a
List both remote-tracking branches and local branches. 

অন্যথায়, আপনার পরীক্ষা .git/config


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