දේශීය Git ගබඩාවක් මුලින් ක්ලෝන කරන ලද URL එක තීරණය කරන්නේ කෙසේද?


4107

මම මීට දින කිහිපයකට පෙර GitHub වෙතින් ව්‍යාපෘතියක් ඇද ගත්තෙමි. GitHub හි දෙබලක ඇති බව මම එතැන් සිට සොයාගෙන ඇති අතර, මම මුලින් ගත් එකක් සටහන් කිරීම නොසලකා හැරියෙමි. මා ඇදගත් කුමන දෙබලකද යන්න තීරණය කරන්නේ කෙසේද?


163
Git 2.7 (Q4 2015) සමඟ, git remote get-url originහැකි වනු ඇත. බලන්න මගේ පිළිතුර පහත
VonC


21
git remote get-url originමට වැඩ කරන්නේ නැහැ - සමහර විට අතහැර දැමිය හැකිද? git remote show originවැඩ කළා.
ක්ලික්

48
git remote -vමේ ඇතුළුව ඔබට බොහෝ තොරතුරු ලබා දෙන්න.
Thorbj Rrn Ravn Andersen

git remote get-url origin --pushහොඳින් ක්‍රියා කරයි, පෙනෙන ලෙස ක්ෂය වී නැති අතර ලස්සන කෙටි තොරතුරු සපයයි ( ඉතා වාචික git remote show originවිය හැකිය ) qv . git help remote
නීල් ජී

Answers:


5771

ඔබට අවශ්‍ය වන්නේ දුරස්ථ URL ය, හෝ දුරස්ථ repo වෙත ළඟා විය හැකි ජාලයකට ඔබ සම්බන්ධ නොවන්නේ නම්:

git config --get remote.origin.url

ඔබට සම්පූර්ණ ප්‍රතිදානය අවශ්‍ය නම් සහ ඔබ සිටින්නේ ජාලයක නම්, මූලාරම්භය පිහිටා ඇති දුරස්ථ ගබඩාවට ළඟා විය හැකිය:

git remote show origin

භාවිතා කරන විට git clone(GitHub වෙතින්, හෝ ඒ සඳහා වන ඕනෑම ප්‍රභව ගබඩාවකින්) ක්ලෝනයේ ප්‍රභවයේ පෙරනිමි නම “සම්භවය” වේ. භාවිතා කිරීමෙන් git remote showමෙම දුරස්ථ නාමය පිළිබඳ තොරතුරු පෙන්වනු ඇත. පළමු පේළි කිහිපය පෙන්විය යුත්තේ:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: git@github.com:jaredpar/VsVim.git
  Push  URL: git@github.com:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

ඔබට ස්ක්‍රිප්ටයේ අගය භාවිතා කිරීමට අවශ්‍ය නම්, මෙම පිළිතුරේ ලැයිස්තුගත කර ඇති පළමු විධානය භාවිතා කරනු ඇත.


2
ඇමසන්-එස් 3 සමඟ jgit භාවිතා කරන්නේ නම් පහත විස්තර කර ඇති පරිදි git වින්‍යාසය භාවිතා කරන්න.
බැරිකු

6
මුල් ප්‍රශ්නයේ අරමුණට අදාළ නොවුවද, දුරස්ථ නිශ්චිතව සඳහා "තල්ලු URL" සහ බහු URL ලබා ගැනීමට උත්සාහ කරන්නේ නම්, ඔබ භාවිතා කිරීමට අවශ්‍ය වනු ඇත git remote show origin(විකල්පයක් ලෙස provided විසින් සපයන ලද -n ධජය සමඟ) කේසි), හෝ git remote -v@ මොන්ටාරෝ සහ @ රොඩෙල් යෝජනා කළ පරිදි.
Amazing

මෙය ලියා ඇත්තේ කුමන ගොනුවටද? .gitconfigගොනුවේ එය ඇතැයි මම සිතුවෙමි , නමුත් මම එය මගේ දැක නැත.
ayjay

