2011-10-25 16 views
9

मैं अपनी स्थानीय मशीन पर Bitbucket (जो गिट और मर्कुरियल का समर्थन करता है) से मेरे सभी भंडारों का बैकअप लेने के लिए एक उपकरण लिख रहा हूं।मैं गिट * INTO * एक नंगे भंडार के साथ कैसे खींच/ला सकता हूं?

यह पहले से ही मर्क्युरियल, जहां मैं इसे इस तरह करते हैं के लिए काम करता है:

  • स्थानीय मशीन
    (एक bare Git भंडार की तरह ही)
  • पर एक काम की नकल के बिना एक नया खाली भंडार बनाने रिमोट रिपोजिटरी से स्थानीय रिक्त भंडार में खींचें

अब मैं गिट के साथ ऐसा करने की कोशिश कर रहा हूं।

I already found out कि मैं एक नंगे भंडार में सीधे pull नहीं कर सकता और मुझे इसके बजाय fetch का उपयोग करना चाहिए।

तो मैं इसे करने की कोशिश:

C:\test>git fetch https://github.com/SamSaffron/dapper-dot-net.git 
remote: Counting objects: 1255, done. 
remote: Compressing objects: 100% (1178/1178), done. 
remote: Total 1255 (delta 593), reused 717 (delta 56) 
Receiving objects: 100% (1255/1255), 13.66 MiB | 706 KiB/s, done. 
Resolving deltas: 100% (593/593), done. 
From https://github.com/SamSaffron/dapper-dot-net 
* branch   HEAD  -> FETCH_HEAD 

जाहिर Git कुछ लाने की थी, लेकिन स्थानीय भंडार उसके बाद खाली है।
(git log कहते हैं fatal: bad default revision 'HEAD')

मैं क्या गलत कर रहा हूं?

अस्वीकरण:
मैं केवल बहुत, बहुत बुनियादी Git ज्ञान (मैं आमतौर पर मर्क्युरियल का उपयोग करें) है।
और यदि मैं मायने रखता हूं, तो मैं विंडोज का उपयोग कर रहा हूं।

+0

[Git लॉग और एक नंगे रेपो पर शो] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/6214711/git-log-and-show-on-a-bare-repo) – CharlesB

+0

@CharlesB : इस लिंक में कोई भी जवाब मेरे लिए काम नहीं करता है। 'गिट शाखा-वी' जैसी चीजें भी नहीं, जो पूछताछ के लिए काम करती हैं, सुझाए गए 'गिट लॉग ब्रानchnमे' (मैंने 'मास्टर' की कोशिश की) नहीं, न ही "रिपोजिटरी में सब कुछ देखने के लिए ..." कमांड के अंत में उत्तर। –

उत्तर

14

git fetch https://github.com/SamSaffron/dapper-dot-net.git master:master 
+2

यह केवल मास्टर शाखा लाने के लिए प्रतीत होता है (मैंने इसे https://github.com/dontangg/nocco के साथ आजमाया, क्योंकि डैपर की कोई अन्य शाखा नहीं है)। क्या ** सभी ** शाखाएं प्राप्त करना संभव है? यह एक बैकअप उपकरण होगा, और निश्चित रूप से मैं वहां मौजूद सभी चीज़ों का बैक अप लेना चाहता हूं। –

+2

कुछ "' *: * "' या '" refs/head/*: refs/head/* "जैसा होना चाहिए। –

+0

'*: *' मेरे लिए काम नहीं करता है ('घातक: अमान्य रेफस्पेक '*। *' ''), लेकिन' refs/head/*: refs/head/* 'चाल है। धन्यवाद! –

3

मैं आपको लगता है यदि आप वास्तव में बैकअप करना चाहते हैं। आप $ git clone --mirror XXXX कमांड का प्रयास कर सकते हैं। यह भंडार से लगभग सब कुछ मिल जाएगा। उम्मीद है कि यह सहायक है।

+2

हां थी, लेकिन मैं बैकअप नियमित रूप से चलाने के लिए चाहता हूं। तो पहले भाग के बाद, स्थानीय भंडार पहले से मौजूद है -> मुझे 'पुल'/'fetch'/जो कुछ भी चलाना है और यह सुनिश्चित करना है कि यह ** सब कुछ ** खींचता है। –

+1

आपके द्वारा बेयर किए जाने के बाद। आप अपने स्थानीय शेयरों को अपडेट करने के लिए 'गिट fetch --all --progress -v' का उपयोग कर सकते हैं। –

2
$ git fetch https://github.com/SamSaffron/dapper-dot-net.git +refs/heads/*:refs/heads/* --prune 
2
बैकअप करने के लिए

अपने नंगे भंडार में दूरदराज के भंडार नियमित रूप से पहले

git config remote.origin.url https://github.com/SamSaffron/dapper-dot-net.git 
git config remote.origin.fetch "+*:*" 

कॉन्फ़िगर और फिर बस बैकअप के लिए

git fetch --prune 

चलाते हैं।

  • शायद आप मुट्ठी कॉन्फ़िगरेशन अतिरिक्त को छोड़ सकते हैं क्योंकि यह रिमोट रिपोजिटरी क्लोन करते समय पहले ही सेट किया जाना चाहिए था।
  • एस्ट्रिक्स (*) की रक्षा के लिए उपरोक्त आदेश में संलग्न डबल उद्धरण चिह्न (") को भी अपने खोल से व्याख्या न करने के लिए कृपया ध्यान दें।
  • गैर-तेज अद्यतनों की अनुमति देने के लिए प्लस साइन की आवश्यकता है। यदि आप अपने रिमोट की वर्तमान स्थिति का बैकअप लेना चाहते हैं तो शायद यह आपका इरादा है।
  • विकल्प --prune अब भी मौजूद गैर-मौजूद शाखाओं को हटाने के लिए उपयोग किया जाता है।
+2

एक ही स्थान पर सभी प्रासंगिक तथ्यों के साथ एक अच्छी व्याख्या, विशेष रूप से उपयोगी डबल-कोट्स के बारे में बिंदु और 'refspec] prefixing की आवश्यकता है (https://git-scm.com/book/en/ v2/Git-internals-Refspec)। – starfry

संबंधित मुद्दे