मैं क्योंकि यहाँ (एक ही सवाल के साथ) पहुंचने के बाद इस उत्तर जोड़ रहा, जवाब में से कोई भी वास्तव में सभी आवश्यक आवश्यक चरणों का वर्णन पूरी तरह से उपयोग करने योग्य रिमोट (नंगे) रेपो के लिए कुछ भी नहीं जाने के लिए।
नोट: यह उदाहरण नंगे रेपो के स्थान के लिए स्थानीय पथ का उपयोग करता है, लेकिन अन्य गिट प्रोटोकॉल (जैसे ओपी द्वारा संकेतित एसएसएच) को ठीक काम करना चाहिए।
मैंने गिट से कम परिचित लोगों के लिए कुछ नोट्स जोड़ने की कोशिश की है।
1. नंगे रेपो Initialise ...
> git init --bare /path/to/bare/repo.git
Initialised empty Git repository in /path/to/bare/repo.git/
यह एक फ़ोल्डर (repo.git) बनाता है और एक Git रेपो का प्रतिनिधित्व 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 [email protected]
> 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 बी। मौजूदा फ़ाइलों से एक काम फ़ोल्डर बनाएँ आप पहले से ही उस में फ़ाइलें (ताकि आप इसे में क्लोन नहीं कर सकता), आप एक नया Git रेपो आरंभ कर सकते हैं, जोड़ने के लिए पहली बार के लिए प्रतिबद्ध है और फिर नंगे रेपो करने के लिए इसे बाद में लिंक के साथ एक फ़ोल्डर है।
> 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 की जरूरत है) के समय की सबसे अच्छे रूप में मुझे confuses - उम्मीद है कि, इस दूसरों की मदद करेगा।
यदि आप अन्य लोगों को इस रेपो में धक्का देने की योजना बना रहे हैं तो आप 'init' के लिए' --shared' विकल्प भी जोड़ सकते हैं। यह स्वचालित रूप से भंडार में समूह लेखन अनुमतियों को जोड़ता है - [लिंक] (http://git-scm.com/book/en/Git-on-the- सर्वर- गेटिंग- गिट-on-a- सर्वर) – prasanthv
मुझे लगता है कि ये तीन लाइनों इस से एक ही प्रभाव है केवल एक: Git --bare init test_repo.git कम से कम मेरे वर्तमान Git संस्करण (1.8.2.2) –
@Fran 1.7 के लिए अच्छा नहीं है * संस्करण ऐसा लगता है के साथ:। \ – deepdive