2012-03-21 7 views
24

में बिना किसी प्रतिबद्धता के पैच कैसे बनाएं मैंने कुछ खोज ऑनलाइन की। मुझे पता है कि आप प्रतिबद्धता के बाद प्रारूप-पैच का उपयोग कर सकते हैं, लेकिन मेरी स्थिति थोड़ा अलग है।गिट

मैं एसवीएन में "डीपीके" के समान एक पैच बनाना चाहता हूं, इसलिए मैं इसे कोड समीक्षा के लिए भेज सकता हूं, लेकिन मैं अभी तक इसे प्रतिबद्ध नहीं करना चाहता हूं।

मैं इसे गिट के साथ कैसे प्राप्त कर सकता हूं?

+5

की तरह एक DVCS का एक प्रमुख बिंदु को हटाने के लिए हटाने के लिए गिट यह है कि कुछ करने से बचने के लिए कोई कारण नहीं है। –

+0

किसी ने भी सवाल का जवाब नहीं दिया है .. उसने काम करने के बारे में कुछ भी नहीं पूछा .. hes ने पूछा कि आप एक पैच कैसे बनाते हैं जिसे अन्य उपयोगकर्ताओं को वितरित किया जा सकता है। – Stephen

+0

संबंधित: [git प्रारूप-पैच को कम करने के बिना] (http://stackoverflow.com/q/7837218/183120) – legends2k

उत्तर

7

गिट में प्रतिबद्ध करना एक सस्ता और पूरी तरह से स्थानीय ऑपरेशन है, इसलिए जब तक आप इसे कहीं भी धक्का नहीं देते तब तक ऐसा करने से बचने का कोई कारण नहीं है।

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

$ git checkout -b feature-foo # create and switch to new branch feature-foo 
$ git commit 

# do whatever you need to do 

$ git checkout master   # switch back to the master branch 
$ git merge feature-foo  # merge your change into master (optional) 
$ git branch -d feature-foo # delete the branch 
+8

सहायक नहीं है। कभी-कभी मैं प्रतिबद्ध होने से पहले स्थानीय परिवर्तन देखना चाहता हूं ताकि मैं उन चीज़ों को पकड़ सकूं जिन्हें मैं प्रतिबद्ध नहीं करना चाहता था। – Stephen

+5

आप इसके लिए 'गिट diff' कर सकते हैं। – bfontaine

+3

@Stephen 'git add --patch' – sigod

1

गिट में स्थानीय रेपो के लिए प्रतिबद्धता "बाध्यकारी" नहीं है। आप अपने परिवर्तन कर सकते हैं, अपना पैच बना सकते हैं और फिर अपनी शाखा पर पिछली प्रतिबद्धता पर सॉफ्ट रीसेट कर सकते हैं और ऐसा लगता है कि आपकी प्रतिबद्धता कभी नहीं हुई।

कहा जा रहा है कि पैच बनाने के बाद आपको अपनी शाखा को रीसेट करने का कोई कारण नहीं है। आप रेपो में प्रतिबद्धता छोड़ सकते हैं और कोड समीक्षा पूरी होने तक इसे धक्का देने से बचें। यदि आपको वापस जाना है और मूल प्रतिबद्धता में परिवर्तन करना है तो आपके पास उस बिंदु पर विकल्प हैं।

और यदि आप प्रतिबद्धता के लिए एक शाखा बनाते हैं क्योंकि हैमर सुझाव देता है कि यह वापस जाने के लिए और बाद में किसी भी परेशान रिबेजिंग और धक्का देने से पहले मुख्य शाखा में किए बिना परिवर्तन करना आसान बनाता है।

6

@hammar की तरह, कहा प्रतिबद्ध सस्ती है और फिर आप दूर उड़ा सकते हैं के साथ git reset आदि

तुम भी छिपाया जा सकता है और उसके बाद करना प्रतिबद्ध:

git stash show -p 
79

जब अन्य लोगों को पहले से ही दे दिया था कुछ जवाब जो Git सम्मेलन, ओपी के सवाल के साथ पालन, "बिना प्रतिबद्ध एक पैच बनाने के", यह भी इस तरह से हल किया जा सकता:

git diff > my_patch.txt 

बाद में आप इस पी आवेदन कर सकते हैं atch, भी बिना एक प्रतिबद्ध, द्वारा:

git apply my_patch.txt 

लेकिन अगर आप स्थानीय स्तर पर काम कर रहे हैं, एक git checkout another_branch -m काफी अच्छा है कि another_branch करने के लिए सभी अपने वर्तमान uncommit परिवर्तन लाना है, यहां तक ​​कि पैच और लागू बिना।

+0

यदि आप इस लागू पैच को हटाना चाहते हैं: गिट आवेदन -R my_patch.txt – Sourabh

+2

इस तरह हम नई/अनचाहे फ़ाइलों को शामिल नहीं करते हैं! यदि आपको नई फाइलें शामिल करने की आवश्यकता है, तो आपको इंडेक्स (गिट एड) में सभी फाइलें जोड़नी चाहिए और उसके बाद $ git diff --cached> my_patch.txt – dxvargas

+0

इसमें चरणबद्ध फ़ाइलें शामिल नहीं हैं। उन्हें शामिल करने के लिए आपको 'git diff --staged> my_patch.txt' चलाने की आवश्यकता होगी –

7

सामान्य कदम पैच उत्पन्न करने के लिए बिना का उपयोग कर

git commit -a -m "specific message" 

नोट पिछले

  1. पर प्रतिबद्ध अपने स्थानीय परिवर्तन हो: धक्का नहीं है इस लिए प्रतिबद्ध।

  2. पैच

    git format-patch -s -n -1 HEAD 
    

    उत्पन्न यह 0001- उत्पन्न होगा।पैच

  3. वापस लौटने स्थानीय प्रतिबद्ध

    git reset --soft HEAD~1 
    

    प्रतिबद्ध लेकिन रखने के अपने काम

    git reset --hard HEAD~1 
    

    अपने काम के साथ प्रतिबद्ध