git - आरएल - यूट्यूब चैनल सेटिंग
मैं यूआरएल कैसे निर्धारित कर सकता हूं कि एक स्थानीय गिट भंडार मूल रूप से क्लोन किया गया था? (13)
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 ":"
मैंने कुछ दिन पहले गिटहब से एक परियोजना खींची थी। मैंने तब से पता चला है कि गिटहब पर कई कांटे हैं, और मैंने यह ध्यान देने की उपेक्षा की कि मैंने मूल रूप से कौन सा लिया था। मैं कैसे निर्धारित कर सकता हूं कि मैंने कौन से कांटे खींचा?
अन्य उत्तरों को पूरक करने के लिए: यदि रिमोट किसी कारण से बदल गया है और इसलिए मूल उत्पत्ति को प्रतिबिंबित नहीं करता है, तो रीफ्लॉग में पहली प्रविष्टि (यानी कमांड git reflog
द्वारा प्रदर्शित अंतिम प्रविष्टि) को इंगित करना चाहिए कि रेपो कहाँ था मूल रूप से क्लोन से।
जैसे
$ git reflog | tail -n 1
f34be46 [email protected]{0}: clone: from https://github.com/git/git
$
(ध्यान रखें कि रिफ्लॉग को शुद्ध किया जा सकता है, इसलिए यह काम करने की गारंटी नहीं है।)
उत्तर पाने के लिए:
git ls-remote --get-url [REMOTE]
यह विन्यास पढ़ने से बेहतर है; git-ls-remote
लिए मैन पेज देखें:
--get-यूआरएल
दिए गए रिमोट रिपॉजिटरी के
"url.<base>.insteadOf"
किसी भी"url.<base>.insteadOf"
कॉन्फ़िगरेशन सेटिंग में ले जाएं (git-config(1)
) और रिमोट से बात किए बिना बाहर निकलें।
जैसा कि @ जेफ्रोमी द्वारा इंगित किया गया था, यह विकल्प v1.7.5 में जोड़ा गया था और v1.7.12.2 (2012-09) तक दस्तावेज नहीं किया गया था।
क्या आप इसे स्क्रिप्टिंग उद्देश्यों के लिए चाहते हैं, आप केवल यूआरएल प्राप्त कर सकते हैं
git config --get remote.origin.url
गिट यूआरएल गिट कॉन्फ़िगरेशन फ़ाइल के अंदर होगा। मान कुंजी url
मेल खाता है:
cd project_dir
cat .git/config | grep url | awk '{print $3}'
तुम कोशिश कर सकते हो:
git remote -v
यह आपके सभी रिमोट्स 'फ़ेच / पुश यूआरएल प्रिंट करेगा।
मुझे लगता है कि आप इसे .git/config
और remote["origin"]
अंतर्गत पा सकते हैं यदि आपने इसका उपयोग नहीं किया है।
मैं गिट कमांड के सभी पैरामीटर कभी याद नहीं रख सकता, इसलिए मैंने ~/.gitconfig
फ़ाइल में एक उपनाम लगाया जो मुझे अधिक समझ में आता है, इसलिए मैं इसे याद कर सकता हूं, और इसके परिणामस्वरूप कम टाइपिंग होती है:
[alias]
url = ls-remote --get-url
टर्मिनल को पुनः लोड करने के बाद, आप बस टाइप कर सकते हैं:
> git url
मेरे अक्सर उपयोग किए जाने वाले कुछ और हैं:
[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags
यदि आप किसी शाखा के लिए अपस्ट्रीम रिमोट का नाम नहीं जानते हैं, तो आप उस अपस्ट्रीम शाखा नाम का निरीक्षण करके पहले इसे देख सकते हैं जिस पर वर्तमान शाखा बनाई गई थी। इस तरह 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
करने के लिए पाइप करें और आपको अपस्ट्रीम रिमोट का यूआरएल मिलेगा जो वर्तमान शाखा का स्रोत है:
git ls-remote --get-url \
$(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)
अब यह ध्यान दिया जाना चाहिए कि यह आवश्यक स्रोत स्रोत रिमोट रिपोजिटरी के समान नहीं है जिसे क्लोन किया गया था। कई मामलों में हालांकि यह पर्याप्त होगा।
यदि आप केवल दूरस्थ यूआरएल चाहते हैं, या संदर्भित अखंडता टूट गई है:
git config --get remote.origin.url
यदि आपको पूर्ण आउटपुट या रेफरेंसियल अखंडता की आवश्यकता है तो यह बरकरार है:
git remote show origin
git clone
(गिटहब से, या उस मामले के लिए किसी भी स्रोत भंडार से) का उपयोग करते समय क्लोन के स्रोत के लिए डिफ़ॉल्ट नाम "मूल" होता है। git remote show
का उपयोग इस रिमोट नाम के बारे में जानकारी प्रदर्शित करेगा। पहली कुछ पंक्तियां दिखानी चाहिए:
C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
Fetch URL: [email protected]:jaredpar/VsVim.git
Push URL: [email protected]:jaredpar/VsVim.git
HEAD branch: master
Remote branches:
यदि आप स्क्रिप्ट में मान का उपयोग करना चाहते हैं, तो आप इस उत्तर में सूचीबद्ध पहले कमांड का उपयोग करेंगे।
संक्षेप में, कम से कम चार तरीके हैं:
(आधिकारिक लिनक्स भंडार के लिए निम्नलिखित की कोशिश की गई थी)
कम जानकारी:
$ 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)
.git/config
फ़ाइल को खोलने का एक आसान तरीका है:
cat .git/config
संपादित करने के लिए:
vim .git/config
या
nano .git/config
#!/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" == [email protected]* ]] \
&& { 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 [email protected]:your-username/your-repository.git
cd your-repository
git-remote-url origin
आउटपुट:
https://github.com/your-username/your-repository