Wéi benotzen ech Git Versiounskontrollsystem a Linux [Comprehensive Guide]


Versiounskontroll (Versiounskontroll oder Quellkontrolle) ass e Wee fir Ännerungen an enger Datei oder Sammlung vu Dateien mat der Zäit opzehuelen, sou datt Dir spéider spezifesch Versioune kënnt erënneren. E Versiounskontrollsystem (oder kuerz VCS) ass en Tool dat Ännerungen op Dateien op engem Dateiesystem ophëlt.

Et gi vill Versiounskontrollsystemer dobaussen, awer Git ass de Moment déi populärst an dacks benotzt, besonnesch fir Quellcodemanagement. Versiounskontroll kann tatsächlech fir bal all Zort Datei op engem Computer benotzt ginn, net nëmme Quellcode.

Versiounskontrollsystemer/Tools bidden verschidde Features déi Individuen oder eng Grupp vu Leit erlaben:

  • Versioune vun engem Projet erstellen.
  • Verfollegt Ännerungen genau a léist Konflikter.
  • Ännerungen an eng gemeinsam Versioun fusionéieren.
  • Rollback an Ännerunge fir ausgewielte Dateien oder e ganze Projet zréckzéien.
  • Zougang op historesch Versioune vun engem Projet fir Ännerungen am Laf vun der Zäit ze vergläichen.
  • kuckt wien fir d'lescht eppes geännert huet wat e Problem kéint verursaachen.
  • erstellt e sécheren Offsite Backup vun engem Projet.
  • benotzt verschidde Maschinnen fir un engem eenzege Projet ze schaffen an esou vill méi.

E Projet ënner engem Versiounskontrollsystem wéi Git wäert haaptsächlech dräi Sektiounen hunn, nämlech:

  • e Repository: eng Datebank fir den Zoustand vun oder Ännerungen un Äre Projetsdateien opzehuelen. Et enthält all déi néideg Git Metadaten an Objekter fir den neie Projet. Notéiert datt dëst normalerweis dat ass wat kopéiert gëtt wann Dir e Repository vun engem anere Computer op engem Netzwierk oder engem Fernserver klont.
  • en Aarbechtsverzeichnis oder Gebitt: späichert eng Kopie vun de Projetsdateien un deenen Dir schaffe kënnt (Ergänzunge maachen, Läschen an aner Ännerungsaktiounen).
  • en Inszenéierungsberäich: e Fichier (bekannt als Index ënner Git) am Git Verzeichnis, deen Informatioun iwwer Ännerungen späichert, déi Dir prett sidd ze engagéieren (späicheren den Zoustand vun enger Datei oder Set vu Dateien) an de Repository.< /li>

Et ginn zwou Haaptarten vu VCSs, mam Haaptunterschied ass d'Zuel vun de Repositories:

  • Centralized Version Control Systems (CVCSs): hei kritt all Member vum Projetsteam hiren eegene lokalen Aarbechtsverzeechnes, awer si verpflichte Ännerunge just op een eenzegen zentrale Repository.
  • Verdeelt Versiounskontrollsystemer (DVCSs): ënner dësem kritt all Member vum Projetsteam hiren eegene lokalen Aarbechtsverzeechnes a Git Verzeechnes wou se kënne Verpflichtungen maachen. Nodeems en Individuum en Engagement lokal gemaach huet, kënnen aner Teammemberen net op d'Ännerungen zougräifen bis hien/hatt se an den zentrale Repository dréckt. Git ass e Beispill vun engem DVCS.

Zousätzlech kann e Git Repository blo sinn (Repository deen keen Aarbechtsverzeechnes huet) oder net blo (ee mat engem Aarbechtsverzeechnes). Shared (oder ëffentlech oder zentral) Repositories sollten ëmmer blo sinn - all Github Repositories sinn blo.

Léiert Versiounskontrolle mat Git

