Git से आपके द्वारा क्लोन किए गए मूल भंडार का नाम पता लगाना


118

जब आप वाक्य रचना का उपयोग करके अपना पहला क्लोन बनाते हैं

git clone username@server:gitRepo.git

क्या उस प्रारंभिक क्लोन का नाम खोजने के लिए अपने स्थानीय भंडार का उपयोग करना संभव है?

(इसलिए उपरोक्त उदाहरण में, खोजें gitRepo.git।)


जवाबों:


91

रिपॉजिटरी रूट में, .git/configफ़ाइल दूरस्थ रिपॉजिटरी और शाखाओं के बारे में सभी जानकारी रखती है। अपने उदाहरण में, आपको कुछ इस तरह देखना चाहिए:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = server:gitRepo.git

साथ ही, Git कमांड git remote -vरिमोट रिपॉजिटरी नाम और URL को दिखाता है। "मूल" दूरस्थ रिपॉजिटरी आमतौर पर मूल रिपॉजिटरी से मेल खाती है, जिसमें से स्थानीय प्रति क्लोन की गई थी।


16
आप git remote show originबस उस रिमोट के बारे में अधिक जानकारी देखने के लिए भी उपयोग कर सकते हैं ।
कास्कैबेल

1
लगता है कि उत्तर में ये दो विधियां समतुल्य हैं - ऐसा लगता है git remote -vकि यह केवल पढ़ता है और लिखता है .git/config
flow2k

103
git config --get remote.origin.url

2
माना; यह सबसे अच्छा है क्योंकि इसे git रिमोट सर्वर से कनेक्शन / ऑथर की आवश्यकता नहीं है। ओपी ने पूछा "अपने स्थानीय भंडार का उपयोग कर" लेकिन git remote show originनेटवर्क को कॉल करता है।
ट्रैविस विल्सन

1
इस के रूप में एक basename में लिपटे केसी 'जवाब अच्छी तरह से काम करता है
जोनाथन ड्रापिउ

29

यह त्वरित बैश कमांड है, जिसे आप शायद खोज रहे हैं, केवल दूरस्थ रिपॉजिटरी के एक बेसनेम को प्रिंट करेगा:

आप कहां से लाएंगे :

basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)

वैकल्पिक रूप से जहाँ आप धक्का देते हैं :

basename $(git remote show -n origin | grep Push | cut -d: -f2-)

विशेष रूप से -nविकल्प कमांड को बहुत तेज बनाता है।


11

मैं इसका उपयोग करता हूं:

basename $(git remote get-url origin) .git

जो कुछ इस तरह लौटता है gitRepo। ( .gitऐसा कुछ वापस करने के लिए कमांड के अंत में निकालें gitRepo.git।)

(नोट: इसके लिए २.०.०० संस्करण या बाद के संस्करण की आवश्यकता है)


2

मैं इस सवाल पर organization/repoअड़ गया कि जीथ मेजबान या गिटलैब जैसे मेजबान से स्ट्रिंग प्राप्त करने की कोशिश कर रहा है ।

यह मेरे लिए काम कर रहा है:

git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'

यह केवल संगठन और रेपो नाम के साथ कमांड sedके आउटपुट को बदलने के लिए उपयोग करता है git config

नियमित अभिव्यक्ति में github/scientistचरित्र वर्ग द्वारा कुछ इस तरह मिलान किया जाएगा [[:graph:]]

\1बस का मिलान नहीं हुआ पात्रों के साथ सब कुछ बदलने के लिए sed बताता है।


टाइपो अंत कहता है .get के बजाय .get ---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence

धन्यवाद @ निश्चय, निश्चित।
२१:

0
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

यह तीन अलग-अलग URL शैलियों के साथ परीक्षण किया गया था:

echo "Fetch URL: http://user@pass:gitservice.org:20080/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: Fetch URL: git@github.com:home1-oss/oss-build.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: https://github.com/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

1
आपने जो किया, उसे कैसे
माहेर

शायद अधिक जानकारी जोड़ें, जैसे कि रूबी निर्भरता के बारे में और किस प्लेटफ़ॉर्म पर इसका परीक्षण किया गया था (incl। संस्करण जानकारी)।
पीटर मोर्टेनसेन

0

यह मान प्राप्त करने के लिए काम करेगा।

#!/usr/bin/env bash
repoSlug="$(git config --get remote.origin.url | cut -d/ -f5 | cut -d. -f1)"
echo ${repoSlug}

0

Git रेपो नाम के लिए कमांड का Powershell संस्करण:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.