2012-12-18 20 views
5

पर गिट पुश के बाद खाली निर्देशिका निर्देशिका खाली है, मैं रिमोट गिट रेपो बनाने का प्रयास कर रहा हूं, (जिसे मैंने --bare विकल्प के साथ शुरू किया) और कुछ स्रोत फ़ाइलों को धक्का दिया।रिमोट

मैं एक स्थानीय Git रेपो और एक नंगे दूरस्थ है:

[email protected]:~/notebooks$ cat .git/config 
[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
[branch "master"] 
[remote "nbcsm"] 
    url = ssh://[email protected]/home/ubuntu/notebooks/.git 
    fetch = +refs/heads/*:refs/remotes/nbcsm/* 

मैं के साथ स्थानीय रेपो बनाया: 1. git init 2. git add *.ipynb 3. `Git IPython के पहले आयात प्रतिबद्ध मी" नोटबुक "

मैंने तब सत्यापित किया कि मेरे स्थानीय रेपो ने * .ipynb फ़ाइल को संपादित करने के लिए vi का उपयोग करके फ़ाइलों को ट्रैक किया है और फिर git status चला रहा है। गिट बदलती फाइल देखता है।

हालांकि, धक्का प्रकट होता है जब मैं git push nbcsm master निष्पादित सफल होने के लिए, लेकिन मेरी दूरस्थ कंप्यूटर/उदाहरण पर लक्ष्य निर्देशिका खाली है (यानी यह मैं दूरदराज के पुश करने के लिए कोशिश कर रहा हूँ फ़ाइलें शामिल नहीं है):

[email protected]:~/notebooks$ git push nbcsm master 
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': 
Counting objects: 11, done. 
Compressing objects: 100% (9/9), done. 
Writing objects: 100% (9/9), 2.49 KiB, done. 
Total 9 (delta 5), reused 0 (delta 0) 
To ssh://[email protected]/home/ubuntu/notebooks/.git 
7a50f44..295a4fa master -> master 
[email protected]:~/notebooks$ 

सत्यापन किया जा रहा है कि फ़ाइलें रिमोट पर नहीं हैं:

[email protected]:~/notebooks$ ssh [email protected] 
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': 
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-virtual x86_64) 

* Documentation: https://help.ubuntu.com/ 

System information as of Tue Dec 18 16:46:23 UTC 2012 

System load: 0.02    Processes:   63 
Usage of /: 41.7% of 7.97GB Users logged in:  0 
Memory usage: 12%    IP address for eth0:REMOTE-IP 
Swap usage: 0% 

Graph this data and manage this system at https://landscape.canonical.com/ 

Get cloud support with Ubuntu Advantage Cloud Guest 
http://www.ubuntu.com/business/services/cloud 
*** /dev/xvda1 will be checked for errors at next reboot *** 

[email protected]:~$ sudo find /home/ubuntu/ -name "*.ipynb" 
/home/ubuntu/notebooks/Untitled0.ipynb 
[email protected]:~$ 

स्थानीय रेपो कि धक्का दिया नहीं किया जा रहा है के बारे में 12 * .ipynb फ़ाइलें हैं। मैं काफी हद तक निश्चित हूं कि यह वाक्यविन्यास मुद्दे के बजाय एक वैचारिक मुद्दा है, लेकिन मैंने O'Reilly गिट पुस्तक में रिमोट अध्याय पढ़ और पढ़ लिया है और मैं स्टंप हूं।

उत्तर

4

git push तब तक नहीं होगा जब तक कि आप इसे हुक स्क्रिप्ट में से किसी एक के माध्यम से स्पष्ट रूप से नहीं बताते, दूरस्थ अंतराल पर कार्य निर्देशिका अद्यतन करें। आम तौर पर, अगर आप रिमोट एंड पर जिस शाखा को चेक आउट कर चुके हैं, वह शाखाओं में से एक है जिसे आप धक्का दे रहे हैं, तो यह जोर से शिकायत करेगा और पुश को मना कर देगा। हालांकि, यह चेतावनी अक्षम हो सकती है, जिससे आप धक्का दे सकते हैं, लेकिन यह अभी भी कार्यशील निर्देशिका को अपडेट नहीं करेगा। आप या तो अपने रिमोट रिपोजिटरी (या git checkout master या कुछ समान) में git reset --hard HEAD चला सकते हैं, या आपके लिए या कुछ ऐसा करने के लिए post-receive हुक सेट अप कर सकते हैं। रिमोट रिपोजिटरी बेयर होने के लिए शायद बेहतर है, हालांकि - संभवतः एक तीसरा भंडार पेश करना ताकि आपका विकास रेपो वहां धक्का दे सके, और आपका उत्पादन रेपो इसे खींच सकता है।

संपादित करें: ठीक है, अब यह एक अलग सवाल है, क्योंकि आप उल्लेख करते हैं कि आपका रिमोट रिपोजिटरी --bare के साथ बनाया गया था। यदि आपका रिमोट रिपोजिटरी बेकार है, तो आपको अपनी फाइलों को "सामान्य" तरीके से देखने की उम्मीद नहीं करनी चाहिए, क्योंकि एक नंगे भंडार में इसके साथ जुड़े एक कार्यशील निर्देशिका नहीं है। इसके बजाय आप कुछ उपनिर्देशिका देखेंगे और फ़ाइलें (config, description, HEAD) है कि आप सामान्य रूप से एक गैर नंगे भंडार में .git के तहत देखना होगा (branches, hooks, info, objects और refs की तरह)। आपको अभी भी git log और अन्य आदेशों (जैसे git show HEAD:<some_file>) चलाने के लिए सक्षम होना चाहिए ताकि यह सत्यापित किया जा सके कि आपका डेटा वहां है।

+0

मेरी तुलना में गैर-बेयर और नंगे रिपो के लिए अधिक पूर्ण स्पष्टीकरण। +1 – VonC

1

git status कि गिट फ़ाइल को बदलता है।

git status आपको यह बताना चाहिए कि कोई फ़ाइल संशोधित नहीं की जा रही है!

git status 
# On branch master 
nothing to commit (working directory clean) 

यह फ़ाइलों संशोधित सूची में शामिल हैं, तो आप जोड़ सकते हैं और प्रतिबद्ध करने के लिए उन फ़ाइलों पहले, धक्का से पहले की जरूरत है:

git add . 
git commit -m "my commit message" 
git push -u nbcsm master 

साथ ही, सुनिश्चित करें और देखें कि शाखा सर्वर साइड पर चेक आउट किया गया है :

cd /home/ubuntu/notebooks 
git branch 

आपको चेतावनी के बिना एक गैर-बेयर रेपो को धक्का नहीं देनी चाहिए।
लेकिन चूंकि आपके पास कोई नहीं था, इसलिए यह संभव है कि एक और शाखा की जांच हो।