दिलचस्प पोस्ट
फोन समारोह से एक jquery AJAX कॉलबैक के लिए प्रतीक्षा करें MySQL क्वेरी, मैक्स () + ग्रुप बाय MySQL में विदेशी कुंजी की मूल बातें? किस प्रकार का सूचक मैं उपयोग करता हूँ जब? Android HTTP POST में मापदंड कैसे जोड़ें? आईओएस वीओआईपी सॉकेट पृष्ठभूमि में नहीं चलेगा JavaScript कोडिंग के लिए अनुशंसित विम प्लग इन? दो बिंदुओं के पते समान हैं मैं कैसे देख सकता हूं कि सूची में एक और केवल एक सत्य मान है? सी # में फिर से प्रवेशक ताले एंड्रॉइड स्टूडियो के साथ आप गिटहब के लिए परियोजनाओं को कैसे सिंक्रनाइज़ करते हैं? Django – CSRF सत्यापन विफल क्यों नहीं बदल सकते हैं (एस.बीजिन ()), एसएंड (), एस.बीजीन (), टोलर) "सफलतापूर्वक अनुपालन किया जा सकता है? कहां है | डाटाडाइरेक्टरी | परिभाषित? AudioTrack, SoundPool या MediaPlayer मैं कौन से उपयोग करना चाहिए?

आप "git –bare init" रिपॉजिटरी का प्रयोग कैसे करते हैं?

मुझे एक केंद्रीय गीता भंडार बनाने की आवश्यकता है लेकिन मैं थोड़ा उलझन में हूँ …

मैंने एक बेजोड़ भंडार (मेरे जीआईटी सर्वर, मशीन 2 में) बना दिया है:

$ mkdir test_repo $ git --bare init 

अब मुझे फ़ाइलों को अपने स्थानीय भंडार (मशीन 1) से नंगे रेपोॉजिटरी (मशीन 2) में खींचने की आवश्यकता है। मेरे SSH द्वारा मशीन 2 तक पहुंच है। बात यह है कि मुझे लगता है कि मैं एक नंगे भंडार की अवधारणा को समझ नहीं पाया …

मेरे कोड को नंगे भंडार में रखने का सही तरीका क्या है? मैं अपने स्थानीय रिपॉजिटरी से नंगे रिपॉजिटरी में कैसे बदलाव कर सकता हूं?

क्या एक केंद्रीय भंडार रखने का सही तरीका है जो एक बेजोड़ भंडार है?

मैं इस विषय के साथ थोड़ा भ्रमित हूं। कृपया मुझे इस पर एक सुराग दें

वेब के समाधान से एकत्रित समाधान "आप "git –bare init" रिपॉजिटरी का प्रयोग कैसे करते हैं?"

सबसे पहले, बस जांचने के लिए, आपको git init --bare चलाने से पहले बनाई गई निर्देशिका में बदलाव करना होगा। इसके अलावा, यह .git भंडार विस्तार को देने के लिए पारंपरिक है। तो आप ऐसा कर सकते हैं

 git init --bare test_repo.git 

गीट संस्करण के लिए <1.8 आप करते हैं

 mkdir test_repo.git cd test_repo.git git --bare init 

अपने बाद के सवालों का जवाब देने के लिए, नंगे रिपॉजिटरी (परिभाषा के अनुसार) उनके पास एक सक्रिय पेड़ नहीं है, इसलिए आप आसानी से उन फ़ाइलों को जोड़ नहीं सकते हैं, जैसे कि आप सामान्य गैर-बेतरंगी भंडार में (जैसे git add <file> और बाद में एक git commit ।)

आप लगभग हमेशा एक रिपॉजिटरी को दूसरे रिपॉजिटरी से दबाकर इसे ( git push का उपयोग करके) git push करके अपडेट करते हैं।

ध्यान दें कि इस मामले में आपको पहले लोगों को अपने रिपॉजिटरी में धकेलने की अनुमति देनी होगी। जब test_repo.git अंदर test_repo.git , तो करें

 git config receive.denyCurrentBranch ignore 

=== समुदाय संपादन ===

 git init --bare --shared=group 

जैसा कि प्रसनंद द्वारा टिप्पणी की गई, यह आप क्या चाहते हैं अगर आप निजी घर परियोजना की बजाय काम पर यह कर रहे हैं

मैं इस उत्तर को जोड़ रहा हूँ क्योंकि यहां आने के बाद (एक ही प्रश्न के साथ), जवाब में से कोई भी वास्तव में सभी आवश्यक चरणों को पूरी तरह से उपयोगी रिमोट (बेअर) रेपो तक जाने के लिए आवश्यक नहीं बताता है

नोट: यह उदाहरण बेतरतीब रेपो के स्थान के लिए स्थानीय पथ का उपयोग करता है, लेकिन अन्य जीआईटी प्रोटोकॉल (जैसे ओपी द्वारा संकेतित एसएसएच) सिर्फ ठीक काम करना चाहिए।

मैंने जीटी के साथ परिचित लोगों के लिए रास्ते में कुछ नोट जोड़ने की कोशिश की है।

