2012-01-20 5 views
5

मैं गिट के लिए नया हूं और मैं जानना चाहता हूं कि एक बहुत ही बुनियादी परिदृश्य से निपटने के लिए कैसे। मैंने गिट के बारे में स्टैक ओवरफ्लो पर इतनी सारी पोस्ट पढ़ी लेकिन अभी भी जवाब नहीं पता लगाया जा सकता है।मेरी देव गिट शाखा में मूल/मास्टर का ट्रैक कैसे रखें

हमारे पास एक मूल/मास्टर रिमोट शाखा है जो हर कोई काम कर रही है। मेरे पास एक सुविधा है जिसे मैं कार्यान्वित करना चाहता हूं और इसे विकसित करने में समय लग सकता है। इस बीच, लोग मूल/मास्टर को कोड में जांच कर रहे हैं।

क्या होगा की तरह मेरे कार्यप्रवाह देखो और कैसे मैं अपने Git शाखा की स्थापना, निम्नलिखित जरूरतों को देखते हुए के बारे में जाना चाहिए:

  1. मैं अपने शाखा में कोड परिवर्तन के लिए प्रतिबद्ध है और उन्हें पुश करने के लिए सक्षम होना चाहते हैं हमारे सर्वर पर एक दूरस्थ शाखा में, इसलिए यदि मेरा कंप्यूटर तला हुआ गया है तो मैं परिवर्तनों को खो नहीं पाता हूं।

  2. मैं अपनी शाखा को मास्टर शाखा के साथ अद्यतित रखना चाहता हूं।

  3. मैं नियमित विलय को कम करना चाहता हूं। मुझे गिट रिबेस की अवधारणा पसंद है इसलिए मैं इसके उपयोग को अधिकतम करना चाहता हूं और इसलिए फास्ट-फॉरवर्ड विलय करता हूं।

  4. किसी बिंदु पर हमें अपनी शाखा फ़ीचरए को मूल/मास्टर में विलय करना होगा।

सारांश:

मैं कैसे सेटअप एक शाखा है कि मूल/गुरु से खींचती है लेकिन मूल/मेरी-शाखा की धक्का करते हैं?

मेरा वर्कफ़्लो कैसा दिखता है?

अद्यतन:

धन्यवाद @ होगा-pragnell! आपके समाधान और निम्नलिखित के बीच क्या अंतर है।

GitHub पर इस पृष्ठ का सुझाव:

https://github.com/diaspora/diaspora/wiki/Git-Workflow

क्रम विकास ट्रंक से नवीनतम अद्यतन प्राप्त करने के लिए एक बार की स्थापना के कर दर्ज करके एक रिमोट के रूप में मुख्य GitHub रेपो स्थापित करने के लिए:

$ git remote add upstream git://github.com/diaspora/diaspora.git 
$ git fetch upstream 
$ git checkout master 
$ git rebase upstream/master 
$ git checkout 100-retweet-bugfix 

[सभी शाखा में आवश्यक के रूप में के लिए प्रतिबद्ध है सुनिश्चित करें]

$ git rebase master 

उत्तर

5

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

एक नया स्थानीय शाखा

git checkout -b myFeature 

पुश है कि एक नए दूरस्थ शाखा को (this stackoverflow question देखें कि क्या आप इस चरण में अधिक जानकारी की जरूरत है)

git push origin myFeature 

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

git checkout master 
git pull (this will just fast-forward if you don't make any local changes to master) 
git checkout myFeature 
git rebase master 

जब आपके सुविधा समाप्त हो गया है, आप मर्ज करने या अपने शाखा वापस मास्टर करने के लिए इतना है कि rebase कर सकते हैं हर कोई अन्यथा आपकी नई सुविधा मिलती है। इस तरह:

git checkout master 
git merge myFeature 
git push origin master 
+0

धन्यवाद @ will-Pragnell! मेरा प्रश्न निम्नलिखित के साथ अद्यतन किया गया है: आपके समाधान और निम्नलिखित के बीच क्या अंतर है। github पर यह पृष्ठ सुझाव देता है: https://github.com/diaspora/diaspora/wiki/Git-Workflow विकास ट्रंक से नवीनतम अपडेट प्राप्त करने के लिए मुख्य गिटहब रेपो स्थापित करने के लिए एक बार सेटअप करें दर्ज करके एक रिमोट के रूप में: $ Git दूरस्थ नदी के ऊपर Git जोड़ें: //github.com/diaspora/diaspora.git, $ Git लाने नदी के ऊपर, $ Git चेकआउट मास्टर, $ Git rebase नदी के ऊपर/मास्टर, $ Git चेकआउट 100-रीट्वीट-बग सुधार, [सुनिश्चित करें कि सभी शाखा में आवश्यक के रूप में के लिए प्रतिबद्ध है बनाना], $ Git मास्टर – ben39

+0

rebase करने के बाद: 'Git चेकआउट मास्टर Git मर्ज myFeature Git पुश मूल मास्टर ' मुझे 'मिला है! [अस्वीकार] बहु प्रेषक -> बहु प्रेषक (गैर-फास्ट-फॉरवर्ड) त्रुटि: कुछ रेफ को 'ssh: // xxx' पर धक्का देने में विफल रहा, इतिहास को खोने से रोकने के लिए, गैर-तेज़-आगे अपडेट अस्वीकार कर दिए गए थे फिर से धक्का देने से पहले रिमोट चेंज (जैसे 'गिट पुल') मर्ज करें। विवरण के लिए 'गिट पुश --help' के 'फास्ट-फॉरवर्ड' अनुभाग के बारे में नोट देखें। – ben39

+0

आपकी दूसरी टिप्पणी के संबंध में - क्या आपने विलय करने का प्रयास करने से पहले मास्टर पर रीबेस किया था? (थोड़ी देर बाद जब आपकी एक अतिरिक्त पल हो, तो थोड़ी देर बाद आपकी पहली टिप्पणी देखेंगे - क्षमा करें, यहां बहुत व्यस्त है!) –

0

git checkout -b FeatureA (बना सकते हैं और चेकआउट शाखा)
git push origin FeatureA नई शाखा FeatureA पर

कार्य (मूल करने के लिए अपने नव निर्मित शाखा धक्का)। आप बार-बार ऐसे मर्ज तो

git rebase origin 

rebase करने के लिए भविष्य में जब भी आप मास्टर में मर्ज करना चाहते हैं नहीं करना चाहती।

git checkout master 
git merge FeatureA 
git push origin master 
+0

जब भी मैं 'गिट रीबेज मास्टर' करता हूं तो 'गिट पुश मूल/बहु-प्रेषक' मुझे निम्न मिलता है 'ssh: xxx ![अस्वीकार] बहु प्रेषक -> बहु प्रेषक (गैर-फास्ट-फॉरवर्ड) त्रुटि: कुछ रेफ को 'ssh: // xxx' पर धक्का देने में विफल रहा, इतिहास को खोने से रोकने के लिए, गैर-तेज़-आगे अपडेट अस्वीकार कर दिए गए थे । फिर से धक्का देने से पहले रिमोट चेंज (उदा। 'गिट पुल') मर्ज करें। विवरण के लिए 'गिट पुश --help' के 'फास्ट-फॉरवर्ड' अनुभाग देखें – ben39

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