මෙයද බලන්න:
කුමන දුරස්ථ / උඩු මහලේ ශාඛාව නිරීක්ෂණය කරන්නේ කුමන Git ශාඛා දැයි මා දකින්නේ කෙසේද?
දේශීය ශාඛාවක් ලුහුබඳින දුරස්ථ ශාඛාව සොයා ගන්නේ කෙසේද?
මට git config
ප්රතිදානය විග්රහ කිරීමට අවශ්යද , නැතහොත් මා වෙනුවෙන් මෙය කළ හැකි විධානයක් තිබේද?
මෙයද බලන්න:
කුමන දුරස්ථ / උඩු මහලේ ශාඛාව නිරීක්ෂණය කරන්නේ කුමන Git ශාඛා දැයි මා දකින්නේ කෙසේද?
දේශීය ශාඛාවක් ලුහුබඳින දුරස්ථ ශාඛාව සොයා ගන්නේ කෙසේද?
මට git config
ප්රතිදානය විග්රහ කිරීමට අවශ්යද , නැතහොත් මා වෙනුවෙන් මෙය කළ හැකි විධානයක් තිබේද?
Answers:
මෙන්න ඔබට සියලු ලුහුබැඳීම් ශාඛා ලබා දෙන විධානයක් ('අදින්න' සඳහා වින්යාස කර ඇත), බලන්න:
$ git branch -vv
main aaf02f0 [main/master: ahead 25] Some other commit
* master add0a03 [jdsumsion/master] Some commit
ඔබට SHA හරහා ගමන් කළ යුතු අතර ඕනෑම දිගු පණිවිඩයක් එවිය යුතුය, නමුත් එය ටයිප් කිරීමට ඉක්මන් වන අතර 3 වන තීරුවේ සිරස් අතට පෙළගැස්වීමේ ශාඛා ලබා ගනිමි.
එක් ශාඛාවකට 'අදින්න' සහ 'තල්ලු කරන්න' යන වින්යාසය පිළිබඳ තොරතුරු ඔබට අවශ්ය නම්, අනෙක් පිළිතුර බලන්න git remote show origin
.
යාවත්කාලීන කරන්න
Git අනුවාදය 1.8.5 සිට ආරම්භ කර ඔබට උඩු මහලේ ශාඛාව git status
සහ සමඟ පෙන්විය හැකියgit status -sb
git branch -av
git remote show origin
git status
හා git status -sb
- ඔබ 1.8.5.x ලෙස ප්රගමනය වරක් එම නිසා, මේ ප්රශ්නය (පිළිතුරු) අදාල නොවේ.
තේරීම් දෙකක්:
% git rev-parse --abbrev-ref --symbolic-full-name @{u}
origin/mainline
හෝ
% git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"
origin/mainline
%(refname:short)
යනු දැනට පවතින ref හි නමයි --format
.
git help revisions
(ලේඛනයේ එතරම් ප්රසිද්ධ නැති නමුත් වඩාත්ම ප්රයෝජනවත් කොටස් වලින් එකක්) සහ සෙවීම upstream
.
git diff `git rev-parse --abbrev-ref --symbolic-full-name @{upstream}`
echo 'git for-each-ref --format=\'%(refname:short) -> %(upstream:short)\' refs/heads/$1' > ~/bin/git-show-upstream; chmod +x ~/bin/git-show-upstream
git for-each-ref --format='%(upstream:short)' $(git rev-parse --symbolic-full-name SOMEBRANCH)
උඩුමහල සොයා ගැනීමට අවශ්ය නම්, දෙවන තේරීමෙහි ප්රභේදයක් නම්: සමහර ශාඛා ශාඛා නාමයෙන් ආදේශ කිරීම හෝ වත්මන් ශාඛාව සඳහා “හෙඩ්”
මම හිතන්නේ git branch -av
ඔබට කියන්නේ ඔබ සතුව ඇති ශාඛා මොනවාද සහ ඒවා කුමන කැපවීමකින්ද යන්න, දේශීය ශාඛා ලුහුබඳින දුරස්ථ ශාඛා මොනවාදැයි අනුමාන කිරීමට ඔබට ඉඩ සලසයි.
git remote show origin
කුමන දුරස්ථ ශාඛා නිරීක්ෂණය කරන්නේ කුමන ශාඛාද යන්න පැහැදිලිව ඔබට කියයි. තනි කැපවීමක් සහ දුරස්ථ ශාඛාවක් සහිත ගබඩාවක නිමැවුම් මෙන්න abranch
:
$ git branch -av
* abranch d875bf4 initial commit
master d875bf4 initial commit
remotes/origin/HEAD -> origin/master
remotes/origin/abranch d875bf4 initial commit
remotes/origin/master d875bf4 initial commit
එදිරිව
$ git remote show origin
* remote origin
Fetch URL: /home/ageorge/tmp/d/../exrepo/
Push URL: /home/ageorge/tmp/d/../exrepo/
HEAD branch (remote HEAD is ambiguous, may be one of the following):
abranch
master
Remote branches:
abranch tracked
master tracked
Local branches configured for 'git pull':
abranch merges with remote abranch
master merges with remote master
Local refs configured for 'git push':
abranch pushes to abranch (up to date)
master pushes to master (up to date)
git remote show origin
ඔබට දේශීය ශාඛා පෙන්වන අතර ඒවා තල්ලු කිරීම සහ අදින්න යන දෙකම සොයා ගනී.
origin
අතර එය ඇත්ත වශයෙන්ම ඕනෑම දෙයක් විය හැකි යැයි උපකල්පනය කරයි (උදා: බහු දුරස්ථ, විවිධ ශාඛා විවිධ දුරස්ථ වලින් අතු ලුහුබඳින).
යාවත්කාලීන කිරීම: හොඳයි, මම මෙය පළ කර වසර කිහිපයක් ගත වී ඇත! HEAD උඩුමහලට සංසන්දනය කිරීමේ මගේ නිශ්චිත අරමුණ සඳහා, මම දැන් භාවිතා කරමි @{u}
, එය උඩුමහලේ ලුහුබැඳීමේ ශාඛාවේ HEAD ගැන සඳහන් කරන කෙටිමඟකි. ( Https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem බලන්න ).
මුල් පිළිතුර: මම මෙම ගැටලුව ද විසඳා ඇත්තෙමි. මම බොහෝ විට තනි ගබඩාවක බහුවිධ දුරස්ථ කිරීම් භාවිතා කරන අතර, ඔබේ වර්තමාන ශාඛාව සොයා ගන්නේ කුමන එකකටද යන්න අමතක කිරීම පහසුය. සමහර විට එය දැන ගැනීම පහසුය, එනම් ඔබේ දේශීය කොමිස් හරහා බැලීමට ඔබට අවශ්ය විටදී වැනි git log remotename/branchname..HEAD
.
මේ සියල්ල git config විචල්යයන් තුළ ගබඩා කර ඇත, නමුත් ඔබට git config ප්රතිදානය විග්රහ කිරීමට අවශ්ය නැත. ඔබ විචල්යයක නමට පසුව git වින්යාසය ඉල්ලා සිටියහොත්, එය එම විචල්යයේ අගය මුද්රණය කරනු ඇත, විග්රහ කිරීම අවශ්ය නොවේ. එය මනසේ තබාගෙන, ඔබේ වර්තමාන ශාඛාවේ ලුහුබැඳීම් සැකසුම පිළිබඳ තොරතුරු ලබා ගැනීම සඳහා විධාන කිහිපයක් මෙන්න:
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
මගේ නඩුවේ, මගේ වර්තමාන දුරස්ථයේ නම සොයා ගැනීමට මා උනන්දු වන බැවින්, මම මෙය කරන්නේ:
git config branch.`git name-rev --name-only HEAD`.remote
git name-rev --name-only HEAD
ඔයා ඇත්තටම මොන ශාඛාවේද කියලා කියන්නේ නැහැ. ඒ සඳහා මම දැන් භාවිතා කළෙමිgit branch | grep '^\*' | cut -d' ' -f2
@{u}
අන්වර්ථ / කෙටිමං ගැන සඳහන් නොවූ අතර මම සොයන දේ එයයි! ඔබට අදින්න අවශ්යද නැද්ද යන්න තීරණය කිරීමට අවශ්ය නම් ප්රධාන ශාඛාව සමඟ සංසන්දනය කිරීමට හේතුවක් නැත.
@{u}
බෝම්බය. 1.7.0 සිට පැවත එන අතර, එයින් අදහස් වන්නේ එය 2018 දී යමෙකු භාවිතා කරන කට්ටලයක නොමැති නම්, ඒවා බොහෝ විට වැඩිදියුණු කිරීමට හේතු විය හැකි බවයි.
දේශීය ශාඛා සහ ඒවායේ දුරස්ථ.
git branch -vv
සියලුම ශාඛා සහ ලුහුබැඳීම් දුරස්ථ.
git branch -a -vv
තල්ලු කිරීම සහ අදින්න සඳහා දේශීය ශාඛා පැහැදිලිව වින්යාස කර ඇති ස්ථානය බලන්න.
git remote show {remote_name}
git remote show origin
ඇත්ත වශයෙන්ම මගේ දුරස්ථයේ url එක පෙන්වයි.
මෙය ඔබ සිටින ශාඛාව පෙන්වයි:
$ git branch -vv
මෙය පෙන්වන්නේ ඔබ දැනට සිටින ශාඛාව පමණි :
$ git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)
උදාහරණයක් වශයෙන්:
myremote/mybranch
ඔබ යන URL එක හොයාගන්න පුළුවන් දුරස්ථ විසින් භාවිත කරනු ලබන බව වත්මන් ශාඛා ඔබ සමඟ මත ය:
$ git remote get-url $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)|cut -d/ -f1)
උදාහරණයක් වශයෙන්:
https://github.com/someone/somerepo.git
ඔබට භාවිතා කළ හැකිය git checkout
, එනම් "වත්මන් ශාඛාව පරීක්ෂා කරන්න". වර්තමාන ශාඛාව සඳහා ලුහුබැඳීමේ තොරතුරු තිබේ නම් එය පෙන්වීමට අතුරු ආබාධ සහිත විකල්පයක් නොවේ.
$ git checkout
Your branch is up-to-date with 'origin/master'.
මෙය git වින්යාසයේ ප්රතිදානය විග්රහ කිරීමක් දැයි මම නොදනිමි, නමුත් මෙය මාස්ටර් ලුහුබඳින දුරස්ථයේ URL එක තීරණය කරයි:
$ git config remote. $ (git config branch.master.remote) .url
git config branch.$(git symbolic-ref -q HEAD).remote
ඔබට අවශ්ය නම් දුරස්ථයේ නම වත්මන් ශාඛාවේ ලුහුබැඳීමයි git config remote.$(git config branch.$(git symbolic-ref -q HEAD).remote).url
the URL සඳහා.
--short
විකල්පයක් එක් කිරීමට අවශ්ය වූ නිසා එය ක්රියාත්මක වේ. එබැවින් වත්මන් ශාඛාවේ දුරස්ථ නම git config branch.$(git symbolic-ref -q --short HEAD).remote
ලබා ගැනීම සඳහා : සහ වත්මන් ශාඛාවේ දුරස්ථයේ URL ලබා ගැනීම සඳහා:git config remote.$(git config branch.$(git symbolic-ref -q --short HEAD).remote).url
තවත් සරල ක්රමයක් වන්නේ භාවිතා කිරීමයි
cat .git/config
git repo එකක
මෙය දේශීය ශාඛා සඳහා විස්තර ලැයිස්තුගත කරනු ඇත
type .git/config
වෙනුවට භාවිතා කරන්න cat .git/config
..
git branch -vv | grep 'BRANCH_NAME'
git branch -vv
: මෙම කොටස සියළුම දේශීය ශාඛා සහ ඒවායේ උඩුමහලේ ශාඛාව පෙන්වනු ඇත.
grep 'BRANCH_NAME'
: එය ශාඛා ලැයිස්තුවෙන් වත්මන් ශාඛාව පෙරහන් කරනු ඇත.
තවත් ක්රමයක් (ස්තූතියි osse), ඔබට එය තිබේද නැද්ද යන්න දැන ගැනීමට අවශ්ය නම්:
if git rev-parse @{u} > /dev/null 2>&1
then
printf "has an upstream\n"
else
printf "has no upstream\n"
fi
git branch -r -vv
දුරස්ථ ඇතුළුව සියලුම ශාඛා ලැයිස්තුගත කරයි.
git-status පෝසිලේන් (යන්ත්ර කියවිය හැකි) v2 ප්රතිදානය මේ වගේ ය:
$ git status -b --porcelain=v2
# branch.oid d0de00da833720abb1cefe7356493d773140b460
# branch.head the-branch-name
# branch.upstream gitlab/the-branch-name
# branch.ab +2 -2
ශාඛාව ඉහළට ලබා ගැනීම සඳහා පමණි:
$ git status -b --porcelain=v2 | grep -m 1 "^# branch.upstream " | cut -d " " -f 3-
gitlab/the-branch-name
ශාඛාවට උඩු මහලක් නොමැති නම්, ඉහත විධානය මඟින් හිස් ප්රතිදානයක් ලබා දෙනු ඇත (හෝ අසමත් වේ set -o pipefail
).
ඔබට ඕනෑම ශාඛාවක් සඳහා උඩුමහල සොයා ගැනීමට අවශ්ය නම් (ඔබ දැනට සිටින ශාඛාවට වඩා වෙනස්ව), @ cdunn2001 හි පිළිතුරට සුළු වෙනස් කිරීමක් මෙහි දැක්වේ:
git rev-parse --abbrev-ref --symbolic-full-name YOUR_LOCAL_BRANCH_NAME@{upstream}
එමඟින් ඔබට නම් කරන ලද දේශීය ශාඛාව සඳහා දුරස්ථ ශාඛා නාමය ලබා දෙනු ඇත YOUR_LOCAL_BRANCH_NAME
.
ඔබට මෙය උත්සාහ කළ හැකිය:
git remote show origin | grep "branch_name"
branch_name
ඔබේ ශාඛාව සමඟ ප්රතිස්ථාපනය කළ යුතුය
git remote show origin
- එය නම් කරනවා නම් merges
හෝ configure
?
.
හි ඕනෑම අක්ෂරයක් "v314" ට ගැලපෙනු ඇත ...
මම මේ අන්වර්ථය භාවිතා කරමි
git config --global alias.track '!sh -c "
if [ \$# -eq 2 ]
then
echo \"Setting tracking for branch \" \$1 \" -> \" \$2;
git branch --set-upstream \$1 \$2;
else
git for-each-ref --format=\"local: %(refname:short) <--sync--> remote: %(upstream:short)\" refs/heads && echo --URLs && git remote -v;
fi
" -'
එවිට
git track
ලුහුබැඳීම සැකසීමට ස්ක්රිප්ට් භාවිතා කළ හැකි බව සලකන්න.
Https://github.com/orefalo/bash-profiles හි තවත් විශිෂ්ට අන්වර්ථ නාම
මෙම පිළිතුර වැඩිදියුණු කරමින් මම මෙම .gitconfig
අන්වර්ථ නාමයන් ඉදිරිපත් කළෙමි :
branch-name = "symbolic-ref --short HEAD"
branch-remote-fetch = !"branch=$(git branch-name) && git config branch.\"$branch\".remote || echo origin #"
branch-remote-push = !"branch=$(git branch-name) && git config branch.\"$branch\".pushRemote || git config remote.pushDefault || git branch-remote-fetch #"
branch-url-fetch = !"remote=$(git branch-remote-fetch) && git remote get-url \"$remote\" #" # cognizant of insteadOf
branch-url-push = !"remote=$(git branch-remote-push ) && git remote get-url --push \"$remote\" #" # cognizant of pushInsteadOf
ඔබ Gradle භාවිතා කරන්නේ නම්,
def gitHash = new ByteArrayOutputStream()
project.exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = gitHash
}
def gitBranch = new ByteArrayOutputStream()
project.exec {
def gitCmd = "git symbolic-ref --short -q HEAD || git branch -rq --contains "+getGitHash()+" | sed -e '2,\$d' -e 's/\\(.*\\)\\/\\(.*\\)\$/\\2/' || echo 'master'"
commandLine "bash", "-c", "${gitCmd}"
standardOutput = gitBranch
}
මෙහි ඇති සියලු විසඳුම් අත්හදා බැලීමෙන් පසුව, මම තේරුම් ගත්තා ඒ කිසිවක් සෑම තත්වයකදීම හොඳ නැති බව:
මෙම විධානයට සියලු නම් ලැබේ:
git branch -a --contains HEAD --list --format='%(refname:short)'
මගේ යෙදුම සඳහා, මට HEAD & master refs පෙරීමට, දුරස්ථ ref වලට වැඩි කැමැත්තක් දැක්වීමට සහ 'සම්භවය /' යන වචනය ඉවත් කිරීමට සිදු විය. එය සොයාගත නොහැකි නම්, එහි /
හෝ a නොමැති පළමු HEAD නොවන ref භාවිතා කරන්න (
.
පහත දැක්වෙන විධානය මඟින් දුරස්ථ සම්භවයක් ඇති වත්මන් දෙබලක යොමු වේ
git remote -v
දුරස්ථ මාර්ගයක් එක් කිරීම සඳහා,
git දුරස්ථ එකතු කිරීමේ සම්භවය path_name
මම EasyGit (aka "උදා") භාවිතා කරමි මුදුනේ (හෝ පැත්තෙන්) සුපිරි සැහැල්ලු . EasyGit හි "තොරතුරු" උප කමාන්ඩ් එකක් ඇති අතර එය වර්තමාන ශාඛා දුරස්ථ ෙසොයා ගැනීෙම් ශාඛාව ඇතුළුව සියලු වර්ගවල සුපිරි ප්රයෝජනවත් තොරතුරු ලබා දෙයි. මෙන්න උදාහරණයක් (වර්තමාන ශාඛාවේ නම "foo"):
pknotz @ s883422: (foo) work / වැඩබිම / bd . උදා. තොරතුරු මුළු කොමිස්: 175 දේශීය ගබඩාව: .git නම් කරන ලද දුරස්ථ ගබඩාවන්: (නම -> ස්ථානය) සම්භවය -> git: //sahp7577/home/pknotz/bd.git වත්මන් ශාඛාව: foo ගුප්ත ලේඛන චෙක්සම් (sha1sum): bd248d1de7d759eb48e8b5ff3bfb3bb0eca4c5bf පෙරනිමි අදින්න / තල්ලු කිරීමේ ගබඩාව: සම්භවය පෙරනිමි අදින්න / තල්ලු කිරීමේ විකල්ප: branch.foo.remote = සම්භවය branch.foo.merge = refs / head / aal_devel_1 දායකයින් සංඛ්යාව: 3 ගොනු ගණන: 28 නාමාවලි ගණන: 20 විශාලතම ගොනු ප්රමාණය, බයිට් වලින්: 32473 (pygooglechart-0.2.0 / COPYING) කොමිස්: 62
git remote show origin
. අනෙක් ප්රශ්නයේ ප්රධාන පිළිතුර මෙහි ඇති සරල පිළිතුර වටා ඔතා ඇති බෑෂ් පිටපතකි, එය සමහරුන්ට ප්රයෝජනවත් විය හැකිය. මෙම ප්රශ්නය සම්පූර්ණයෙන්ම වසා නොදමනු ඇතැයි අපේක්ෂා කරමු.