1
jayjay ´~/.gitconfigසියළුම gitගබඩාවලට ගෝලීය ය , මෙය මෙහි පැමිණෙන්නේ සාමාන්‍යයෙන් පවතින දේශීය වින්‍යාසයෙනි .git/config(කෙසේ වෙතත් git-subodules සඳහා පිළිතුර ටිකක් අපහසු වේ). strace git config --get remote.origin.urlඑය ඔබේ මිතුරා බව සලකන්න .
ටිනෝ

1
නමුත් මුල් URL එක දැනට භාවිතා කරන දුරස්ථයේ URL විය යුතු නැත. සත්‍ය වශයෙන්ම භාවිතා කළ URL එක පෙන්වීමට ඔබට මෙම විසඳුම අවශ්‍ය වනු ඇත: stackoverflow.com/a/40630957/1069083
rubo77

621

ස්ක්‍රිප්ටින් අරමුණු සඳහා ඔබට මෙය අවශ්‍ය නම්, ඔබට ලබා ගත හැක්කේ URL සමඟ පමණි

git config --get remote.origin.url

38
මෙය නිවැරදි පිළිතුරයි. දුරස්ථ යූආර්එල් තවදුරටත් ලබා ගත නොහැකි නම් එය වේගවත් වන අතර එය පවා ක්‍රියා කරයි ( git remote show origin"කොන්ක්: නිධිය නොපවතී" යනුවෙන් පෙන්වයි).
apfelbox

5
වින්‍යාස විකල්පය නිසා මෙය නිවැරදි පිළිතුර නොවේ url.<base>.insteadOf. මගේ පිළිතුර බලන්න - මේ සඳහා git ට විධානයක් ඇත.
කාල් සුස්ටර්

2
@arcresu Cool, ඔබට +1! මගේ ආරක්ෂාව සඳහා, එම විධානය 2011 මාර්තු දක්වා එකතු කර නොතිබූ අතර එය 2012 සැප්තැම්බර් දක්වා ලේඛනගත කර නොමැත.
කැස්කබෙල්

1
At කැට්ස්කුල් පමණක් --git-dir අදාළ වේ (වින්‍යාසය වැඩ කරන ස්ථානයෙන් ස්වාධීනව git dir හි ඇත), එය මට වැඩ කරයි. ඔබට විශ්වාසද? සත්‍ය .git dir සඳහා මාර්ගය නියම කර ඇති බව, එහි මව් නාමාවලිය නොවේද?
කැස්කබෙල්

555

ඔබට උත්සාහ කළ හැකිය:

git remote -v

එමඟින් ඔබගේ සියලුම දුරස්ථ වල ලබා ගැනීමේ / තල්ලු කිරීමේ URL මුද්‍රණය වේ.


255

පිළිතුර ලබා ගැනීම සඳහා:

git ls-remote --get-url [REMOTE]

වින්‍යාසය කියවීමට වඩා මෙය හොඳ ය; මේ සඳහා man පිටුව බලන්නgit-ls-remote :

--get-url

කිසියම් "url.<base>.insteadOf"වින්‍යාස සැකසීමක් සැලකිල්ලට ගනිමින් ලබා දී ඇති දුරස්ථ ගබඩාවේ URL පුළුල් කරන්න (බලන්න git-config(1)) සහ දුරස්ථය සමඟ කතා නොකර පිටවන්න.

Ef ජෙෆ්රොමි විසින් පෙන්වා දුන් පරිදි, මෙම විකල්පය v1.7.5 හි එකතු කරන ලද අතර v1.7.12.2 ( 2012-09 ) දක්වා ලේඛනගත කර නොමැත .


2
හොඳ එකක්: මෙය පෙර සංස්කරණ සඳහා ද ලබා දෙනු ඇත> git remote -v | grep
fetch

