2010-01-05 5 views
21

कहें कि कई फाइलें संशोधित हैं और मैं सिर्फ एक फाइल को हर बार प्रतिबद्ध करना चाहता हूं। उसको कैसे करे? स्थिति के साथ एक उदाहरण दिया गया नीचे दिखेगा। धन्यवाद!!गिट का उपयोग कर एक समय में एक फ़ाइल कैसे प्रतिबद्ध करें?

पूर्व:

> git status 
# modified: file01.txt 
# modified: file02.txt 
# modified: file03.txt 
# modified: file04.txt 
# modified: file05.txt 

उत्तर

17

कुछ तरीके हैं, लेकिन सबसे सरल शायद है:

git commit file01.txt 
git commit file02.txt 
... 

किसी भी पथ आप सूची के लिए प्रतिबद्ध आदेश के बाद कि क्या वे का मंचन कर रहे हैं की परवाह किए बिना प्रतिबद्ध होना होगा प्रतिबद्ध होना करने के लिए। वैकल्पिक रूप से, आप प्रत्येक एक मंच सकते हैं और फिर प्रतिबद्ध:

git add file01.txt 
git commit 

git add file02.txt 
git commit 

... 
+6

यह नियमित गिट प्रतिबद्ध है, लेकिन आंशिक फ़ाइल प्रतिबद्ध करने के लिए -p या -e की आवश्यकता है – radistao

+0

अरे, मुझे इस आदेश का उपयोग करने से पहले इस टिप्पणी को पढ़ना चाहिए था। इस सवाल का गलत जवाब है! – default

+0

@ डोंसचो सवाल पूछता है कि एकल फाइलें कैसे करें (फाइलों के हिस्सों में नहीं)। जवाब सही है, भले ही आपने प्रश्न शीर्षक को अलग-अलग लिखा होगा (शायद "एकल फाइलों को कैसे प्रतिबद्ध करें) होना चाहिए। –

2
git add file01.txt 
git stash 
git commit -m'commit message' 
git stash pop 

दोहराएँ।

+3

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

+0

टूटी हुई कोड करने में क्या गड़बड़ है? जब तक यह प्रकाशित नहीं होता है और कोई भी इसे पकड़ने के लिए प्रबंधन नहीं करता है। –

+0

@Pat, मैं इसे काम करने की काम करने और गिट svn के साथ काम करने की आदत से बाहर करता हूं जहां मुझे डॉकिट के साथ परिवर्तन अपलोड करने से पहले परिवर्तनों को छिपाना पड़ता है। लेकिन आप सही कह रहे हैं, ओपीएस मामले में स्टैश पॉप –

45

git add -pgit commit का उपयोग करें। git add -p आपको प्रत्येक बदलाव के लिए पूछता है कि इसे करने के लिए इसे चरणबद्ध करना है, जो कि बहुत सुविधाजनक है।

आप -pgit reset और git checkout के साथ भी उपयोग कर सकते हैं।

+7

मुझे सच में लगता है कि गिट ऐड-पी को अधिक जोखिम की आवश्यकता है! यह बहुत अच्छा वर्कफ़्लो बनाता है क्योंकि आपको फ़ाइल नामों की परवाह नहीं है, केवल आपके परिवर्तन स्क्रॉलिंग करते हैं। – dpavlin

14

git add -p DAF के जवाब द्वारा वर्णित अच्छा है, लेकिन उठा और चुनने के लिए एक और अधिक प्रत्यक्ष दृष्टिकोण के लिए, मैं वास्तव में पसंद कर रहा हूँ:

git add -e

यह उचित पैच उत्पन्न करता है, तो यह में लोड करता है आपके पसंदीदा संपादक ताकि आप इसे वांछित के रूप में संपादित कर सकें। जब आप फ़ाइल को सहेजते हैं और संपादक से बाहर निकलते हैं, और केवल पैच के आपके संपादित संस्करण द्वारा किए गए परिवर्तन इंडेक्स में जोड़े जाते हैं।

यदि आप परिवर्तन किए बिना संपादक को गलती से बंद करते हैं, तो आप शायद get reset HEAD का उपयोग करना चाहेंगे और फिर शुरू करें।

+3

अब मैं '-e' से अधिक '-e' पसंद करता हूं। – Richard

1

किसी फ़ाइल में आंशिक परिवर्तनों को व्यवस्थित करने के विषय पर, यह ध्यान देने योग्य है कि विभिन्न टेक्स्ट संपादकों को कमांड लाइन विकल्पों में से किसी भी तरीके से इसे बेहतर तरीके से करने के लिए समर्थन है।

मैं Emacs के लिए Magit का उपयोग करता हूं, जो शिकारी के माध्यम से आगे या पीछे की ओर बढ़ने के लिए सिंगल कीस्ट्रोक का उपयोग करता है, ग्रैन्युलरिटी में वृद्धि या घटता है, और मौजूदा हंक स्टेजिंग या अन-स्टेजिंग करता है। आप उस क्षेत्र को मैन्युअल रूप से और चरण (या अन-चरण) क्षेत्र को भी चिह्नित कर सकते हैं।

मेरा मानना ​​है कि विम के लिए समान प्लगइन हैं, और अन्य संपादक/आईडीई भी हैं।

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