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


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

আমি একটি দূরবর্তী সার্ভার ব্যবহার করছি, যার নাম "মূল"।


231
2017-08-27 01:04


উত্স


আমি ভুল হলে আমাকে সংশোধন করুন তবে 'এটি একটি রিমোট শাখা যা সার্ভারের পরিবর্তে ডিফল্ট হিসাবে উদ্ভূত হয় ?? - Chris Halcrow


উত্তর:


Github.com এর আপস্ট্রিম গিট রিপোজিটরি থেকে চেক করা পপ্পেটের আমার কপিটির উদাহরণ ব্যবহার করে ...

$ 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

197
2017-08-27 03:03



এর মানে এই যে আপনি পুতুলের সমস্ত দূরবর্তী শাখাগুলি ট্র্যাক করতে পারেন যদিও আপনার কয়েকটি স্থানীয় শাখা রয়েছে। কত "ট্র্যাক" লক্ষণ আপনি কমান্ড ফলাফল দেখতে দেখুন? স্থানীয় শাখা দ্বারা "ট্র্যাক"? - PJ.
যদি আপনি একটি রিমোট শাখা ট্র্যাক করা হয় git fetch অথবা git pull দূরবর্তী শাখার আপডেটগুলি আপনার ক্লোনড সংগ্রহস্থলে ট্র্যাক করা হবে। স্থানীয় শাখাগুলি কেবলমাত্র, দূরবর্তী শাখার স্থানীয় শাখাগুলি এবং দূরবর্তী শাখায় আপডেটগুলি ট্র্যাক করা হবে এবং যথাযথ কমান্ড দেওয়া হলে তা মঞ্জুর করা হবে। স্থানীয় শাখাটি যখন এটি থেকে উৎপন্ন হওয়া শাখাকে ট্র্যাক করে তা নিশ্চিত করার জন্য আমি স্পষ্টভাবে '-t' বিকল্পটি অন্তর্ভুক্ত করি। একটি স্থানীয় শাখা মনে রাখবেন অন্য স্থানীয় শাখার ট্র্যাক করতে পারেন যাতে দূরবর্তী শাখা হতে হয় না। - Jeremy Bouse
@ পিজে: "ট্র্যাক" শব্দটির গিটে দুটি স্বতন্ত্র অর্থ রয়েছে। মধ্যে "ট্র্যাক" লাইন git remote show remote-name নির্দেশ করে "ট্র্যাকিং শাখা" (দূরবর্তী সংগ্রহস্থল থেকে শাখা স্ন্যাপশট)। "সাথে merge" লাইন একটি আছে স্থানীয় শাখার উল্লেখ "আপস্ট্রিম শাখা" কনফিগারেশন (সঙ্গে তৈরি --track/-t বিকল্প গিট শাখা অথবা জিট চেকআউট এবং এইভাবে প্রায়ই "ট্র্যাকিং শাখা" সঙ্গে বিভ্রান্ত)। - Chris Johnsen
"দূরবর্তী ট্র্যাকিং শাখা"উপরে উল্লিখিত" ট্র্যাকিং শাখার "জন্য আপ টু ডেট শব্দকোষ এন্ট্রি। ডক আপডেট করা হয়েছে 8b3f3f84। - ento


সব শাখার জন্য:

git branch -avv

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

git branch -lvv

শুধুমাত্র দূরবর্তী শাখা জন্য:

git branch -rvv

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


122
2018-02-14 16:02



এই পর্যন্ত সহজতম এবং পূর্ণতম উত্তর!
গিট সংস্করণ 1.7.7.5 এ এটি আমাকে স্থানীয় শাখায় দেখায় এবং শা -1 এটি নির্দেশ করে তবে এটি ট্র্যাক করা দূরবর্তী শাখাটি দেখায় না ... - mpontillo
গিট সংস্করণে আমার জন্য কাজ করে 1.7.4.1 দ্বিতীয় 'ভি' দূরবর্তী ট্র্যাকিং শাখা দেখানোর প্রয়োজন। - Peter Johnson
আউটপুট কমাতে git branch -lvv আপস্ট্রিম সঙ্গে স্থানীয় শাখা প্রদর্শন দরকারী হতে পারে - A B
^git branch -vv আমার জন্য কাজ কর... - notacouch


জেরেমি Bouse illustrates কিভাবে 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 প্রতিটি স্থানীয় শাখা নাম জন্য কমান্ড নির্মাণ করতে)।


52
2017-08-27 03:18



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


একটি বিশেষ শাখার জন্য, আপনি ব্যবহার করতে পারেন 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} একটি কমিট আশা করা হয় যেখানে সিনট্যাক্স।


18
2018-05-01 09:18



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


আমি নিম্নলিখিত শেল স্ক্রিপ্ট ব্যবহার করে (নাম 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, কিন্তু আমি বর্তমান শাখার জন্য আউটপুট ফিল্টারিং চেয়ে কিছুটা সহজ অ্যাক্সেস খুঁজে পেয়েছি।


10
2018-01-21 14:26



আপনি স্ক্রিপ্ট শীর্ষে "সেট-ই" ব্যবহার বিবেচনা করতে পারেন। এটি আপনাকে "সমস্ত $" প্রস্থান করার অনুমতি দেবে? একই ব্যর্থ-প্রাথমিক আচরণ বজায় রাখা। - John Whitley
@ জনহিটলি: ধন্যবাদ, আমি আমার উত্তর সম্পাদনা করেছি। আমি সম্পর্কে জানি set -e, কিন্তু সাধারণত স্পষ্ট পরীক্ষণ লাঠি। কিন্তু এই ক্ষেত্রে, এটা সত্যিই ভাল। - Ingo Karkat
আমার জন্য কাজ করছে না git version 1.9.4। Echos কিছুই নেই :( - Ain


.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/*

8
2017-10-11 12:59





git branch -vv

আপনি কি জিজ্ঞাসা ঠিক দেখাচ্ছে। এটি স্থানীয় ট্রাঙ্কগুলিকে তারা সংশ্লিষ্ট ট্র্যাকিং শাখাগুলির সাথে একত্রে দেখায়।


5
2018-05-07 07:50





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

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

2
2018-03-07 16:48





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

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

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


0
2017-11-23 00:08