लिनक्स में Git संस्करण नियंत्रण प्रणाली का उपयोग कैसे करें [व्यापक गाइड]


संस्करण नियंत्रण (संशोधन नियंत्रण या स्रोत नियंत्रण) समय के साथ फ़ाइल या फ़ाइलों के संग्रह में परिवर्तन रिकॉर्ड करने का एक तरीका है ताकि आप बाद में विशिष्ट संस्करणों को याद कर सकें। एक संस्करण नियंत्रण प्रणाली (या VCS संक्षेप में) एक उपकरण है जो फाइलों के सिस्टम में फाइलों में बदलाव को रिकॉर्ड करता है।

वहाँ कई संस्करण नियंत्रण प्रणाली हैं, लेकिन Git वर्तमान में सबसे लोकप्रिय और अक्सर उपयोग किया जाता है, विशेष रूप से कोड प्रबंधन के लिए। संस्करण नियंत्रण वास्तव में कंप्यूटर पर किसी भी प्रकार की फ़ाइल के लिए उपयोग किया जा सकता है, न केवल स्रोत कोड।

संस्करण नियंत्रण प्रणाली/उपकरण कई विशेषताएं प्रदान करते हैं जो व्यक्तियों या लोगों के एक समूह को अनुमति देते हैं:

  • create versions of a project.
  • track changes accurately and resolve conflicts.
  • merge changes into a common version.
  • rollback and undo changes to selected files or an entire project.
  • access historical versions of a project to compare changes over time.
  • see who last modified something that might be causing a problem.
  • create a secure offsite backup of a project.
  • use multiple machines to work on a single project and so much more.

एक संस्करण नियंत्रण प्रणाली के तहत एक परियोजना जैसे कि Git में मुख्य रूप से तीन खंड होंगे, अर्थात्:

  • a repository: a database for recording the state of or changes to your project files. It contains all of the necessary Git metadata and objects for the new project. Note that this is normally what is copied when you clone a repository from another computer on a network or remote server.
  • a working directory or area: stores a copy of the project files which you can work on (make additions, deletions and other modification actions).
  • a staging area: a file (known as index under Git) within the Git directory, that stores information about changes, that you are ready to commit (save the state of a file or set of files) to the repository.

वीसीएस के दो मुख्य प्रकार हैं, जिनमें मुख्य अंतर रिपॉजिटरी की संख्या है:

  • Centralized Version Control Systems (CVCSs): here each project team member gets their own local working directory, however, they commit changes to just a single central repository.
  • Distributed Version Control Systems (DVCSs): under this, each project team member gets their own local working directory and Git directory where they can make commits. After an individual makes a commit locally, other team members can’t access the changes until he/she pushes them to the central repository. Git is an example of a DVCS.

इसके अलावा, एक Git रिपॉजिटरी हो सकती है नंगे (रिपॉजिटरी जिसमें वर्किंग डायरेक्टरी नहीं है) या नॉन-नंगे (वर्किंग के साथ एक) निर्देशिका)। साझा किया गया (या सार्वजनिक या केंद्रीय) रिपॉजिटरी हमेशा नंगे होना चाहिए - सभी गितुब रिपॉजिटरी नंगे हैं।

Git के साथ संस्करण नियंत्रण जानें

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

Git के तहत वर्कफ़्लो बहुत सरल है: आप अपनी कार्यशील निर्देशिका में फ़ाइलों में संशोधन करते हैं, फिर चुनिंदा रूप से केवल उन फ़ाइलों को जोड़ते हैं जो बदल गई हैं, मचान क्षेत्र में, आपकी अगली प्रतिबद्ध का हिस्सा बनने के लिए।

एक बार जब आप तैयार हो जाते हैं, तो आप एक कमिट करते हैं, जो फाइलों को स्टेजिंग एरिया से लेता है और उस स्नैपशॉट को Git डायरेक्टरी में स्थायी रूप से सेव करता है।

लिनक्स में Git स्थापित करने के लिए, अपनी पसंद के वितरण के लिए उपयुक्त कमांड का उपयोग करें:

$ sudo apt install git   [On Debian/Ubuntu]
$ sudo yum install git   [On CentOS/RHEL]

Git को स्थापित करने के बाद, यह अनुशंसा की जाती है कि आप Git को बताएं जो आप अपना पूरा नाम और ईमेल पता प्रदान कर रहे हैं, इस प्रकार है:

