मैं एक विशेष प्रकार के हंक में अंतःक्रियात्मक रूप से कैसे अस्थिर कर सकता हूं?


106

Git में, यदि मेरे इंडेक्स में एक ही फाइल से कुछ हॉक हैं, तो मैं उनमें से एक को कैसे इंटरेस्ट कर सकता हूं?

क्या संपूर्ण फ़ाइल को अस्थिर करने के लिए कोई विकल्प है, और फिर मैं जो काम करना चाहते हैं, या जो मैन्युअल रूप से काम की कॉपी में बदलावों को पूर्ववत कर रहा है, और फिर उन पूर्ववत परिवर्तनों को जोड़कर फिर से उन चरणों को फिर से व्यवस्थित करना है?

जवाबों:


135

कोशिश करो git reset --patch filename; प्रलेखन केgit add --patch अनुसार इसके विपरीत करना चाहिए । शॉर्ट फॉर्म दोनों कमांड के लिए भी काम करता है।-p


मुझे नहीं लगता कि मेरे संस्करण में यह है (यह 1.6.3.3 है), लेकिन यह सही उत्तर की तरह दिखता है।
एंड्रयू ग्रिम

2
उस स्थिति में (और यह मानते हुए कि आप किसी कारण से अपग्रेड नहीं कर सकते हैं), मेरा सुझाव है कि आप git stash save --keep-indexअपने वर्तमान कार्य प्रतिलिपि परिवर्तनों को सहेजने और रीसेट करने के लिए उपयोग करते हैं। फिर, आप अपनी फ़ाइल को रीसेट कर सकते हैं और उन परिवर्तनों को पूर्ववत् करें जिन्हें आप नहीं चाहते हैं। यदि आप फ़ाइल को पहले कुछ अस्थायी स्थान पर कॉपी करते हैं, तो आप diffअपने द्वारा किए गए परिवर्तनों को सहेजने के लिए उपयोग कर सकते हैं । उसके बाद, आप फ़ाइल को फिर से जोड़ सकते हैं (इंटरेक्टिव ऐड की कोई ज़रूरत नहीं है क्योंकि आपने अन्य बदलावों को दूर कर दिया है, जिनमें आपकी दिलचस्पी नहीं थी)। उपयोग git stash popपुराने बदलाव वापस पाने के लिए, और diffपरिवर्तन आप undid लागू करने के लिए। काफी बोझिल ... :-(
Aasmund Eldhuset

The short form -p also works for both commands... तुम्हारा मतलब है git reset -p filename?
नवाज

1
@ नवाज़: यह सही है - git add -p filenameउस फ़ाइल से चुनिंदा चरणों में परिवर्तन होता है, और git reset -p filenameचुनिंदा रूप से परिवर्तन बदलता है। वहाँ भी है git checkout -p -- filename, जो आपको चुनिंदा रूप से एक फ़ाइल से परिवर्तन को छोड़ने देता है। चेतावनी: में से प्रत्येक addऔर resetदो के अन्य पूर्ववत करने के लिए इस्तेमाल किया जा सकता, लेकिन यदि आप के लिए इस प्रपत्र का उपयोग checkoutएक परिवर्तन निरस्त करने के लिए, आप इसे वापस नहीं मिल सकता है।
अनसुमुंड एल्डहुइट्स

2

git guiअंतःक्रियात्मक चरण या अस्थिर हॉक या लाइनों के लिए एक अच्छा जीयूआई है। प्रीटीयर / बेहतर जीयूआई क्लाइंट हैं, लेकिन git guiहल्के, बिल्ट-इन और क्रॉस प्लेटफॉर्म (लिन, विन, मैक) हैं।

https://git-scm.com/docs/git-gui

बस मंच / अस्थिर करने के लिए एक हंक पर राइट क्लिक करें। लाइनों के लिए, पहले लाइनों को हाइलाइट करें, फिर राइट क्लिक करें।


-1

GitX में फ़ाइल के अस्थिर भाग के लिए एक अच्छा UI है: यहां छवि विवरण दर्ज करें

आधिकारिक ग्राहक को कुछ समय में बनाए नहीं रखा गया है, लेकिन कुछ विशेषताओं के साथ GitHub में अधिक सुविधाओं के साथ एक कांटा लोकप्रिय है। ( इसके बारे में ब्लॉग पोस्ट )


1
विंडोज उपयोगकर्ताओं के लिए, Git एक्सटेंशन में एक अच्छा यूआई है।
अनसमुंड एल्डहुसेट

4
तो में बनाया गया है git gui, सिवाय इसके कि मुझे यकीन नहीं है कि मैं "अच्छा" शब्द का उपयोग
करूंगा

1
SourceTree (विंडोज + मैक) में इसके लिए एक अच्छा यूआई भी है।
चर्नोला

मुझे अब और अधिक ग्राफिकल गिट क्लाइंट्स का उल्लेख करना चाहिए - GitKraken सुंदर है, और इसका समर्थन करता है (हालांकि अब यह वाणिज्यिक उपयोग के लिए भारी शुल्क के साथ आता है)। GitHub का GitHub डेस्कटॉप नि: शुल्क, सुंदर है, और आसानी से मंचन और अस्थिर हॉक का समर्थन करता है। GitKraken और GitHub डेस्कटॉप दोनों क्रॉस-प्लेटफ़ॉर्म हैं, लेकिन न तो ओपन-सोर्स हैं।
jdgregson
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.