2014-07-02 26 views
6

मैं ऐसी समस्या में भाग रहा हूं जहां शाखा विलय विफल हो जाता है क्योंकि क्रैशलिटिक्स बाइनरी बदल रहे हैं। मैंने गिटिनोरोर में क्रैशलिटिक्स को जोड़ा, लेकिन अब अगर मैं अब चेकआउट शाखाओं को ढांचा नहीं दिखाता हूं।क्रैशलिटिक्स गिट प्रबंधन

विलय विवादों से निपटने का कोई तरीका है या फ़ाइल में परिवर्तनों को अनदेखा करने के लिए गिट को बताने का कोई तरीका है, लेकिन फ़ाइल को स्वयं ही रखें?

उत्तर

1

यदि आप एक ताजा क्लोन में फ़ाइल चाहते हैं, या एक गिट रिपोजिटरी की सफाई के बाद इसे गिट द्वारा ट्रैक किया जाना चाहिए।

बाइनरी फ़ाइलें विलय करने के लिए सुंदर नहीं हैं। आपसे सवाल यह लगता है कि विलय करने के लिए कुछ भी नहीं है, लेकिन निर्णय सिर्फ यह है कि कौन सी फाइल रखना है। एक बात तुम कर सकते हो .gitattributes और .git/config सेटिंग के माध्यम से इन बाईनरीस के लिए कस्टम स्वत: मर्ज व्यवहार को परिभाषित है:

अपने .gitattributes के लिए निम्न जोड़ें (या की जड़ में है कि सामग्री के साथ एक नई फ़ाइल बनाना अपने Git भंडार)

path/to/file merge=nomerge 

और एक Git विन्यास फ़ाइल में निम्न (.git/config, या ~/.gitconfig)

[merge "nomerge"] 
name = keep current version 
driver = true 

जगह यह निर्देश देता है Git सिर्फ संघर्ष की अनदेखी और से फ़ाइल रखना में शाखा जिसके लिए आप विलय कर रहे हैं। driver = true विलय के लिए उपयोग करने के लिए एक बाहरी प्रोग्राम निर्दिष्ट करता है। इस मामले में कार्यक्रम true है जो किसी भी यूनिक्स सिस्टम पर उपलब्ध होना चाहिए और सफलतापूर्वक कुछ भी नहीं करता है। यदि आपको कुछ स्मार्ट की आवश्यकता है तो वास्तविक कस्टम तर्क जोड़ने के तरीकों पर कस्टम मर्ज ड्राइवर को परिभाषित करने पर the gitattributes manpage अनुभाग देखें। उदाहरण के लिए फ़ाइल में कोई संस्करण सूचक होने पर, वास्तव में फ़ाइल के उच्च संस्करण को हमेशा रखने जैसी जटिल चीजें कर सकती हैं।

आपको git add को .gitattributes फ़ाइल को भंडार में रखना चाहिए। वास्तविक मर्ज ड्राइवर परिभाषा इस तरह से संग्रहीत नहीं की जा सकती है कि नए क्लोन स्वचालित रूप से बॉक्स को बाहर निकाल देते हैं। तो आपको इसे प्रत्येक क्लोन में या प्रत्येक कंप्यूटर पर प्रति उपयोगकर्ता कॉन्फ़िगरेशन में मैन्युअल रूप से जोड़ने की आवश्यकता है जहां आपको इसकी आवश्यकता है।

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