git - with - "घातक: लाइन XX पर भ्रष्ट पैच" जब एकल लाइन मचान




integrate git bash with visual studio code (4)

जब मैं git gui (राइट क्लिक -> कमिट के लिए स्टेज लाइन्स) का उपयोग करके सिंगल लाइन या मल्टीपल लाइन्स को स्टेज करने की कोशिश कर रहा हूँ, तो मुझे निम्न त्रुटि हो रही है। यह पहली बार नहीं है जब यह मेरे लिए हुआ है, और मैंने दूसरों को इसका सामना करते हुए पाया है। जब भी मैं इसे हल नहीं कर पाया।

क्या कभी किसी को इस समस्या का सामना करना पड़ा? क्या ऐसा कुछ है जो मैं कर सकता हूं (सभी फ़ाइल का मंचन वास्तविक समाधान नहीं है)

अपडेट: यहां एक फाइल है जो मुझे डिलीट लाइन को स्टेज करने की कोशिश करते समय निम्न त्रुटि देता है।

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/texture"
    android:tileMode="repeat"
-   android:dither="true"
    >
</bitmap>
\ No newline at end of file

यहाँ त्रुटि संदेश है:

fatal: corrupt patch at line 14

अजीब तरह से ठीक ठीक 14 लाइन भी नहीं है !? नोट एक नई लाइन के साथ फ़ाइल को समाप्त करने से समस्या हल नहीं हुई


Kyl191 के उत्तर से प्रेरित होकर मैं इस समस्या के लिए एक सरल समाधान लेकर आया:

  1. अपनी फ़ाइल के अंत में newline वर्ण जोड़ें

  2. सभी परिवर्तनों को रोकें

    git stash
    
  3. अपनी फ़ाइल के अंत में एक बार फिर से newline वर्ण जोड़ें, ताकि आपके वर्तमान फ़ाइल के साथ-साथ आपके मंचित संस्करण में भी एक newline वर्ण हो

  4. इसी हंक को चरणबद्ध करें (जिसमें केवल आपकी नई रेखा है)

    git stage <your file>
    
  5. अपने परिवर्तनों को स्टैश से पॉप करें

    git stash pop
    

अब आपको इस त्रुटि के बिना gui के माध्यम से एकल लाइनों को सक्षम करने में सक्षम होना चाहिए। यह काम करता है क्योंकि जब आप सिर्फ नई लाइन वाले भाग का मंचन करते हैं, तो पहले से ही संस्करण से पुनर्प्राप्त संस्करण के लिए एक फ़ाइल जो एक नए वर्ण के साथ समाप्त होता है देखता है।


जब आप जिस चंक के साथ काम कर रहे हैं वह बहुत बड़ा है (यानी बहुत अधिक क्रमिक रूप से संशोधित) सूचकांक से लाइनें जोड़ने / हटाने में जीआईटी जीयूआई विफल रहता है।

मेरा वर्कअराउंड: यदि परिवर्तन "गुलाबी की दीवार" नहीं है (यदि चंक के बीच में कुछ असंबद्ध लाइनें हैं), तो संपादन> विकल्प पर जाएं और अलग-अलग के संदर्भ में लाइनों की संख्या कम करें। यदि यह काम नहीं करता है, तो आप खराब हैं; एक अन्य उपकरण (उदाहरण के लिए कमांड लाइन की तरह) का उपयोग करें।


दरअसल, ऐसा अक्सर तब होता है जब आप '-' लाइनें संपादित करते हैं।
जब आप '-' को हटा देते हैं और इसके स्थान पर '' (स्पेस) जोड़ना भूल जाते हैं

या, गलती से, आप दो स्थान जोड़ते हैं और आप पहचान के रूप में 'टैब' का उपयोग करते हैं

अपना पैच खोलें और जाँच करें कि सभी लाइनें जो आप अछूती छोड़ना चाहते हैं, उन्हें '' (एक स्थान) से शुरू किया गया है

मैंने देखा है कि कुछ लोग --ignore-space-change --ignore-whitespace --whitespace=fix को वर्कअराउंड के रूप में --whitespace=fix करते हैं लेकिन यह एक और चीज है जिसे आपको नहीं मिलाना चाहिए।

अपना पैच खोलें और जांच लें कि आप जिस लाइन को अछूता छोड़ना चाहते हैं, उसकी शुरुआत '' (स्पेस) से हुई है

युपीडी

यह भी संभव है कि आपके संपादक के पास विकल्प हो: "अंतिम पंक्ति में रिक्त स्थान हटाएँ", इसलिए, जब आप अपने संपादक में पैच सहेजें:

-Line with space at end <--- NOTICE: Here one space at the end
+Line with no space at end<--- Here no space

आपका संपादक स्थान को पीछे हटाता है और पैच इस तरह बनता है:

-Line with space at end<--- Here no space. Patch will FAIL!!!
+Line with no space at end<--- Here no space also

यह पैच विफल हो जाएगा क्योंकि मूल फ़ाइल में कोई रेखा नहीं है:

-Line with space at end<---

यह है:

-Line with space at end <--- 

UPD2

तो अगर अगली पंक्ति में आपके पैच में

android:tileMode="repeat"

आपका संपादक प्रशिक्षण स्थान को हटा देता है। पैच फेल हो जाएगा


मुझे यह त्रुटि हॉकिंग करते समय हो रही थी।

यहाँ उल्लेखित "व्हाट्सएप" ने मुझे याद दिलाया कि मेरे पास, मेरे git के अलग-अलग विकल्प हैं, "-w", जो अलग-अलग होते हुए सफेद-स्थान को छोड़ देता है।

मैंने उस झंडे को हटा दिया (git-gui के "विकल्प ..." का उपयोग करके), और त्रुटि के बिना स्टेज स्टेज करने में सक्षम था। फिर मैंने इसे वापस जोड़ दिया (क्योंकि मैं आमतौर पर व्हाट्सएप को अलग नहीं देखना चाहता जब जांच की गई कि क्या बदल गया है)।

यकीन नहीं है कि यह आपकी मदद करेगा लेकिन इसे आज़माना आसान है और इसे पूर्ववत करना आसान है।





git-gui