$ git config --global user.name “Aaron Kili”
$ git config --global user.email “[email ”

अपनी Git सेटिंग्स की जाँच करने के लिए, निम्न कमांड का उपयोग करें।

$ git config --list 

एक नया गिट रिपोजिटरी बनाता है

साझा किया गया रिपॉजिटरी या केंद्रीकृत वर्कफ़्लोज़ बहुत आम हैं और यही हम यहां प्रदर्शित करेंगे। उदाहरण के लिए, हम मानते हैं कि आपको अपने संगठन के विभिन्न विभागों के सिस्टम प्रशासक/प्रोग्रामर के लिए एक रिमोट सेंट्रल रिपॉजिटरी सेटअप करने का काम सौंपा गया है, bashscripts नामक प्रोजेक्ट पर काम करने के लिए, जिसे स्टोर किया जाएगा सर्वर पर>/प्रोजेक्ट/स्क्रिटशीट/

दूरस्थ सर्वर में SSH और आवश्यक निर्देशिका बनाएं, sysadmins नामक एक समूह बनाएं (इस समूह के सभी परियोजना टीम के सदस्यों को जोड़ें जैसे उपयोगकर्ता व्यवस्थापक), और उपयुक्त अनुमतियों को सेट करें इस निर्देशिका।

# mkdir-p /projects/scripts/
# groupadd sysadmins
# usermod -aG sysadmins admin
# chown :sysadmins -R /projects/scripts/
# chmod 770 -R /projects/scripts/

फिर एक नंगे प्रोजेक्ट रिपॉजिटरी को इनिशियलाइज़ करें।

# git init --bare /projects/scripts/bashscripts

इस बिंदु पर, आपने सफलतापूर्वक एक नंगे गिट निर्देशिका को शुरू किया है जो परियोजना के लिए केंद्रीय भंडारण सुविधा है। वहाँ सभी फ़ाइलों और निर्देशिकाओं को देखने के लिए निर्देशिका की एक सूची करने की कोशिश करें:

# ls -la /projects/scripts/bashscripts/

क्लोन एक रिपोजिटरी

अब अपने स्थानीय कंप्यूटर पर SSH के माध्यम से दूरस्थ साझा Git रिपॉजिटरी को क्लोन करें (यदि आप वेब सर्वर स्थापित और उचित रूप से कॉन्फ़िगर किया गया है, तो HTTP/HTTPS के माध्यम से भी क्लोन कर सकते हैं। उदाहरण के लिए, गितुब पर अधिकांश सार्वजनिक रिपॉजिटरी के साथ मामला):

$ git clone ssh://[email _server_ip:/projects/scripts/bashscripts 

इसे एक विशिष्ट निर्देशिका ( ~/bin/bashscripts ) पर क्लोन करने के लिए, नीचे दी गई कमांड का उपयोग करें।

$ git clone ssh://[email _server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

अब आपके पास प्रोजेक्ट का एक स्थानीय उदाहरण है नॉन-नंगे रिपॉजिटरी (वर्किंग डायरेक्टरी के साथ), आप प्रोजेक्ट की प्रारंभिक संरचना बना सकते हैं (यानी README.md फ़ाइल, स्क्रिप्ट की विभिन्न श्रेणियों के लिए उप-निर्देशिकाएँ जैसे कि टोही स्क्रिप्ट, sysadmin ro स्टोर sysadmin स्क्रिप्ट आदि को पुनः संग्रहित करने के लिए):

$ cd ~/bin/bashscripts/
$ ls -la

Git स्थिति सारांश की जाँच करें

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

$ git status 

Git स्टेज परिवर्तन और प्रतिबद्धता

अगला, कमांड जोड़कर <कोड> -ए स्विच का उपयोग करके सभी परिवर्तनों को चरणबद्ध करें और प्रारंभिक प्रतिबद्ध करें। -a ध्वज स्वचालित रूप से संशोधित की गई फ़ाइलों को स्वचालित रूप से स्टेज करने का निर्देश देता है, और -m का उपयोग एक प्रतिबद्ध संदेश को निर्दिष्ट करने के लिए किया जाता है:

$ git add -A
$ git commit -a -m "Initial Commit"

दूरस्थ गेट रिपॉजिटरी में स्थानीय कमांड प्रकाशित करें

प्रोजेक्ट टीम लीड के रूप में, अब जब आपने प्रोजेक्ट संरचना बनाई है, तो आप दिखाए गए अनुसार पुश कमांड का उपयोग करके केंद्रीय रिपॉजिटरी में परिवर्तन प्रकाशित कर सकते हैं।

$ git push origin master

अभी, आपकी स्थानीय गिट रिपॉजिटरी प्रोजेक्ट सेंट्रल रिपॉजिटरी (मूल) के साथ अद्यतित होनी चाहिए, आप एक बार और स्थिति आदेश चलाकर इसकी पुष्टि कर सकते हैं।

$ git status

आप अपने सहयोगियों को उनके स्थानीय कंप्यूटरों के भंडार को क्लोन करके परियोजना पर काम शुरू करने के लिए भी सूचित कर सकते हैं।

एक नई गिट शाखा बनाएँ

ब्रांचिंग आपको कोडबेस (मास्टर शाखा) को छूने के बिना अपनी परियोजना की एक विशेषता पर काम करने या मुद्दों को जल्दी से ठीक करने की अनुमति देता है। एक नई शाखा बनाने और फिर उस पर स्विच करने के लिए, क्रमशः शाखा और चेकआउट कमांड का उपयोग करें।

$ git branch latest
$ git checkout latest

वैकल्पिक रूप से, आप चेकआउट कमांड -b ध्वज का उपयोग करके एक चरण में एक नई शाखा बना सकते हैं और उसमें स्विच कर सकते हैं।

$ git checkout -b latest

उदाहरण के लिए, आप एक अन्य शाखा के आधार पर एक नई शाखा भी बना सकते हैं।

$ git checkout -b latest master

यह जाँचने के लिए कि आप किस शाखा में हैं, शाखा कमांड का उपयोग करें (तारांकन वर्ण सक्रिय शाखा को इंगित करता है):

$ git branch

नई शाखा में जाने और बदलने के बाद, इसके तहत कुछ बदलाव करें और कुछ काम करें।

$ vim sysadmin/topprocs.sh
$ git status
$ git commit add  sysadmin/topprocs.sh
$ git commit -a -m 'modified topprocs.sh'

एक शाखा से दूसरी शाखा में परिवर्तन

मास्टर शाखा में शाखा परीक्षण के तहत परिवर्तनों को मर्ज करने के लिए, मास्टर शाखा पर जाएँ और मर्ज करें।

$ git checkout master 
$ git merge test 

यदि आपको किसी विशेष शाखा की आवश्यकता नहीं है, तो आप -d स्विच का उपयोग करके इसे हटा सकते हैं।

$ git branch -d test

रिमोट सेंट्रल रिपॉजिटरी से परिवर्तन डाउनलोड करें

मान लें कि आपकी टीम के सदस्यों ने केंद्रीय परियोजना भंडार में बदलावों को धक्का दे दिया है, तो आप पुल कमांड का उपयोग करके परियोजना के अपने स्थानीय उदाहरण में कोई भी परिवर्तन डाउनलोड कर सकते हैं।

$ git pull origin
OR
$ git pull origin master	#if you have switched to another branch

Git रिपॉजिटरी का निरीक्षण करें और तुलना करें

इस अंतिम खंड में, हम कुछ उपयोगी Git फीचर्स को कवर करेंगे, जो आपकी रिपॉजिटरी में हुई सभी गतिविधियों पर नज़र रखते हैं, इस प्रकार आपको प्रोजेक्ट हिस्ट्री को देखने में सक्षम बनाते हैं।

पहली विशेषता Git लॉग है, जो कमिट लॉग प्रदर्शित करता है:

$ git log

एक अन्य महत्वपूर्ण विशेषता है शो कमांड जो विभिन्न प्रकार की वस्तुओं (जैसे कि कमिट, टैग, पेड़ आदि) को प्रदर्शित करता है::

$ git show

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

उदाहरण के लिए गुरु और नवीनतम शाखा के बीच अंतर दिखाने के लिए, आप निम्न कमांड चला सकते हैं।

$ git diff master latest

Git समय के साथ फ़ाइल में परिवर्तन दर्ज करते हुए लोगों की एक टीम को एक ही फ़ाइल (ओं) का उपयोग करने की अनुमति देता है, ताकि बाद में वे विशिष्ट संस्करणों को याद कर सकें।

इस तरह, आप स्रोत कोड, कॉन्फ़िगरेशन फ़ाइलों या कंप्यूटर पर संग्रहीत किसी भी फ़ाइल के प्रबंधन के लिए Git का उपयोग कर सकते हैं। आप आगे के दस्तावेज़ के लिए Git ऑनलाइन दस्तावेज़ को संदर्भित करना चाह सकते हैं।