1
මම හිතන්නේ අනෙක් පිළිතුරු බොහෝමයක් git විධාන ගැන පෙන්වීමට හා කීමට වඩා වැඩි යමක් වන අතර git ඉතිහාසය පිළිබඳ නිරූපණයකි. ඔබගේ උඩුගං බලා යැයි නොසිතන එකම පිළිතුර මෙයයි origin.
මයික් ඩී

පැරණි remote get-urlවිකල්පය සඳහා වඩාත්ම සෘජු ප්රතිස්ථාපනය මෙයයි . එය අතහැර දැමීමේ ආදේශනයකි.
ක්ලාටු වොන් ෂ්ලකර්

111

Git 2.7 සමඟ (2015 ජනවාරි 5 නිකුත් කරන්න), ඔබට මෙය භාවිතා කරමින් වඩාත් සුහද විසඳුමක් ඇත git remote:

git remote get-url origin

(ලස්සන පෙන්ඩන්ට් git remote set-url origin <newurl>)

බලන්න 96f78d3 සිදු විසින් (16 සැප්තැම්බර් 2015) බෙන් Boeckel ( mathstuf) .
(විසින් අලුතින් ඒකාබද්ධ ජූනි සී Hamano - gitster- දී e437cbd සිදු 05 ඔක්තෝබර් 2015,) :

දුරස්ථ: get-url උප කමාන්ඩ් එක් කරන්න

පුළුල් කිරීම insteadOfයනු කොටසක් වන ls-remote --urlඅතර පුළුල් කිරීමට pushInsteadOfද ක්‍රමයක් නොමැත . දෙකම විමසීමට හැකි වන පරිදි උප
විධානයක් get-urlමෙන්ම සියලු වින්‍යාසගත URL ලබා ගැනීමට මාර්ගයක් එක් කරන්න.

get-url:

දුරස්ථයක් සඳහා URL ලබා ගනී.
සඳහා මානකරණ insteadOfහා pushInsteadOfමෙහි පුළුල් කර ඇත.
පෙරනිමියෙන්, ලැයිස්තුගත කර ඇත්තේ පළමු URL ය.

  • ' --push' සමඟ , URL ලබා ගැනීමට වඩා තල්ලු URL විමසනු ලැබේ.
  • ' --all' සමඟ , දුරස්ථය සඳහා වන සියලුම URL ලැයිස්තුගත කෙරේ.

Git 2.7 ට පෙර, ඔබට තිබුනේ:

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]

4
අවුරුදු 5 කට පසු බොහෝ දේ වෙනස් වී ඇති අතර මෙය දැන් පිළිගත් පිළිතුර විය යුතුය. නමුත් සමහර විට පෙර 2.7 සින්ටැක්ස් ද එක් කරන්න.
msp

58

සාරාංශගත කිරීම සඳහා, අවම වශයෙන් ක්‍රම හතරක් ඇත:

(පහත දැක්වෙන්නේ නිල ලිනක්ස් ගබඩාව සඳහා ය)

අවම තොරතුරු:

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

හා

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

වැඩි විස්තර:

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

ඊටත් වඩා තොරතුරු:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master 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)

4
සටහන git config --get remote.origin.urlසමඟ ආරම්භ කරන ලද මුල් URL එක retrieves git remote add ...හෝ git remote set-url ...අතර git ls-remote --get-url originපැමිණ විවිධ විය හැකි අතර මාර්ග පරවශතා - දුරස්ථ ඇත්තටම භාවිතා කරන URL එක retrieves git config --global url.XXX.insteadOf YYY. එබැවින් ප්‍රතිදානයන් දෙකම වෙනස් විය හැකිය! git ls-remote --get-url(රහිතව origin) නැවත ලබා නොගන්නා බව සලකන්න origin, ඒ වෙනුවට එය ලුහුබැඳ ඇති උඩුමහලේ පෙන්වයි, එබැවින් එය වෙන්වූ HEAD තත්වයේදී උදාහරණයක් ලෙස අසමත් වනු ඇත.
ටිනෝ

