2009-05-19 15 views
10

स्थिति:अद्यतन वेबसाइट एफ़टीपी खींचें के बजाय और छोड़ने

  • मैं एक वेबसाइट की एक स्थानीय प्रति है
  • मैं एक सर्वर है कि मैं
  • को SSH उपयोग कर सकते है है

मैं क्या करना चाहता हूं?

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

अगर मैं स्थानीय स्तर पर Git init का उपयोग कर, और उसके बाद सर्वर पर एक फ़ोल्डर में धक्का एक Git रेपो की स्थापना की, यह काम नहीं करता। जब मैं फ़ाइलों को जांचने के लिए सर्वर पर एफ़टीपी करता हूं, तो वे वास्तव में वहां होते हैं। जब मैं सर्वर में एसएसएच करता हूं और गिट स्थिति करता हूं, तो यह साफ़ नहीं होता है, भले ही यह होना चाहिए क्योंकि मैंने अभी सर्वर पर धक्का दिया था।


कदम मैं कर रहा हूँ:

  1. अपने कंप्यूटर पर एक नया फ़ोल्डर बनाएँ (mkdir folder_x)
  2. उस फ़ोल्डर (सीडी folder_x) में जाकर
  3. एक नया Git भंडार सेट करें वहां (गिट इनिट)
  4. (गिट रिपोजिटरी सफलतापूर्वक सेट अप)
  5. गिट पुश मूल मास्टर (जहां मूल है) का उपयोग कर सर्वर पर भंडार को पुश करें उपयोगकर्ता के रूप में एट अप: [email protected]) ​​
+0

डुप्लिकेट http://stackoverflow.com/questions/3728054/git-push-to-live-server – cmcginty

+0

संभावित डुप्लिकेट [गिट पुश का उपयोग करके एक परियोजना को तैनात करें] (http://stackoverflow.com/questions/279169/ तैनात एक परियोजना का उपयोग कर-Git-धक्का)। [गिट कॉन्फ़िगरेशन get.denyCurrentBranch UpdateInstead] (रिमोट पर http://stackoverflow.com/a/28381235/895245) एक अच्छी संभावना है। –

उत्तर

12

आप एक हुक के बाद प्राप्त होने वाले git checkout -f चलाता है के बाद दूरस्थ Git भंडार एक धक्का प्राप्त करता है लिखने के लिए की जरूरत है। विवरण के लिए Using Git to manage a web site देखें।

+1

ऐसा लगता है कि मैं वास्तव में अपने वेबसर्वर पर काम नहीं करता हूं। तो कोई भी काम खो गया है – gman

+0

गिट 2.3 के साथ आपको अब इस हुक की आवश्यकता नहीं है कि आप 'git config get.denyCurrentBranch updateInstead' कर सकते हैं। Https://github.com/blog/1957-git-2-3-has-been- रिलीज़ देखें। – Aurelien

+1

मुझे लगता है कि @Aurelien की टिप्पणी स्वीकार किए गए उत्तर होना चाहिए! बहुत अच्छा समाधान! –

1

जब आप एक गिट भंडार को दबाते हैं, तो यह उस भंडार की कार्यशील फ़ाइलों को अद्यतन नहीं करता है। आम तौर पर जब आप धक्का देते हैं, तो आपको एक नंगे भंडार पर धक्का देना चाहिए --- ऐसा लगता है कि वे काम करने के लिए गिट पुश का इरादा रखते थे।

मेरी (स्थानीय) परियोजनाओं में से एक के लिए, मैंने अपने काम को तैनाती रेपो में धक्का देने पर नवीनतम "ui" उपनिर्देशिका को स्वचालित रूप से जांचने के लिए एक स्क्रिप्ट लिखी। यह पिछले जवाब में एम्बेड किया गया है: Developing Django projects using Git

यदि आप किसी मास्टर को अद्यतन को धक्का देते हैं, तो एक "गिट रीसेट - हार्ड मास्टर" करते हैं, तो आप बस पोस्ट-अपडेट हुक भी कर सकते हैं, और गैर-बेयर का उपयोग करें चेक-आउट फ़ाइलों के लिए एक अलग क्षेत्र होने के बजाय रेपो। http://git.or.cz/gitwiki/GitFaq#non-bare

यदि आप के रूप में "नंगे" दूरस्थ रेपो कॉन्फ़िगर किया है अपने काम के पेड़ अपडेट कर देगा:

0

मैं के रूप में इस सामान्य प्रश्न प्रविष्टि में विस्तृत बाद अद्यतन हुक का उपयोग करें।

0

गिट संस्करण 1.9.1
उबंटू सर्वर 14।04 LTS
दीप सर्वर

मैं अपने Git रेपो की मेरी कार्यशील निर्देशिका अद्यतन करने के लिए जब भी अपने वेब डेवलपर्स में से एक सर्वर के लिए एक परिवर्तन धक्का मेरी दीप सर्वर की स्थापना की। मैंने देखा कि लॉग नए कामों को नोट करेगा, लेकिन कामकाजी निर्देशिका को अपडेट नहीं करेगा। प्रत्येक अद्यतन के लिए इसे मैन्युअल रूप से (गिट चेकआउट-एफ) करने के बजाय, इसे पुश प्राप्त होने के बाद स्वचालित रूप से ऐसा करने के लिए सेट किया जा सकता है।

  1. अपने ".git" निर्देशिका में, "हुक" फ़ोल्डर में जाने। !

    #/bin/श से एक धक्का प्राप्त करने के बाद

    # अद्यतन कार्यशील निर्देशिका:

  2. नाम "बाद प्राप्त" "हुक" के भीतर इस सामग्री के साथ फ़ोल्डर एक फ़ाइल बनाएँ रिमोट क्लाइंट
    # यह गिट कामकाजी निर्देशिका पर निर्देशित किया जाना चाहिए।

    GIT_WORK_TREE =/var/www/dev_site Git चेकआउट

  3. -f "हुक" फ़ोल्डर में लिखकर फ़ाइल निष्पादित करने के लिए अनुमतियां सक्षम "chmod + x के बाद प्राप्त"।

यह अब गिट रेपो को धक्का दिया जाता है जब यह कार्यशील निर्देशिका अद्यतन करेगा। जब मैं ब्राउज़र में जाता हूं तो मेरी साइट अब बदलाव दिखाती है।

इस उदाहरण में, मेरी कार्यशील निर्देशिका "/var/www/dev_site" है। इसके अनुसार इसे रेपो कहां बदलें।

कृपया ध्यान दें, यह रेपो एक नंगे रिपो नहीं है। एक नंगे रेपो में एक कार्यशील निर्देशिका नहीं है जो एक वेब सर्वर से पढ़ सकता है।