Git හි කුමන දුරස්ථ ශාඛාව නිරීක්ෂණය කරන්නේ කුමන ප්රාදේශීය ශාඛාවදැයි දැන ගැනීමට ක්රමයක් තිබේදැයි දැන ගැනීමට මම කැමතියි.
මම එක් දුරස්ථ සේවාදායකයක් භාවිතා කරමි, එය "සම්භවය" ලෙස නම් කර ඇත.
Git හි කුමන දුරස්ථ ශාඛාව නිරීක්ෂණය කරන්නේ කුමන ප්රාදේශීය ශාඛාවදැයි දැන ගැනීමට ක්රමයක් තිබේදැයි දැන ගැනීමට මම කැමතියි.
මම එක් දුරස්ථ සේවාදායකයක් භාවිතා කරමි, එය "සම්භවය" ලෙස නම් කර ඇත.
Answers:
මගේ රූකඩ පිටපතෙහි උදාහරණය භාවිතා කරමින් ගිතුබ්.කොම් හි උඩුමහලේ 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
git fetch
හෝ git pull
දුරස්ථ ශාඛා යාවත්කාලීන ඔබගේ සියල්ල ඉවත්කල ගබඩාවේ දම්වැල් මත ධාවනය වන ඇත. දේශීය ශාඛා එපමණකි, දුරස්ථ ශාඛා වල දේශීය ශාඛා සහ ඒ අනුව දුරස්ථ ශාඛා සඳහා යාවත්කාලීන කිරීම් සොයාගෙන සුදුසු විධානයක් ලබා දුන් විට ඒවා ඒකාබද්ධ කෙරේ. දේශීය ශාඛාව ආරම්භ වූ ශාඛාව ලුහුබැඳීම සහතික කිරීම සඳහා '-t' විකල්පය මම පැහැදිලිවම ඇතුළත් කරමි. මතක තබා ගන්න ප්රාදේශීය ශාඛාවකට වෙනත් ප්රාදේශීය ශාඛාවක් නිරීක්ෂණය කළ හැකි බැවින් දුරස්ථ ශාඛාවක් විය යුතු නැත.
git remote show remote-name
වෙත යොමු වන්න "ට්රැකිං අතු" (දුරස්ථ නිධි වලින් ශාඛා snapshots). රේඛා "සමනල අඩවියෙන්" යනු ඇති බව දේශීය ශාඛා වෙත යොමු වන්න "ඉහළින් උමාඔයේ ශාඛා" වින්යාස (සමග සමඟ කළ --track
/ -t
විකල්පය GIT ශාඛා හෝ GIT ලොව පුරාවටම හා ඒ නිසා බොහෝ විට "සොයා අතු" සමග පටලවා).
සියලුම ශාඛා සඳහා:
git branch -avv
දේශීය ශාඛා සඳහා පමණි:
git branch -lvv
දුරස්ථ ශාඛා සඳහා පමණි:
git branch -rvv
සියලුම ශාඛා මෙන්ම උඩුමහලේ ශාඛාවේ නමද පෙන්වයි.
git branch -lvv
ඇති දේශීය ශාඛා පමණක් ප්රයෝජනවත් විය හැකිය
git branch -vv
මට වැඩ ...
ජෙරමි බෝස් විසින් ලුහුබැඳීමේ තොරතුරු පෙන්වන ආකාරය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'
විශේෂිත ශාඛාවක් සඳහා, ඔබට ශාඛා නාමයේ හෝ උපසර්ගය 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}
බැඳීමක් අපේක්ෂා කරන ඕනෑම තැනක ඔබට සාමාන්යයෙන් වාක්ය ඛණ්ඩය භාවිතා කළ හැකිය .
git rev-parse --symbolic-full-name HEAD
එදිරිව git rev-parse --symbolic-full-name HEAD@{u}
, ස්තූතියි!
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
, නමුත් සාමාන්යයෙන් පැහැදිලි පරීක්ෂාවට ඇලී සිටින්න. නමුත් මේ අවස්ථාවේ දී, එය ඇත්තෙන්ම වඩා හොඳ ය.
git version 1.9.4
. කිසිවක් ප්රතිරාවය නොකරයි :(
.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/*
දේශීය ශාඛා ලැයිස්තුවක් මත ක්රියා කරන ලූපයක් තුළ එක් එක් ප්රාදේශීය ශාඛාව සඳහා අනුරූප දුරස්ථ ශාඛාව (ඇත්නම්) සොයා ගැනීමට මට අවශ්ය විය. මම පහත සඳහන් දෑ භාවිතා කර අවසන් කළෙමි:
git for-each-ref --format='%(refname:short):%(upstream:short)' refs/heads | grep "^LocalBranchName:.*/" | sed "s/^LocalBranchName://"
අනුරූප දුරස්ථ ශාඛාවක් නොමැති දේශීය ශාඛා සඳහා මෙය කිසිවක් (හිස් නූලක්) නිකුත් නොකරනු ඇත ("someremote / somebranch").
උත්සාහ කරන්න 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
.