1. नंगे रेपो शुरू करें …

 > git init --bare /path/to/bare/repo.git Initialised empty Git repository in /path/to/bare/repo.git/ 

यह एक फ़ोल्डर (repo.git) बनाता है और इसे जीआईटी फाइलों के साथ जीआईटी रिपो का प्रतिनिधित्व करता है। जैसा कि यह खड़ा है, यह रेपो बेकार है – इसकी कोई कमी नहीं है और अधिक महत्वपूर्ण बात, कोई शाखा नहीं है यद्यपि आप इस रेपो को क्लोन कर सकते हैं, आप इसे से नहीं खींच सकते।

इसके बाद, हमें एक कार्यशील फ़ोल्डर बनाना होगा। आपके पास मौजूदा फाइल हैं या नहीं, यह करने के कुछ तरीके हैं

2 ए। खाली रेपो क्लोनिंग करके एक नया कार्य फ़ोल्डर बनाएँ (कोई भी मौजूदा फाइल नहीं)

 git clone /path/to/bare/repo.git /path/to/work Cloning into '/path/to/work'... warning: You appear to have cloned an empty repository. done. 

यह कमांड केवल तभी काम करेगा जब /path/to/work मौजूद नहीं है या रिक्त फ़ोल्डर है। चेतावनी का ध्यान रखें – इस स्तर पर, आपके पास अभी भी कुछ उपयोगी नहीं है यदि आप cd /path/to/work और git status चलाते हैं, तो आप कुछ पसंद करेंगे:

 On branch master Initial commit nothing to commit (create/copy files and use "git add" to track) 

लेकिन यह एक झूठ है आप वास्तव में शाखा master पर नहीं हैं (क्योंकि git branch कुछ भी रिटर्न नहीं देता है) और अभी तक, कोई कमिट नहीं है

इसके बाद, कार्य फ़ोल्डर में कॉपी / स्थानांतरित करें / कुछ फ़ाइलें बनाएं, उन्हें git में जोड़ें और पहले प्रतिबद्ध बनाएं।

 > cd /path/to/work > echo 123 > afile.txt > git add . > git config --local user.name adelphus > git config --local user.email adelphus@example.com > git commit -m "added afile" [master (root-commit) 614ab02] added afile 1 file changed, 1 insertion(+) create mode 100644 afile.txt 

git config कमांड केवल तभी आवश्यक हैं यदि आपने पहले से ही git को नहीं बताया है कि आप कौन हैं ध्यान दें कि यदि आप अब git branch चलाते हैं, तो अब आपको master शाखा सूचीबद्ध दिखाई देगी। अब git status चलाएं:

 On branch master Your branch is based on 'origin/master', but the upstream is gone. (use "git branch --unset-upstream" to fixup) nothing to commit, working directory clean 

यह भी गुमराह करने वाला है – अपस्ट्रीम "चला गया" नहीं है, यह अभी तक नहीं बनाया गया है और git branch --unset-upstream मदद नहीं करेगा। लेकिन यह ठीक है, अब कि हमारी पहली प्रतिबद्धता है, हम पुश कर सकते हैं और मास्टर बेर रेपो पर बनाया जाएगा।

 > git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To /path/to/bare/repo.git * [new branch] master -> master 

इस बिंदु पर, हमारे पास एक पूरी तरह कार्यात्मक बेतरतीब रेपो है, जो किसी मास्टर ब्रॉच पर कहीं और क्लोन किया जा सकता है साथ ही एक स्थानीय कामकाजी कॉपी जो खींच और पुश कर सकती है।

 > git pull Already up-to-date. > git push origin master Everything up-to-date 

2 बी। मौजूदा फाइलों से एक कामकाजी फ़ोल्डर बनाएं यदि आपके पास पहले से फाइलें हैं, तो आप इसे में क्लोन नहीं कर सकते हैं, तो आप एक नया जीआईटी रेपो शुरू कर सकते हैं, पहले कमिट जोड़ सकते हैं और बाद में बेतरर रेपो में इसे लिंक कर सकते हैं।

 > cd /path/to/work_with_stuff > git init Initialised empty Git repository in /path/to/work_with_stuff > git add . # add git config stuff if needed > git commit -m "added stuff" [master (root-commit) 614ab02] added stuff 20 files changed, 1431 insertions(+) create mode 100644 stuff.txt ... 

इस समय हमारे पास हमारी पहली प्रतिबद्धता है और एक स्थानीय मास्टर शाखा है जिसे हमें एक दूरस्थ-ट्रैक अपस्ट्रीम शाखा में बदलने की जरूरत है।

 > git remote add origin /path/to/bare/repo.git > git push -u origin master Counting objects: 31, done. Delta compression using up to 4 threads. Compressing objects: 100% (31/31), done. Writing objects: 100% (31/31), 43.23 KiB | 0 bytes/s, done. Total 31 (delta 11), reused 0 (delta 0) To /path/to/bare/repo.git * [new branch] master -> master Branch master set up to track remote branch master from origin. 

