/ / दो पैच के बीच डिफ - गिट, डिफ, गिट-फ्लो

दो पैच के बीच डिफ - गिट, डिफ, गिट-फ्लो

आइए मान लें कि मेरे पास एक शाखा है और मैं काम करता हूंकुछ फीचर शाखा, जहां मेरे पास एक या अधिक काम करता है, मैं लगातार कुछ अन्य शाखाओं (भविष्य के लिए प्रतिबद्ध इतिहास को साफ रखने के लिए) के साथ काम करने के साथ-साथ उन्हें संशोधित करता हूं। प्रत्येक चरण में मैं स्थानीय रूप से विकास के सापेक्ष भिन्नता करता हूं। तो मेरे पास diffs का एक सेट है और मैं उनके बीच का अंतर देखना चाहता हूं। मैं इसे आसानी से कैसे कर सकता हूं? मैं किस तरह का गिट कमांड अनुक्रम का उपयोग कर सकता हूं?

अद्यतन करें

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

उत्तर:

उत्तर № 1 के लिए 1

आपका दूसरा वर्कफ़्लो उत्तर है। यहां एक संभावित उपनाम है:

diffdiff = !git stash save -u -q &&
git apply $1 && git add -A && git commit -q -m"1" &&
git reset --hard HEAD@{1} -q &&
git apply $2 && git add -A && git commit -q -m"2" &&
git reset --hard HEAD@{1} -q && git stash pop -q &&
git diff HEAD@{3} HEAD@{1} && :

इसे शाखा पर कॉल करें जहां आप भंडार के बाहर स्थित diff फ़ाइलों के साथ diffs लागू करना चाहते हैं।

git diffdiff <diff_file_1> <diff_file_2>

एक मल्टीप्लाफ्फ़्ट समाधान नहीं, ओएसएक्स पर परीक्षण किया गया हैzsh और bash गोले। यदि आप इसे मैन्युअल रूप से करने के लिए ठीक हैं, तो यह काफी सरल है, यहां पर बहुत अधिक जटिलता एक प्रकार का मूर्खतापूर्ण समाधान प्रदान करना है। आउटपुट की पहली पंक्ति शोर है, ऐसा लगता है जैसे गिट स्टैश पॉप --quiet पैरामीटर का पालन नहीं करता है।

(संपादित करें: अस्थायी शाखा की कोई आवश्यकता नहीं है, इसलिए मैंने उपनाम को सरल बना दिया।)