Git ass e gratis an oppe Quell, séier, mächteg, verdeelt, einfach ze benotzen, a populär Versiounskontrollsystem dee ganz effizient ass mat grousse Projeten, an e bemierkenswäerte Verzweigungs- a Fusiounssystem huet. Et ass entwéckelt fir Daten méi wéi eng Serie vu Schnappschëss vun engem Mini Dateiesystem ze handhaben, deen an engem Git Verzeichnis gespäichert ass.

De Workflow ënner Git ass ganz einfach: Dir maacht Ännerunge fir Dateien an Ärem Aarbechtsverzeichnis, füügt dann selektiv just déi Dateien un déi geännert hunn, an d'Stageberäich, fir en Deel vun Ärem nächste Verpflichtung ze sinn.

Wann Dir bereet sidd, maacht Dir e Verpflichtung, deen d'Dateien aus der Staging Beräich hëlt an dee Snapshot permanent an de Git Verzeichnis späichert.

Fir Git op Linux z'installéieren, benotzt de passende Kommando fir Är Verdeelung vun der Wiel:

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

Nodeems Dir Git installéiert hutt, ass et recommandéiert datt Dir Git sot wien Dir sidd andeems Dir Äre ganzen Numm an E-Mailadress ubitt, wéi follegt:

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

Fir Är Git Astellungen ze kontrolléieren, benotzt de folgende Kommando.

$ git config --list 

Erstellt en Neie Git Repository

Shared Repositories oder zentraliséiert Workflows si ganz heefeg an dat ass wat mir hei weisen. Zum Beispill, mir huelen un datt Dir d'Aufgab kritt hutt fir e Remote Central Repository fir Systemadministratoren/Programméierer aus verschiddenen Departementer an Ärer Organisatioun opzestellen, fir un engem Projet ze schaffen genannt bashscripts, deen ënner /projects/scritpts/ um Server gespäichert gëtt.