24

මම හිතන්නේ ඔබට එය යටින් සොයාගත හැකි .git/configඅතර remote["origin"]ඔබ එය හසුරුවන්නේ නැත්නම්.


22

කෙටි පිළිතුර:

$ git remote show -n origin

හෝ, පිරිසිදු ඉක්මන් ස්ක්‍රිප්ට් සඳහා විකල්පයක්:

$ git config --get remote.origin.url

සමහර තොරතුරු:

  1. $ git remote -vසියලුම දුරස්ථ මුද්‍රණය කරයි (ඔබට අවශ්‍ය දේ නොවේ). ඔබට සම්භවය අවශ්‍යද?
  2. $ git remote show originවඩා හොඳ, පෙන්වන්නේ පමණක් originනමුත් වැඩි කාලයක් ගතවේ (git අනුවාදය 1.8.1.msysgit.1 මත පරීක්ෂා කර ඇත).

මම අවසන් කළේ $ git remote show -n origin:, එය වේගවත්ම බව පෙනේ. -nඑය සමඟ දුරස්ථ හිස් (AKA ශාඛා) ලබා නොගනී. ඔබට එවැනි තොරතුරු අවශ්‍ය නොවේ, නේද?

http://www.kernel.org/pub//software/scm/git/docs/git-remote.html

| grep -i fetchලබා ගැනීමේ URL එක පමණක් පෙන්වීමට ඔබට අනුවාද තුනටම අයදුම් කළ හැකිය .

ඔබට පිරිසිදු වේගය අවශ්‍ය නම්, භාවිතා කරන්න:

$ git config --get remote.origin.url

එය පෙන්වා දීම ගැන ජෙෆ්රොමිට ස්තූතියි .


22

මට නම් මෙය පහසුම ක්‍රමයයි (අඩු ටයිප් කිරීම):

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

ඇත්තටම, මම බවට පත් කර තියෙනවා aliasනම් s: නොකරන

git remote -v
git status

ඔබට මෙය සමඟ ඔබේ පැතිකඩට එකතු කළ හැකිය: alias s='git remote -v && git status'


17

Git විධානයන් සඳහා වන සියලු පරාමිතීන් මට කිසි විටෙකත් මතක තබා ගත නොහැක, එබැවින් මම ~/.gitconfigගොනුවේ අන්වර්ථයක් තැබුවෙමි, එය මට වඩාත් අර්ථවත් කරයි, එබැවින් මට එය මතක තබා ගත හැකි අතර එය අඩු ටයිප් කිරීමකට හේතු වේ:

[alias]
url = ls-remote --get-url

ටර්මිනලය නැවත පූරණය කිරීමෙන් පසුව, ඔබට ටයිප් කළ හැකිය:

> git url

මම නිතර භාවිතා කරන තවත් කිහිපයක් මෙන්න:

