2011-09-26 13 views
17

Git का उपयोग कर, मैं अक्सर अपने आप को जब master में काम कर निम्न कार्य लगता है:पुल, rebase, धक्का, एक आदेश में (या बस कुछ ही)

# work work work... 
$ git checkout -b temp 
$ git commit -a -m 'more work done' 
$ git checkout master 
$ git pull origin master 
# turns out master was updated since my previous pull 
$ git checkout temp 
# I don't want a merge commit for a simple bugfix 
$ git rebase master 
$ git checkout master 
$ git merge temp 
$ git push origin master 
$ git branch -d temp 

... और मैं कर रहा से थक इस। क्या इस नृत्य को सभी चेकआउट के बिना करने का कोई तरीका है, और अधिमानतः अस्थायी शाखा बनाने के बिना (मैन्युअल रूप से)?

उत्तर

19

आप एक शाखा temp बुलाया बनाने नहीं कोई आपत्ति नहीं है, तो आप सिर्फ कर सकता है master पर सभी निम्नलिखित:

git commit -a -m 'more work done' 
git fetch origin 
git rebase origin/master 

... या समतुल्य:

git commit -a -m 'more work done' 
git pull --rebase origin master 

यदि आप करते हैं temp शाखा रखना चाहते हैं, हालांकि, आप अभी भी master को pull करने के लिए चेक आउट करके थोड़ा छोटा कर सकते हैं - आपको केवल fetch की आवश्यकता है और फिर अपनी शाखा कोपर रीबेस करें:

# work work work... 
$ git checkout -b temp 
$ git commit -a -m 'more work done' 
$ git fetch origin 
# It looks like origin/master was updated, so: 
$ git rebase origin/master 
# Then when you finally want to merge: 
$ git checkout master 
$ git merge temp 
$ git push origin master 
$ git branch -d temp 

sehe's answer मुझे याद दिलाता है कि आप बदल सकते:

$ git fetch origin 
$ git rebase origin/master 

... के साथ:

$ git pull --rebase origin master 

... जो लगभग बराबर है। अंतर यह है कि जब आप git fetch origin चलाते हैं, तो origin के लिए आपकी सभी रिमोट-ट्रैकिंग शाखाओं को अपडेट किया जाएगा, जबकि जब आप origin से कोई विशेष शाखा खींचते हैं, तो उनमें से कोई भी नहीं - यह केवल अस्थायी रेफरी FETCH_HEAD अपडेट किया गया है। मैं व्यक्तिगत रूप से एक अतिरिक्त कमांड (git fetch origin) चलाने और आउटपुट में बदल चुके सभी दूरस्थ शाखाओं को देखना पसंद करता हूं।

+0

महान है! मुझे '--rebase' विकल्प के बारे में पता नहीं था, ऐसा लगता है कि यह मेरे वर्कफ़्लो को पूरी तरह से फिट करता है। –

+0

मेरे लिए महान काम करें! वैसे, हम 'अस्थिर/असामान्य परिवर्तन' को कैसे नजरअंदाज कर सकते हैं? –

8

आपको कम से कम रिबेसिंग अनुकूलन कर सकते हैं: git pull --rebase

मैं बिल्कुल यकीन है कि कैसे आप चीजों की तरह नहीं कर रहा हूँ, लेकिन मैं इस तरह एक तरह से मेरी कार्यप्रवाह की तरह: इस तरह मैं रखने

git checkout -b temp 
git commit -a -m 'more work done' 
git pull --rebase origin master 

मेरी हाथ पर शाखा पर ध्यान केंद्रित करें।

फिर बाद में, मैं

git checkout master 
git pull origin master 
git merge temp 

आदि