SSH an de Remote Server an erstellt den néidege Verzeechnes, erstellt e Grupp mam Numm sysadmins (füügt all Member vum Projet Team an dës Grupp z.

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

Dann initialiséiert e bloe Projet Repository.

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

Zu dësem Zäitpunkt hutt Dir erfollegräich e bloe Git Verzeechnes initialiséiert, deen déi zentral Späicherfacilitéit fir de Projet ass. Probéiert eng Oplëschtung vum Verzeechnes ze maachen fir all d'Dateien an d'Verzeichnisser ze gesinn:

# ls -la /projects/scripts/bashscripts/

Klon e Git Repository

Klon elo de Remote Shared Git Repository op Äre lokalen Computer iwwer SSH (Dir kënnt och iwwer HTTP/HTTPS klonen wann Dir e Webserver installéiert an entspriechend konfiguréiert hutt, sou wéi de Fall mat de meescht ëffentleche Repositories op Github), zum Beispill:

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

Fir et an e spezifesche Verzeechnes ze klonen (~/bin/bashscripts), benotzt de Kommando hei drënner.

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

Dir hutt elo eng lokal Instanz vum Projet an engem net-bloe Repository (mat engem Aarbechtsverzeichnis), Dir kënnt d'initial Struktur vum Projet erstellen (dh e README.md Datei addéieren, Ënnerverzeechnunge fir verschidde Kategorien vu Scripten z.B. Recon fir Reconnaissance Scripten ze späicheren, sysadmin ro store sysadmin Scripten etc.):

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

Préift e Git Status Resumé

Fir de Status vun Ärem Aarbechtsverzeechnes ze weisen, benotzt de Statusbefehl deen Iech all Ännerungen weist, déi Dir gemaach hutt; wéi eng Dateie ginn net vum Git verfollegt; déi Ännerungen, déi inszenéiert goufen a sou weider.

$ git status 

Git Stage Ännerungen a Verpflichtung

Als nächst, setzt all d'Ännerunge mat dem add Kommando mam -A Schalter a maacht den initialen Engagement. De -a Fändel instruéiert de Kommando automatesch Dateien ze inszenéieren déi geännert goufen, an -m gëtt benotzt fir e Commit Message ze spezifizéieren:

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

Verëffentlechen Lokal Verpflichtungen op Remote Git Repository

Als Lead vum Projetsteam, elo datt Dir d'Projetstruktur erstallt hutt, kënnt Dir d'Ännerungen am zentrale Repository verëffentlechen mat dem Push Kommando wéi gewisen.

$ git push origin master

De Moment sollt Äre lokalen Git Repository aktuell mam Projet Zentral Repository (Origine), Dir kënnt dëst bestätegen andeems Dir de Status Kommando nach eng Kéier ausféiert.

$ git status

Dir kënnt och Är Kollegen informéieren fir un de Projet ze schaffen andeems Dir de Repository op hir lokal Computeren klonet.

Erstellt eng nei Git Branch

Branching erlaabt Iech un enger Feature vun Ärem Projet ze schaffen oder Probleemer séier ze fixéieren ouni d'Codebase (Master Branche) ze beréieren. Fir eng nei Branche ze kreéieren an duerno ze wiesselen, benotzt d'Branche an d'Kassebefehl respektiv.

$ git branch latest
$ git checkout latest

Alternativ kënnt Dir eng nei Branche erstellen an an engem Schrëtt wiesselen andeems Dir de Kassebefehl mam -b Fändel benotzt.

$ git checkout -b latest

Dir kënnt och eng nei Branche erstellen op Basis vun enger anerer Branche, zum Beispill.

$ git checkout -b latest master

Fir z'iwwerpréiwen a wéi enger Branche Dir sidd, benotzt de Branchekommando (en Asterisk Charakter weist déi aktiv Branche un):

$ git branch

Nodeems Dir op déi nei Branche erstallt an ëmgewandelt hutt, maacht e puer Ännerungen ënner et a maacht e puer Verpflichtungen.

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

Fusioun Ännerunge vun enger Branch op eng aner

Fir d'Ännerungen ënner dem Branchetest an d'Meeschterzweig ze fusionéieren, schalt op d'Meeschterzweig a maacht d'Fusioun.

$ git checkout master 
$ git merge test 

Wann Dir eng bestëmmte Branche net méi braucht, kënnt Dir se mam -d Schalter läschen.

$ git branch -d test

Luet Ännerunge vum Remote Central Repository erof

Unzehuelen datt Är Teammember Ännerungen am zentrale Projet Repository gedréckt hunn, kënnt Dir all Ännerungen op Är lokal Instanz vum Projet eroflueden mam Pull Kommando.

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

Inspektéiert Git Repository a maacht Vergläicher

An dëser leschter Sektioun wäerte mir e puer nëtzlech Git Features ofdecken déi all Aktivitéiten verfollegen déi an Ärem Repository geschitt sinn, sou datt Dir d'Projetgeschicht gesinn kann.

Déi éischt Feature ass Git Log, deen commit Logs weist:

$ git log

Eng aner wichteg Feature ass de Show Kommando deen verschidden Aarte vun Objeten weist (wéi Verpflichtungen, Tags, Beem etc..):

$ git show

Déi drëtt vital Feature déi Dir wësse musst ass den diff Kommando, benotzt fir Ënnerscheeder tëscht Branchen ze vergläichen oder ze weisen, Ännerungen tëscht dem Aarbechtsverzeichnis an dem Index ze weisen, Ännerungen tëscht zwee Dateien op der Disk a sou vill méi.

Zum Beispill fir den Ënnerscheed tëscht dem Master an der leschter Branche ze weisen, kënnt Dir de folgende Kommando ausféieren.

$ git diff master latest

Git erlaabt e Team vu Leit zesumme mat der selwechter Datei (en) ze schaffen, wärend Ännerunge fir d'Datei (en) mat der Zäit opgeholl ginn, sou datt se spezifesch Versioune spéider kënnen erënneren.

Op dës Manéier kënnt Dir Git benotze fir Quellcode, Konfiguratiounsdateien oder all Datei op engem Computer ze managen. Dir wëllt vläicht op d'Git Online Dokumentatioun referenzéieren fir weider Dokumentatioun.