2014-12-03 6 views
5

एक बहुत नोब सवाल।क्या गिट केवल टेक्स्ट फ़ाइलों/स्रोत कोड के लिए अच्छा है?

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

यह पीडीएफ, छवियों, exe-files में परिवर्तनों को कैसे ट्रैक करता है, अगर बिल्कुल? यदि यह पूरी तरह से बदली गई फ़ाइलों को स्टोर करता है क्योंकि हेड संस्करण के साथ कुछ अंतर होता है, तो कुछ कमियों के बाद भंडार काफी बड़ा हो सकता है .. या फिर भी यह टेक्स्ट फ़ाइलों के अलावा फ़ाइलों में केवल वृद्धिशील परिवर्तनों को सहेजने का प्रबंधन करता है?

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

उत्तर

4

गिट देख सकता है कि आपने अपनी गैर-पाठ फ़ाइलों को बदल दिया है, लेकिन आप उस मामले में सबसे अच्छा गिट नहीं प्राप्त कर पाएंगे। पाठ फ़ाइलों के साथ आप देख सकते हैं कि विभिन्न संस्करणों/प्रतिबद्धताओं के बीच वास्तविक अंतर क्या है।

कहा जा रहा है कि, आप इस solution for image diffs in git को आजमा सकते हैं। मुझे यकीन है कि अन्य फ़ाइल प्रकारों के बीच अंतर प्रदर्शित करने के लिए सॉफ़्टवेयर होना चाहिए, जिसकी आपको आवश्यकता हो सकती है और इससे मतभेदों की जांच करने में संवेदना होगी।

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

EDIT:

और कोई, ̶ Git करता नहीं बचा वृद्धिशील परिवर्तन के लिए गैर-पाठ फ़ाइलों, ̶ लेकिन न तो करता है ड्रॉपबॉक्स, ̶ जहाँ तक मैं ̶k̶n̶o̶w̶.̶

ऐसा लगता है कि git तरह गैर भंडारण है -टेक्स्ट फ़ाइलों को चरित्र तारों के रूप में, इसलिए हां इसे केवल अंतरों का ट्रैक रखना चाहिए। इसलिए, उदाहरण के लिए, meld या Beyond Compare जैसे किसी भी अच्छे difftool उदाहरण के लिए दो छवियों के बीच अंतर बताने में सक्षम होना चाहिए। उदाहरण के लिए, मैं Beyond Compare के साथ दो png छवियों के बीच अंतर देखने में सक्षम था।

यह पीडीएफ फाइलों के साथ भी अच्छा काम करता है, लेकिन exe फाइलों की तरह, आपको संस्करण फ़ाइल के साथ उन फ़ाइल प्रकारों को ट्रैक नहीं करना चाहिए।PDF एस के बजाय, उनके स्रोत कोड का ट्रैक रखें - उदाहरण के लिए LaTeX फ़ाइलें (जो सादा पाठ हैं)। उनकी प्रकृति के कारण, संकलित फाइलें, जैसे exe फ़ाइलें संस्करण नियंत्रण के लिए उपयुक्त नहीं हैं। इसका कारण यह है कि यदि आप सीधे फ़ाइल की वर्ण स्ट्रिंग में संपादित करते हैं, तो आप अधिक पूरा नहीं कर पाएंगे - आपको स्रोत कोड संपादित करना होगा।

2

बड़ी परियोजनाओं के लिए गिट का उपयोग किया जा सकता है, लेकिन आपको जेनरेट की गई फ़ाइलों (जैसे पीडीएफ, एक्सई इत्यादि) में जांच नहीं करनी चाहिए। .gitignore फ़ाइल (विवरण के लिए Google) जोड़ें जिसमें लिखा गया है कि कौन सी फाइल गिट को अनदेखा करनी चाहिए।

यदि आप वर्ड फाइल (या इसी तरह) को शामिल करना चाहते हैं, जो द्विआधारी फाइलें हैं, लेकिन जेनरेट नहीं हैं, तो ऐसी फाइलें "diff" कैसे करें, यह जानने के लिए संभावनाएं हैं। इसका मतलब यह है कि आप गिट बताते हैं कि यह दो शब्द फ़ाइलों की तुलना कैसे कर सकता है और यह तय कर सकता है कि दो अलग-अलग शब्द फ़ाइलों को कैसे विलय करना है। दोबारा, Google यह कैसे किया जाए इसके विवरण जानने के लिए आपका तला हुआ जाएगा।

1

यदि आपने फ़ाइल में कोई बदलाव किया है तो गिट केवल परिवर्तन (अंतर) को स्टोर नहीं करता है। इसके बजाय यह पूरी फाइल को दोबारा स्टोर करता है। उदाहरण: यदि आपने 2 एमबी फ़ाइल की एक पंक्ति बदल दी है। गिट पूरी फाइल को नए बदलाव के साथ फिर से स्टोर करेगा। (तब भंडार का आकार 4 एमबी होगा)

2

बाइनरी फ़ाइलें इस श्रेणी में जा सकते हैं:

  1. बाइनरी फ़ाइलें कि स्रोत कोड द्वारा reproduced किया जा सकता है। उन्हें ट्रैक करने और रखने में कोई बात नहीं है। आप परिवर्तन करने के लिए आमतौर पर .exe फ़ाइल संपादित नहीं करते हैं। बस निर्माण की पुनरुत्पादन की आवश्यकता वाली सभी बिल्डिंग स्क्रिप्ट को स्टोर करना सुनिश्चित करें और बाइनरी को .gitignore में जोड़ें।

  2. बाइनरी फ़ाइलें जिन्हें संपादित और तुलना किया जा सकता है। उदाहरण के लिए, कार्यालय फाइलें। here दिखाए गए पाठ जैसे उन्हें परिवर्तित करने जैसे कुछ कामकाज हैं। कुछ जीआईटी आईडीई बाहरी उपकरण को अलग करने की अनुमति दे सकते हैं।

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

  4. बाइनरी फ़ाइलें जिन्हें आम तौर पर संपादित नहीं किया जाएगा और इनपुट के रूप में उपयोग किया जाता है। उदाहरण के लिए, एक .jar फ़ाइल निर्भरता के रूप में। इस मामले में आपको इस बाइनरी ऑब्जेक्ट के बारे में मेटाडेटा चाहिए और इसे कैसे प्राप्त किया जाए। आप मेवेन जैसे सिस्टम आज़मा सकते हैं जहां आप pom.xml को संग्रहीत निर्भरताओं को ट्रैक करते हैं और आप बाइनरी को गिटिग्नोर में जोड़ते हैं। अन्य फ़ाइलों को मैन्युअल Dependecies.txt फ़ाइल द्वारा ट्रैक किया जा सकता है (इस संस्करण को My.Lib1.jar संस्करण 10.32.3 ...) की आवश्यकता है। प्रत्येक बदलाव के साथ फ़ाइल को अद्यतन करने के लिए आपको अनुशासन की आवश्यकता होगी। यह आपको यह जानने में मदद करेगा कि प्रत्येक संस्करण में बाइनरी परिवर्तन कहां बदलता है।

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