Git හි ඇති දුරස්ථ ශාඛාව නිරීක්ෂණය කරන්නේ කුමන ප්‍රාදේශීය ශාඛාවදැයි කියන්නේ කෙසේද?


238

Git හි කුමන දුරස්ථ ශාඛාව නිරීක්ෂණය කරන්නේ කුමන ප්‍රාදේශීය ශාඛාවදැයි දැන ගැනීමට ක්‍රමයක් තිබේදැයි දැන ගැනීමට මම කැමතියි.

මම එක් දුරස්ථ සේවාදායකයක් භාවිතා කරමි, එය "සම්භවය" ලෙස නම් කර ඇත.


මා වැරදියි නම් මාව නිවැරදි කරන්න, කෙසේ වෙතත් එය දුරස්ථ ශාඛාවක් නොවේ, එය සේවාදායකයට වඩා පෙරනිමියෙන් සම්භවය ලෙස නම් කර තිබේද ??
ක්‍රිස් හැල්ක්‍රෝ

Answers:


198

මගේ රූකඩ පිටපතෙහි උදාහරණය භාවිතා කරමින් ගිතුබ්.කොම් හි උඩුමහලේ Git ගබඩාවෙන් පරීක්ෂා කර ඇත ...

$ 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
දේශීය ශාඛා කිහිපයක් තිබුණත් රූකඩයේ ඇති සියලුම දුරස්ථ ශාඛා නිරීක්ෂණය කළ හැකි බව මින් අදහස් වේ. විධානයේ ප්‍රති result ලයෙන් ඔබ දකින බොහෝ “ලුහුබැඳ ඇති” සං signs ා මොනවාද? කුමන දේශීය ශාඛාව විසින් "ලුහුබැඳ ඇත"?
පී.ජේ.

ඔබ කරන්න නම් දුරබැහැර ශාඛා දම්වැල් මත ධාවනය වන ඇත git fetchහෝ git pullදුරස්ථ ශාඛා යාවත්කාලීන ඔබගේ සියල්ල ඉවත්කල ගබඩාවේ දම්වැල් මත ධාවනය වන ඇත. දේශීය ශාඛා එපමණකි, දුරස්ථ ශාඛා වල දේශීය ශාඛා සහ ඒ අනුව දුරස්ථ ශාඛා සඳහා යාවත්කාලීන කිරීම් සොයාගෙන සුදුසු විධානයක් ලබා දුන් විට ඒවා ඒකාබද්ධ කෙරේ. දේශීය ශාඛාව ආරම්භ වූ ශාඛාව ලුහුබැඳීම සහතික කිරීම සඳහා '-t' විකල්පය මම පැහැදිලිවම ඇතුළත් කරමි. මතක තබා ගන්න ප්‍රාදේශීය ශාඛාවකට වෙනත් ප්‍රාදේශීය ශාඛාවක් නිරීක්ෂණය කළ හැකි බැවින් දුරස්ථ ශාඛාවක් විය යුතු නැත.
ජෙරමි බෝස්

5
JPJ: “ධාවන පථය” යන වචනයට Git හි පැහැදිලි අර්ථ දෙකක් ඇත. දී රේඛා "දම්වැල් මත ධාවනය වන" git remote show remote-nameවෙත යොමු වන්න "ට්රැකිං අතු" (දුරස්ථ නිධි වලින් ශාඛා snapshots). රේඛා "සමනල අඩවියෙන්" යනු ඇති බව දේශීය ශාඛා වෙත යොමු වන්න "ඉහළින් උමාඔයේ ශාඛා" වින්යාස (සමග සමඟ කළ --track/ -tවිකල්පය GIT ශාඛා හෝ GIT ලොව පුරාවටම හා ඒ නිසා බොහෝ විට "සොයා අතු" සමග පටලවා).
ක්‍රිස් ජොන්සන්

දුරස්ථ ලුහුබැඳීමේ ශාඛාව ” යනු ඉහත සඳහන් “ලුහුබැඳීමේ ශාඛා” සඳහා යාවත්කාලීන ටීකාවකි. ලේඛනය 8b3f3f84 හි යාවත්කාලීන කරන ලදි .
ento

126

සියලුම ශාඛා සඳහා:

git branch -avv

දේශීය ශාඛා සඳහා පමණි:

git branch -lvv

දුරස්ථ ශාඛා සඳහා පමණි:

git branch -rvv

සියලුම ශාඛා මෙන්ම උඩුමහලේ ශාඛාවේ නමද පෙන්වයි.


2
මෙය බොහෝ දුරට සරලම හා පූර්ණ පිළිතුරයි!

6
Git අනුවාදය 1.7.7.5 හි මෙය මට පෙන්වන්නේ දේශීය ශාඛාව සහ එය පෙන්වා දෙන ෂා -1, නමුත් එය ලුහුබැඳ ඇති දුරස්ථ ශාඛාව පෙන්වන්නේ නැත ...
mpontillo

Git අනුවාදය 1.7.4.1 හි මා වෙනුවෙන් ක්‍රියා කරයි දුරස්ථ ෙසොයා ගැනීෙම් ශාඛාව පෙන්වීමට දෙවන 'v' අවශ්‍ය ෙව්.
පීටර් ජොන්සන්

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)සංකේත Git 1.6.3 . Git හි පෙර සංස්කරණ සමඟ ඔබට ලුහුබැඳීමේ තොරතුරු උපුටා ගත යුතු 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නමුත් වර්තමාන ශාඛාව සඳහා ප්‍රතිදානය පෙරීමට වඩා access ජු ප්‍රවේශය තරමක් සරල බව මට පෙනී ගියේය.


ස්ක්‍රිප්ටයේ ඉහළින්ම "set -e" භාවිතා කිරීම ගැන සලකා බැලිය හැකිය. එමඟින් "|| පිටවීමේ $?" හි සියලුම අවස්ථා ඉවත් කිරීමට ඔබට ඉඩ සලසයි. එකම අසාර්ථක-මුල් හැසිරීම රඳවා ගනිමින්.
ජෝන් විට්ලි

@ ජෝන් විට්ලි: ස්තූතියි, මම මගේ පිළිතුර සංස්කරණය කළා. මම දනිමි 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/*

6
git branch -vv

ඔබ ඉල්ලන දේ හරියටම පෙන්වයි. එය දේශීය ශාඛා සහ ඔවුන් නිරීක්ෂණය කරන දුරස්ථ ශාඛාව සමඟ පෙන්වයි.


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://"

අනුරූප දුරස්ථ ශාඛාවක් නොමැති දේශීය ශාඛා සඳහා මෙය කිසිවක් (හිස් නූලක්) නිකුත් නොකරනු ඇත ("someremote / somebranch").


-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
ඔවුන් අතු පෙන්වයි, නමුත් කුමන ඒවා ලුහුබඳිනවාදැයි මට තේරෙන්නේ නැත.
පී.ජේ.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.