2009-10-22 11 views
21

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

कैसे हम इसे उपयोग करें: हम प्रत्येक परिवर्तन से पहले शाखा गुरु में वापस मर्ज करते हैं, स्थानीय रूप से प्रतिबद्ध है और हमारे GitHub रेपो के लिए धक्का। हम फिर हमारे परीक्षण पर्यावरण में ssh और github repo की मास्टर शाखा खींचें। हमने अभी तक rebase, fetch या tagging को काफी हद तक नहीं पकड़ा है।

मैं यह कैसे उपयोग करना चाहते हैं: मैं की तरह "चरण 1" सर्वर में अलग सर्वर में SSH और खींच एक विशिष्ट टैग किया गया संस्करण में सक्षम होना चाहते हैं। क्या यह संभव है, या मुझे दो अलग-अलग जिथब रिपोज़ चाहिए?

क्या आप git pull वेब सर्वर में एक विशिष्ट शाखा मानते हैं या git push पर एक नया उपनाम बनाते हैं?

क्या आप रिलीज उम्मीदवारों या वातावरण (परीक्षण, विकास, उत्पादन) को एक गिट भंडार के भीतर नियंत्रित कर सकते हैं? या आपको एकाधिक की आवश्यकता है?

यदि खींचने का समाधान है, तो क्या आप एक विशिष्ट tag खींच सकते हैं?

उत्तर

8

असल में, आप एक "केंद्रीय" गिटहब भंडार के साथ बहुत अच्छी तरह से काम कर सकते हैं।

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

तो यह निर्भर करता है कि आप उन सर्वरों पर क्या कर रहे हैं: केवल सत्यापन (स्वीकृत या अस्वीकार की गई स्थिति के साथ), या आगे के विकास भी।
प्रत्येक मामले में, एक उचित नामकरण सम्मेलन वाला एक टैग इतिहास में विशिष्ट प्रतिबद्धताओं का ट्रैक रखने के लिए अच्छा है, लेकिन जब भी आपको विकास प्रयास को अलग करने की आवश्यकता होती है तो शाखाएं आवश्यक होती हैं।

4

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

[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = [email protected]:xiongchiamiov/fourU.git 
[branch "hacking"] 
     remote = origin 
     merge = refs/heads/hacking 
[branch "editor"] 
     remote = origin 
     merge = refs/heads/editor 
[branch "problem-utils"] 
     remote = origin 
     merge = refs/heads/problem-utils 
[branch "tests"] 
     remote = origin 
     merge = refs/heads/tests 

[remote "trunk"] 
     fetch = +refs/heads/*:refs/remotes/trunk/* 
     url = [email protected]:xyztextbooks/fourU.git 
[branch "master"] 
     remote = trunk 
     merge = refs/heads/master 

जब से मैं कंपनी रेपो के लिए अनुमतियों के लिए प्रतिबद्ध है, मैं सिर्फ मर्ज कर सकते हैं (या चेरी पिकअप) दूसरे में एक शाखा से करता है, और उचित करने के लिए इसे ऊपर धक्का: यहाँ मेरी .git/config का हिस्सा है स्थान। अब, अलग-अलग रिपोज़ निश्चित रूप से जरूरी नहीं हैं, लेकिन चूंकि यह एक ओपन-सोर्स प्रोजेक्ट है, इसलिए मैं अपने आधिकारियों द्वारा बनाई गई यादृच्छिक शाखाओं के "आधिकारिक" रेपो को मुक्त रखना चाहता हूं। एक बार जब यह उस बिंदु तक पहुंच जाए जहां इसे संस्करण मिल जाएगा, तो प्रत्येक संस्करण (0.1, 0.1.1, 0.2, इत्यादि) के टैग के साथ 0.x शाखा होगी, जो विशेष रूप से फायदेमंद है क्योंकि जिथब स्वचालित रूप से फ़ाइलों के टैरबॉल बनाता है प्रत्येक टैग पर, एक विशिष्ट संस्करण को उस मशीन पर खींचने के लिए उपयुक्त रूप से उपयुक्त है जिसे पूर्ण इतिहास की आवश्यकता नहीं है।

आपको जिथब ब्लॉग पढ़ना चाहिए; उनके पास तैनाती वर्कफ़्लो का वर्णन करने वाली कुछ अच्छी पोस्ट हैं, जिनमें निश्चित रूप से गिट शामिल है।

16

Pro Git book पढ़ें। आप एक वर्ष के लिए गिट मैन पेज पढ़ सकते हैं और अभी भी इसे प्राप्त नहीं कर सकते हैं: मैन पेज पढ़ने से गिट सीखने की कोशिश करना एक शब्दकोश पढ़कर एक नई भाषा सीखने की कोशिश करना है, यह किया जा सकता है। पुस्तक आपको कुछ हद तक वर्कफ़्लोज़ सिखाएगी जो आप गिट के साथ कर सकते हैं, और किस गिट कमांड का उपयोग करना है और किस संदर्भ में उनका उपयोग करना है।

+1

मैं पिछले कुछ हफ्तों के लिए गिट "पाने" की कोशिश कर रहा हूं। यह वही है जो मैं खोज रहा हूं। –

संबंधित मुद्दे