[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags

මම ද ඉහළින් ම නිර්දේශ GIT-අතිරේක අංග ඉතා ඇති git info විධාන දුරස්ථ හා දේශීය ශාඛා මත තවත් බොහෝ විස්තරාත්මක තොරතුරු සපයන.


මම මේකට ගොඩක් කැමතියි!
ඇල්ෆි

15

Git URL එක Git වින්‍යාස ගොනුව තුළ ඇත. අගය යතුරට අනුරූප වේ url.

මැක් සහ ලිනක්ස් සඳහා පහත විධානයන් භාවිතා කරන්න:

 cd project_dir
 cat .git/config | grep url | awk '{print $3}'

වින්ඩෝස් සඳහා පහත දැක්වෙන ගොනුව ඕනෑම පෙළ සංස්කාරකයක විවෘත කර යතුර සඳහා අගය සොයා ගන්න url.

project_dir/.git/config

සටහන: ඔබ නොබැඳි හෝ දුරස්ථ git සේවාදායකය ඉවත් කර ඇතත් මෙය ක්‍රියාත්මක වේ.


1
මුල් පිටවීම සඳහා සත්කාරකත්වය දුන් දුරස්ථ සේවාදායකය ඉවත් කළ පසු මෙය මට වැඩ කළේය. සෙසු සියල්ලෝ ද ප්රයත්නයන් අසාර්ථක: git remote get-url origin >> fatal: No such remote 'origin',git config --get remote.origin.url >>
jxramos

14

මම මූලික වශයෙන් භාවිතා කරන්නේ:

git remote get-url origin

එය වින්ඩෝස් හි Git Bash විධාන කොන්සෝලය හෝ CMD විධාන කොන්සෝලය සඳහා ක්‍රියා කරයි. එය Git හි 2.x අනුවාදය සමඟ ක්‍රියා කරයි.



10

උඩුමහලේ දුරස්ථය "සම්භවය" ලෙස හැඳින්විය නොහැක, එබැවින් මෙහි විචලනයකි:

remote=$(git config --get branch.master.remote)
url=$(git config --get remote.$remote.url)
basename=$(basename "$url" .git)
echo $basename

හෝ:

basename $(git config --get remote.$(git config --get branch.master.remote).url) .git

වඩාත් ප්‍රයෝජනවත් විචල්‍යයන් සඳහා:

$ git config -l

9

හි IP ලිපිනය / ධාරක නාමය ලබා ගැනීම සඳහා origin

සඳහා ssh://නිධි:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"

සඳහා git://නිධි:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"

4
මක්නිසාද යත් sshමෙය ක්‍රියාත්මක වන්නේ ~/.ssh/configධාරක නාමය හෝ අන්වර්ථය නැවත ලියන විට පමණි .
ටිනෝ

9

අනෙක් පිළිතුරු වලට අතිරේකව: දුරස්ථය කිසියම් හේතුවක් නිසා වෙනස් කර ඇති අතර මුල් සම්භවය පිළිබිඹු නොකරන්නේ නම්, පරාවර්තනයේ පළමු ප්‍රවේශය (එනම් විධානය මඟින් පෙන්වන අවසාන ප්‍රවේශයgit reflog ) මඟින් repo මුලින් ක්ලෝන කරන ලද ස්ථානය දැක්විය යුතුය. සිට.

උදා

$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$

(පරාවර්තනය පිරිසිදු කළ හැකි බව මතක තබා ගන්න, එබැවින් මෙය වැඩ කිරීමට සහතික නොවේ.)


1
"මුල්" දුරස්ථය වෙනස් කර ඇත්නම් එය ලබා ගත හැකි එකම සැබෑ ක්‍රමය මෙය විය හැකිය.
ජස්ටින් ඕම්ස්

8

git remote show originඔබ සමඟ ව්‍යාපෘති නාමාවලියෙහි සිටිය යුතුය. නමුත් ඔබට වෙනත් ඕනෑම තැනක සිට URL තීරණය කිරීමට අවශ්‍ය නම්:

cat <path2project>/.git/config | grep url

ඔබට මෙම විධානය බොහෝ විට අවශ්‍ය නම්, ඔබේ .bashrcහෝ .bash_profileමැකෝස් සමඟ අන්වර්ථයක් අර්ථ දැක්විය හැකිය .

alias giturl='cat ./.git/config | grep url'

එබැවින් ඔබට giturlඑහි URL ලබා ගැනීම සඳහා Git root ෆෝල්ඩරයට ඇමතිය යුතුය .


ඔබ මේ අන්වර්ථය මේ ආකාරයට දිගු කළහොත්

alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'

ඔබට ලැබෙන්නේ පූර්වයෙන් තොරව සරල URL ය

"url ="

තුල

url = http://example.com/repo.git

ඔබට එහි භාවිතයේ වැඩි හැකියාවන් ලැබේ:

උදාහරණයක්

මැක්හි ඔබට open $(giturl)සම්මත බ්‍රව්සරයේ URL විවෘත කිරීමට ඇමතිය හැකිය .

නැතහොත් chrome $(giturl)ලිනක්ස් හි ක්‍රෝම් බ්‍රව්සරය සමඟ එය විවෘත කිරීමට.



7

අත්තනෝමතික ලෙස නම් කර ඇති දුරස්ථ ලබා ගැනීමේ URL මුද්‍රණය කරන්න:

git remote -v | grep fetch | awk '{print $2}'

6

ශාඛාවක් සඳහා උඩුමහලේ දුරස්ථයේ නම ඔබ නොදන්නේ නම්, වර්තමාන ශාඛාව ගොඩනගා ඇති උඩුමහලේ ශාඛා නාමය පරීක්ෂා කිරීමෙන් ඔබට එය මුලින්ම සොයා බැලිය හැකිය. මේ ආකාරයට භාවිතා කරන්න git rev-parse:

git rev-parse --symbolic-full-name --abbrev-ref @{upstream}

මෙයින් පෙනී යන්නේ වත්මන් ශාඛාව සඳහා ප්‍රභවය වූ උඩු මහලේ ශාඛාව බවයි. මේ වගේ දුරස්ථ නම ලබා ගැනීම සඳහා මෙය විග්‍රහ කළ හැකිය:

git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1

දැන් එය රැගෙන එය නල කරන්න, git ls-remoteඑවිට ඔබට වත්මන් ශාඛාවේ ප්‍රභවය වන උඩුමහලේ දුරස්ථයේ URL ලැබෙනු ඇත:

git ls-remote --get-url \
  $(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)

දැන් එය සැලකිල්ලට ගත යුතුය, මෙය ක්ලෝන කරන ලද ප්‍රභව දුරස්ථ ගබඩාවට සමාන නොවන බව. කෙසේ වෙතත් බොහෝ අවස්ථාවල එය ප්රමාණවත් වනු ඇත.


5
#!/bin/bash

git-remote-url() {
 local rmt=$1; shift || { printf "Usage: git-remote-url [REMOTE]\n" >&2; return 1; }
 local url

 if ! git config --get remote.${rmt}.url &>/dev/null; then
  printf "%s\n" "Error: not a valid remote name" && return 1
  # Verify remote using 'git remote -v' command
 fi

 url=`git config --get remote.${rmt}.url`

 # Parse remote if local clone used SSH checkout
 [[ "$url" == git@* ]] \
 && { url="https://github.com/${url##*:}" >&2; }; \
 { url="${url%%.git}" >&2; };

 printf "%s\n" "$url"
}

භාවිතය:

# Either launch a new terminal and copy `git-remote-url` into the current shell process, 
# or create a shell script and add it to the PATH to enable command invocation with bash.

# Create a local clone of your repo with SSH, or HTTPS
git clone git@github.com:your-username/your-repository.git
cd your-repository

git-remote-url origin

ප්‍රතිදානය:

https://github.com/your-username/your-repository

5

මතක තබා ගැනීම පහසු බැවින් මම මේකට කැමතියි:

git config -l

එය වැනි සියලු ප්‍රයෝජනවත් තොරතුරු ලැයිස්තුගත කරනු ඇත:

user.name=Your Name
user.email=your.name@notexisting.com
core.autocrlf=input
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/mapstruct/mapstruct-examples
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

1

පහසුය .git ෆෝල්ඩරය තබා ඇති තැන මෙම විධානය භාවිතා කරන්න

git config --get remote.origin.url

ඔබ ජාලයට සම්බන්ධ නම්

git remote show origin

දේශීය Git ගබඩාවක් මුලින් ක්ලෝන කරන ලද URL එය ඔබට පෙන්වනු ඇත.

මෙම උපකාරය බලාපොරොත්තු වේ

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.