(यह काफी हद तक ए गेट हॉरर स्टोरी: रिपोजिटरी इंटिग्रिटी विथ साइन्ड कमिट्स -बहुत अच्छा पढ़ा गया है, और इससे अधिक जानकारी कि मैं जवाब में रख सकूं।)
ऐसे कई तरीके हैं जिनमें एक git रिपॉजिटरी से समझौता किया जा सकता है (यह सुरक्षा दोष नहीं है, बस जीवन का एक तथ्य है - इस वजह से git का उपयोग करने से बचना चाहिए)। उदाहरण के लिए, किसी ने आपके रिपॉजिटरी को आपके होने का दावा करने के लिए धकेल दिया होगा। या उस मामले के लिए, कोई व्यक्ति आपके होने का दावा करने वाले किसी अन्य व्यक्ति के भंडार में धकेल सकता है (कोई व्यक्ति आपके स्वयं के भंडार पर भी आपको होने का दावा कर सकता है)। यह डीवीसीएस में जीवन का सिर्फ एक हिस्सा है।
एक उदाहरण के रूप में:
$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com
वहाँ, मैं अपना git कॉन्फ़िगरेशन बदल कर दिखा रहा हूँ कि मैं आप हूँ। और अब मैं दूर कर सकता हूं और उन लोगों को किसी भी तरह से उत्पादन निर्माण में अपना रास्ता बनाने दे सकता हूं, और ऐसा लगता है कि आपने ऐसा किया है।
कमिट्स (और टैग) पर हस्ताक्षर करने के साथ, कोई यह साबित कर सकता है कि कुछ कमिट और टैग्स आप से थे (और जिन चीजों पर हस्ताक्षर नहीं किए गए हैं, उन्हें इसे प्रोडक्शन बिल्ड में नहीं बनाना चाहिए)। यह वास्तव में यह सब करने के लिए महत्वपूर्ण है - हस्ताक्षर करने के द्वारा आप ने कहा है कि यह आपका काम है।
"आपका काम" पहलू विशेष रूप से लिनक्स कर्नेल (और इस तरह से गिट) में महत्वपूर्ण है जो कभी-कभी कॉपीराइट के मुकदमों से प्रभावित होता है। हस्ताक्षर करने से आप कहते हैं कि आपके पास सॉफ़्टवेयर का अधिकार है - यह मूल को ट्रैक करता है। हो सकता है कि आपके पास उस स्रोत तक कोई पहुंच न हो जो कॉपीराइट के रूप में दावा किया जा रहा है और दावा आधारहीन है। यह हो सकता है कि कंपनी यह भूल गई कि आप कुछ साल पहले उनके लिए काम कर रहे थे और उनकी दिशा के तहत कर्नेल में सामग्री को जोड़ा गया था, या जो भी हो।
कुछ वाद-विवाद होता है जैसे कि हर प्रतिबद्धता पर हस्ताक्षर किए जाने चाहिए। से GPG हस्ताक्षर करने Git के लिए प्रतिबद्ध? ('09 में वापस), लिनुस ने लिखा:
प्रत्येक प्रतिबद्ध पर हस्ताक्षर करना पूरी तरह से मूर्खता है। इसका सिर्फ इतना अर्थ है कि आप इसे स्वचालित करते हैं, और आप हस्ताक्षर कम मूल्य के बनाते हैं। यह किसी भी वास्तविक मूल्य को नहीं जोड़ता है, क्योंकि SHA1 के काम के git DAG- श्रृंखला के बाद से, आपको केवल कभी भी एक से सभी आने योग्य बनाने के लिए एक हस्ताक्षर की आवश्यकता होती है, जो कि प्रभावी रूप से उस एक द्वारा कवर किया जाता है। इसलिए प्रत्येक कमिट पर हस्ताक्षर करने से बिंदु गायब है।
Git में साइन करने पर विचारों के बारे में बहुत कुछ वहां भी पढ़ा जा सकता है।
इसने कहा, इसने गिट रास्ते में अपना रास्ता बना लिया।
बहुसंख्यक आम सहमति प्रतीत होती है कि हस्ताक्षर करना अनावश्यक है, लेकिन टैग पर हस्ताक्षर करना बहुत अच्छा है। शीर्ष पर लिंक की गई ब्लॉग पोस्ट बताती है कि किसी को भी सब कुछ पर हस्ताक्षर करना चाहिए। जैसा कि मैंने कहा, इस बारे में कुछ बहस है कि क्या हर कमिट जरूरी है या नहीं।
"हर प्रतिबद्ध बहस पर हस्ताक्षर करने" की कुंजी शायद आपके द्वारा उपयोग किए जाने वाले वर्कफ़्लो के साथ करना है। अधिकांश लोग अपने स्थानीय रेपो में कमिट्स का एक गुच्छा बनाते हैं, और फिर उस सेट को धक्का देते हैं। अंतिम संग्रह को टैग करने के लिए पर्याप्त होना चाहिए (यह मानते हुए, कि, आप सुनिश्चित करते हैं कि सभी परिवर्तन सही हैं)। यदि आप एक ऐसे वातावरण में काम कर रहे हैं, जहाँ बहुत सारे कमिट्स इधर-उधर घूम रहे हैं, तो टैग और कमिट के बीच अंतर कम हो जाता है ... विशिष्ट-और साइनिंग कमिट्स अधिक उपयोगी हो सकते हैं।