हालांकि यह पुराना है, यह एक काम करने वाले पेड़ को धक्का देने के लिए बेहद निराश है। https://git.wiki.kernel.org/index.php/GitFaq#Unexpected_behavior
एक बेहतर तरीका वेबसाइट के काम करने वाले पेड़ को मिरर करने के लिए एक बेहतर तरीका बनाना होगा।
सभी एक नंगे रेपो है, कोई काम करने वाला पेड़ नहीं है या इसके बजाय कोई भी फाइल चेक आउट नहीं है। पदानुक्रम सभी चीजों पर विचार किया जाता है और इसकी जांच की जा सकती है। अन्य शब्दों में, यह केवल परिवर्तनों के लिए होस्ट के रूप में कार्य करता है।
निर्देशिका पदानुक्रम आप अपने वेब के लिए, मैं इसे ग्रहण करने के लिए जा रहा हूँ के साथ काम कर रहे हैं बिना जाने के लिए एक मानक वेबसाइट chrooted घर का उपयोग कर लेआउट है ईजी:/घर/उपयोगकर्ता/www
सर्वर के साथ ssh का उपयोग करते हुए Git स्थापित:
वर्तमान साइट की एक काम पेड़
cd /home/user/public_html
git init
git add .
git commit -m "Initial Commit"
दूरस्थ धक्का करने के लिए एक नंगे भंडार अपने स्थानीय सिस्टम से करने के लिए बनाएँ
+०१२३५१६४१०
mkdir /home/user/deploy.git
cd /home/user/deploy.git
git init --bare
लिंक अपने काम पेड़ भंडार और अपने नंगे तैनाती भंडार
cd /home/user/public_html
git remote add deploy /home/user/deploy.git
git remote show deploy
* remote deploy
URL: /home/user/deploy.git
git push deploy master
अब अपने स्थानीय सिस्टम पर एक नया रेपो की स्थापना
git clone ssh://[email protected]/home/user/deploy.git
git branch -a
*master
remotes/origin/HEAD
remotes/origin/master
परिवर्तन अब हम सेटअप 2 हुक तुरन्त बनाने के लिए करने के लिए अपने वेब रिमोट रेपो जब आप इसे दबाते हैं या यदि कोई और जिसे आप इसे धक्का देने के लिए पहुंच देते हैं। चूंकि Git config receive.denyCurrentBranch लंबे समय
दूरस्थ सर्वर पर में परेशानी को बढ़ावा मिलेगा उपेक्षा तैनाती के लिए बाद अद्यतन सक्षम
cd /home/user/deploy.git/hooks
mv post-update.sample post-update
vi post-update
नीचे करने के लिए अपने के बाद अद्यतन हुक को बदलें और बचाने
#!/bin/sh
echo "Pulling changes into public_html [deploy post-update]"
cd /home/user/public_html || exit
unset GIT_DIR
git pull deploy master
exec git update-server-info
अब हम आपके वेब काम करने वाले पेड़ को स्थापित करने के लिए अपने परिवर्तनों को धक्का देने के लिए सेट अप करते हैं यदि कुछ प्रतिबद्ध है।
cd /home/user/public_html/.git/hooks
mv post-commit.sample post-commit
vi post-commit
फिर बदल निम्नलिखित
#!/bin/sh
echo "Pushing changes to deploy [public_html post-commit]"
git push deploy
आप अभी भी अपनी वेब काम कर पेड़ चेकआउट करने के लिए अगर आप की जरूरत विकल्प होता है करने के लिए हुक के बाद करते हैं। यह आपको अपने स्थानीय सिस्टम के मास्टर को दबाते समय अपने परिवर्तनों को अपने वेब के काम करने वाले पेड़ पर तैनात करने से रोक देगा। आप अपने वेब के कामकाजी पेड़ को प्रभावित किए बिना शाखा, रीबेज, रिवर्ट इत्यादि को बिना किसी तैनाती के भंडार का उपयोग करके संघर्ष मार्करों के बारे में चिंता किए बिना शाखा बना सकते हैं। यदि आपको प्रतिबद्ध होने पर अधिक नियंत्रण की आवश्यकता है तो आप पोस्ट-अपडेट के साथ या उसके बाद पोस्ट-प्राप्त का उपयोग कर सकते हैं।
आशा है कि यह किसी और को ओपी के समान करने में मदद करेगा।
हम्म, मुझे जो कुछ भी चाहिए वह recieve.denyCurrentBranch था। धन्यवाद :) – yasar
@ yasar11732, सुनिश्चित करें कि आप कामकाजी डीआईआर को अद्यतित रखने के बारे में नोट पढ़ लें। इसके बिना आपके द्वारा किए गए परिवर्तन गिट इतिहास में दिखाई देंगे, लेकिन जरूरी नहीं कि चेक आउट की गई शाखा आपकी साइट है। – shelhamer
पुhew, यह मेरे लिए एक कठिन काम था, लेकिन अभी भी इसे खींच लिया। धन्यवाद! – yasar