लगभग सभी वर्जन कंट्रोल सिस्टम में ब्रांचिंग विकल्प होते हैं। लेकिन गिट अपनी तेज शाखाओं वाली क्षमताओं के लिए जाना जाता है। गिट शाखाएं हल्की होती हैं। इसलिए ब्रांचिंग के लिए प्रदर्शन दंड न्यूनतम हैं और विकास टीमों को जितना संभव हो सके शाखा बनाने और विलय करने के लिए प्रोत्साहित किया जाता है। लेकिन जब आप कई शाखाओं के साथ काम कर रहे हों, तो अंतरों की तुलना और तुलना करने में सक्षम होना महत्वपूर्ण है। इस ट्यूटोरियल में, हम यह देखने के लिए एक वर्कफ़्लो से गुजरेंगे कि हम विभिन्न शाखाओं और कमिट की तुलना कैसे कर सकते हैं। आइए पहले निम्नलिखित स्थिति को सेट करें:
C00 => C01 => C03 => C06 (मास्टर)
C02 => C04 => C05 (विकास)
निम्नलिखित कदम उठाए गए:
- C00: hello_world.py जोड़ा गया (मास्टर शाखा)
- - विकास शाखा बनाई
- C01: दूसरा हैलो (मास्टर शाखा) जोड़ने के लिए संशोधित hello_world.py
- C02: विकास शाखा जोड़ने के लिए संशोधित hello_world.py नमस्ते (विकास शाखा) कहते हैं
- C03: जोड़ा गया readme.txt (मास्टर शाखा)
- C04: विकास शाखा जोड़ने के लिए संशोधित hello_world.py फिर से नमस्ते कहता है (विकास शाखा)
- C05: जोड़ा गया info.txt (विकास शाखा)
- C06: दूसरी पंक्ति (मास्टर शाखा) जोड़ने के लिए संशोधित readme.txt
सभी कमिट के बाद, 'मास्टर' शाखा में निम्नलिखित फाइलें होती हैं:
hello_world.py
readme.txt
और 'विकास' शाखा में निम्नलिखित फाइलें हैं:
hello_world.py
info.txt
दो शाखाओं के प्रमुखों की तुलना
आप दो शाखाओं के प्रमुखों की तुलना करने के लिए शाखाओं के नाम का उपयोग कर सकते हैं:
$गिट अंतरमास्टर..विकासअंतर --जाओप्रति/hello_world.py b/hello_world.py
सूचकांक e27f806..3899ed3100644
---प्रति/hello_world.py
+++ बी/hello_world.py
@@-2,7+2,7 @@
डीईएफ़ मुख्य():
प्रिंट('पहले हैलो!')
- प्रिंट('दूसरा नमस्कार!')
-
+ प्रिंट('विकास शाखा ने कहा हैलो')
+ प्रिंट('विकास शाखा ने फिर कहा हैलो')
अगर__नाम__ =='__मुख्य__':
मुख्य()
अंतर --जाओप्रति/info.txt b/info.txt
नयाफ़ाइलतरीका100644
सूचकांक 0000000..0ab52fd
--- /देव/शून्य
+++ बी/info.txt
@@-0,0+1 @@
+नई जानकारी
अंतर --जाओप्रति/readme.txt b/readme.txt
हटाए गएफ़ाइलतरीका100644
सूचकांक e29c296..0000000
---प्रति/readme.txt
+++/देव/शून्य
@@-1,2+0,0 @@
-1Readme.txt की पहली पंक्ति
-2Readme.txt की दूसरी लाइन
Diff कमांड पुनरावर्ती रूप से परिवर्तनों को देख रहा है। इसने निम्नलिखित अंतर चलाए हैं:
अंतर-गिट a/hello_world.py b/hello_world.py
अंतर-गिट a/info.txt b/info.txt
अंतर-गिट a/readme.txt b/readme.txt
यहां 'ए' का अर्थ 'मास्टर' शाखा और 'बी' का अर्थ विकास शाखा है। 'ए' हमेशा पहले पैरामीटर को और 'बी' दूसरे पैरामीटर को असाइन किया जाता है। /dev/null का अर्थ है कि शाखा में फ़ाइल नहीं है।
कमिट के बीच तुलना
हमारे उदाहरण में, 'मास्टर' शाखा में निम्नलिखित कमिट हैं:
$गिट स्थितिशाखा मास्टर पर
प्रतिबद्ध करने के लिए कुछ भी नहीं, कार्यशील निर्देशिका साफ
$गिट लॉग --एक पंक्ति
caa0ddd C06: दूसरी पंक्ति जोड़ने के लिए संशोधित readme.txt(मास्टर शाखा)
efaba94 C03: जोड़ा गया readme.txt(मास्टर शाखा)
ee60eac C01: दूसरा हैलो जोड़ने के लिए संशोधित hello_world.py(मास्टर शाखा)
22b4bf9 C00: hello_world.py जोड़ा गया(मास्टर शाखा)
विकास शाखा में निम्नलिखित प्रतिबद्धताएँ हैं:
$गिट स्थितिशाखा विकास पर
प्रतिबद्ध करने के लिए कुछ भी नहीं, कार्यशील निर्देशिका साफ
$गिट लॉग --एक पंक्ति
df3a4ee C05: जोड़ा गया info.txt(विकास शाखा)
0f0abb8 C04: विकास शाखा जोड़ने के लिए संशोधित hello_world.py फिर से नमस्ते कहता है(विकास शाखा)
3f611a0 C02: विकास शाखा जोड़ने के लिए संशोधित hello_world.py नमस्ते कहता है(विकास शाखा)
22b4bf9 C00: hello_world.py जोड़ा गया(मास्टर शाखा)
मान लीजिए कि हम C01 और C02 के लिए hello_world.py की तुलना करना चाहते हैं। तुलना करने के लिए आप हैश का उपयोग कर सकते हैं:
$गिट अंतरee60eac:hello_world.py 3f611a0:hello_world.pyअंतर --जाओप्रति/ee60eac:hello_world.py b/3f611a0:hello_world.py
सूचकांक e27f806..72a178d100644
---प्रति/ee60eac:hello_world.py
+++ बी/3f611a0:hello_world.py
@@-2,7+2,7 @@
डीईएफ़ मुख्य():
प्रिंट('पहले हैलो!')
- प्रिंट('दूसरा नमस्कार!')
+ प्रिंट('विकास शाखा ने कहा हैलो')
अगर__नाम__ =='__मुख्य__':
मुख्य()
आप उसी सिद्धांत का उपयोग उसी शाखा के भीतर भी तुलना करने के लिए कर सकते हैं।
विजुअल मर्ज टूल्स
टेक्स्ट-आधारित तुलनाओं को देखना मुश्किल हो सकता है। यदि आप Git . सेट करते हैं डिफटूल जैसे विज़ुअल मर्ज एप्लिकेशन के साथ डिफमर्ज या तुलना से परे , आप मतभेदों को बेहतर तरीके से देख पाएंगे।
आगे के अध्ययन:
- गिट डिफ दस्तावेज़ीकरण
- गिट डिफटूल दस्तावेज़ीकरण
- डिफटूल के साथ डिफमर्ज सेटअप
- डिफटूल के साथ बियॉन्डकंपेयर सेटअप
सन्दर्भ:
- गिट ट्यूटोरियल: डिफ और मर्ज टूल्स , यूट्यूब
- http://coding4streetcred.com/blog/post/configure-diffmerge-for-your-git-difftool
- http://gitbaby.com/how-to-diff-one-file-to-an-arbitrary-version-in-git.html
- https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
- https://git-scm.com/book/id/v2/Git-Branching-Branches-in-a-Nutshell
- https://git-scm.com/docs/git-diff
- https://git-scm.com/docs/git-difftool
- https://sourcegear.com/diffmerge/
- https://sourcegear.com/diffmerge/webhelp/sec__git__linux.html
- https://stackoverflow.com/questions/9834689/comparing-two-branchs-in-git
- https://veerasundar.com/blog/2011/06/git-tutorial-comparing-files-with-diff/
- https://www.scootersoftware.com/features.php
- https://www.scootersoftware.com/support.php?zz=kb_vcs