(नया) ट्रैक की गई अपस्ट्रीम शाखा सेट करने के लिए git पुश पर -u फ़्लैग को नोट करें पहले की तरह, अब हम एक पूरी तरह कार्यात्मक बेतरतीब रेपो हैं, जो एक मास्टर शाखा के साथ-साथ एक स्थानीय कामकाजी कॉपी पर क्लोन किया जा सकता है जो खींच और पुश कर सकता है।

यह सब कुछ के लिए स्पष्ट प्रतीत हो सकता है, लेकिन git मुझे सबसे अच्छा समय पर भ्रमित (यह त्रुटि और स्थिति संदेश वास्तव में कुछ rework की आवश्यकता है) – उम्मीद है, यह दूसरों की मदद करेंगे

अपने प्रश्न एक एक करके उत्तर दे:

नंगे रिपोजिटरी एक ऐसा काम है जिसमें कोई काम करने वाला पेड़ नहीं है । इसका मतलब है कि इसकी पूरी सामग्री है, जिसमें आपके पास .git निर्देशिका है

आप केवल अपने स्थानीय क्लोन से push से केवल एक ही रिपॉज़िटरी को commit कर सकते हैं। इसमें कोई काम करने वाला पेड़ नहीं है, इसलिए इसमें कोई भी फ़ाइल संशोधित नहीं है, कोई परिवर्तन नहीं है।

सेंट्रल रिपॉजिटरी के लिए एकमात्र तरीका है कि यह एक bare भंडार है।

आप अपने लिए डायरेक्टरी बनाने के लिए जीआईटी भी पूछ सकते हैं:

 git init --bare test_repo.git 

सामान्य अभ्यास के लिए केंद्रीय भंडार है जिसके लिए आप एक बेजोड़ रेपो के रूप में पुश करते हैं।

यदि आपके पास एसवीएन पृष्ठभूमि है, तो आप एक एसआईवीएन रेपो को गिट बेअर रीपो से संबंधित कर सकते हैं। इसमें मूल रूप में रिपो में फाइल नहीं है। जबकि आपके स्थानीय रेपो में ऐसी फाइलें होंगी जो आपके "कोड" को इसके अलावा बनाती हैं।

आपको अपने स्थानीय रेपो से बेतरतीब रेपो में एक रिमोट जोड़ना होगा और अपने "कोड" को उस पर धक्का देना होगा।

ऐसा कुछ होगा:

 git remote add central <url> # url will be ssh based for you git push --all central 

यह पर्याप्त होना चाहिए:

 git remote add origin <url-of-bare-repo> git push --all origin 

अधिक जानकारी के लिए देखें " जीआईटी: मैं अपना बेअर रेपो कैसे अपडेट कर सकता हूँ? "
टिप्पणियाँ:

  • आप नंगे रेपो दूरस्थ संदर्भ के लिए ' origin ' से भिन्न नाम का उपयोग कर सकते हैं
  • यह आपके टैग को पुश नहीं करेगा, आपको अलग git push --tags origin आवश्यकता है – उस के लिए git push --tags origin

यह सत्यापित करने के लिए अच्छा है कि वास्तव में आपके द्वारा किए गए कोड को मिला है।

–relative विकल्प का उपयोग करके पथ को स्पष्ट रूप से सेट करके आप एक नंगे रेजॉजिटरी में परिवर्तनों का लॉग प्राप्त कर सकते हैं।

 $ cd test_repo $ git log --relative=/ 

यह आपको प्रतिबद्ध बदलाव दिखाएगा जैसे कि यह एक नियमित जीआईटी रेपो था

-बरे ध्वज एक रिपॉज़िटरी बनाता है जिसमें कार्य निर्देशिका नहीं है। नंगे रिपॉजिटरी केंद्रीय भंडार है और आप विलय त्रुटि से बचने के लिए यहां (स्टोर) कोड को संपादित नहीं कर सकते।

उदाहरण के लिए, जब आप अपनी स्थानीय रिपॉजिटरी (मशीन 1) में एक फाइल जोड़ते हैं और इसे नंगे रेजॉजिटरी में डालते हैं, तो आप फ़ाइल को नंगे रेजॉजिटरी में नहीं देख सकते हैं क्योंकि यह हमेशा 'रिक्त' है हालांकि, आप वास्तव में रिपॉजिटरी के लिए कुछ पुश करते हैं और आप इसे अपने सर्वर (मशीन 2) में एक और रिपॉजिटरी क्लोन करने से अनन्य रूप से देख सकते हैं।

मशीन 1 में स्थानीय भंडार और मशीन 2 में 'कॉपी' रिपॉजिटरी दोनों गैर-बेयर हैं। नंगे और गैर-बेजोड़ भंडार के बीच संबंध

ब्लॉग आपको यह समझने में मदद करेगा। https://www.atlassian.com/git/tutorials/setting-up-a-repository

मार्क लोंगायर एंड रोबोप्रोग के आधार पर उत्तर:

अगर git संस्करण> 1.7

 git init --bare --shared=group .git git config receive.denyCurrentBranch ignore 

या:

अगर git संस्करण <1.8

 mkdir .git cd .git git init --bare --shared=group git config receive.denyCurrentBranch ignore