Kif tuża Git Version Control System f'Linux [Gwida Komprensiva]


Kontroll tal-Verżjoni (kontroll tar-reviżjoni jew kontroll tas-sors) huwa mod ta' reġistrazzjoni ta' bidliet f'fajl jew ġabra ta' fajls maż-żmien sabiex tkun tista' tfakkar verżjonijiet speċifiċi aktar tard. Sistema ta 'kontroll tal-verżjoni (jew VCS fil-qosor) hija għodda li tirreġistra bidliet fil-fajls fuq sistema ta' fajls.

Hemm ħafna sistemi ta 'kontroll tal-verżjoni hemmhekk, iżda Git bħalissa hija l-aktar popolari u użata ta' spiss, speċjalment għall-ġestjoni tal-kodiċi tas-sors. Il-kontroll tal-verżjoni fil-fatt jista 'jintuża għal kważi kull tip ta' fajl fuq kompjuter, mhux biss kodiċi tas-sors.

Is-sistemi/għodod tal-kontroll tal-verżjoni joffru diversi karatteristiċi li jippermettu lill-individwi jew lil grupp ta’ nies li:

  • oħloq verżjonijiet ta' proġett.
  • ssegwi l-bidliet b'mod preċiż u ssolvi l-kunflitti.
  • egħaqqad il-bidliet f'verżjoni komuni.
  • reġġa' lura u jneħħu l-bidliet għal fajls magħżula jew proġett sħiħ.
  • aċċess verżjonijiet storiċi ta' proġett biex tqabbel il-bidliet maż-żmien.
  • ara min immodifika l-aħħar xi ħaġa li tista' tkun qed tikkawża problema.
  • oħloq backup sikur barra mis-sit ta' proġett.
  • uża magni multipli biex taħdem fuq proġett wieħed u ħafna aktar.

Proġett taħt sistema ta 'kontroll tal-verżjoni bħal Git se jkollu prinċipalment tliet taqsimiet, jiġifieri:

  • repożitorju: database għar-reġistrazzjoni tal-istat ta' jew bidliet fil-fajls tal-proġett tiegħek. Fiha l-metadata Git u l-oġġetti kollha meħtieġa għall-proġett il-ġdid. Innota li dan huwa normalment dak li jiġi kkupjat meta tikklona repożitorju minn kompjuter ieħor fuq netwerk jew server remot.
  • direttorju jew żona ta' ħidma: jaħżen kopja tal-fajls tal-proġett li tista' taħdem fuqhom (agħmel żidiet, tħassir u azzjonijiet oħra ta' modifika).
  • żona ta' staging: fajl (magħruf bħala indiċi taħt Git) fid-direttorju Git, li jaħżen informazzjoni dwar bidliet, li inti lest li tikkommetti (issalva l-istat ta' fajl jew sett ta' fajls) fir-repożitorju.< /li>

Hemm żewġ tipi ewlenin ta’ VCSs, bid-differenza ewlenija tkun in-numru ta’ repożitorji:

  • Sistemi Ċentralizzati ta' Kontroll tal-Verżjonijiet (CVCSs): hawnhekk kull membru tat-tim tal-proġett jikseb id-direttorju tax-xogħol lokali tiegħu stess, madankollu, jikkommettu bidliet għal repożitorju ċentrali wieħed biss.
  • Distributed Version Control Systems (DVCSs): taħt dan, kull membru tat-tim tal-proġett jikseb id-direttorju tax-xogħol lokali tiegħu stess u d-direttorju Git fejn jistgħu jagħmlu impenji. Wara li individwu jagħmel impenn lokalment, membri oħra tat-tim ma jistgħux jaċċessaw il-bidliet sakemm hu/hi jimbotthom għar-repożitorju ċentrali. Git huwa eżempju ta' DVCS.

Barra minn hekk, repożitorju Git jista 'jkun vojt (repożitorju li m'għandux direttorju tax-xogħol) jew mhux vojt (wieħed b'direttorju tax-xogħol). Repożitorji maqsuma (jew pubbliċi jew ċentrali) għandhom dejjem ikunu vojta - ir-repożitorji Github kollha huma vojta.

Tgħallem Kontroll tal-Verżjoni b'Git

Git huwa sistema ta 'kontroll tal-verżjoni b'xejn u miftuħ, veloċi, qawwija, distribwita, faċli biex tużah u popolari li hija effiċjenti ħafna ma' proġetti kbar, u għandha sistema ta 'fergħat u għaqda notevoli. Hija mfassla biex timmaniġġja d-dejta aktar bħal serje ta 'snapshots ta' sistema ta 'fajls żgħar, li hija maħżuna f'direttorju Git.

Il-fluss tax-xogħol taħt Git huwa sempliċi ħafna: tagħmel modifiki fil-fajls fid-direttorju tax-xogħol tiegħek, imbagħad żid b'mod selettiv biss dawk il-fajls li nbidlu, fiż-żona tal-waqfien, biex tkun parti mill-impenn li jmiss tiegħek.

Ladarba tkun lest, tagħmel impenn, li jieħu l-fajls miż-żona tal-waqfien u jsalva dik l-istampa b'mod permanenti fid-direttorju Git.

Biex tinstalla Git fil-Linux, uża l-kmand xieraq għad-distribuzzjoni tal-għażla tiegħek:

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

Wara li tinstalla Git, huwa rakkomandat li tgħid lil Git min int billi tipprovdi l-isem sħiħ u l-indirizz elettroniku tiegħek, kif ġej:

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

Biex tiċċekkja s-settings tal-Git tiegħek, uża l-kmand li ġej.

$ git config --list 

Joħloq Repożitorju Ġdid tal-Git

Repożitorji kondiviżi jew flussi tax-xogħol ċentralizzati huma komuni ħafna u dan huwa dak li se nuru hawn. Pereżempju, nassumu li ġejt inkarigat li twaqqaf repożitorju ċentrali remot għal amministraturi/programmaturi tas-sistema minn diversi dipartimenti fl-organizzazzjoni tiegħek, biex taħdem fuq proġett imsejjaħ bashscripts, li se jinħażen taħt /projects/scritpts/ fuq is-server.

SSH fis-server remot u oħloq id-direttorju meħtieġ, oħloq grupp imsejjaħ sysadmins (żid il-membri kollha tat-tim tal-proġett ma 'dan il-grupp eż. admin tal-utent), u waqqaf il-permessi xierqa fuq dan id-direttorju.

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

Imbagħad inizjalizza repożitorju tal-proġett vojt.

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

F'dan il-punt, inizjalizzajt b'suċċess direttorju Git vojt li huwa l-faċilità tal-ħażna ċentrali għall-proġett. Ipprova agħmel lista tad-direttorju biex tara l-fajls u d-direttorji kollha hemmhekk:

# ls -la /projects/scripts/bashscripts/

Ikklona Repożitorju Git

Issa kklona r-repożitorju tal-Git kondiviż remot mal-kompjuter lokali tiegħek permezz ta' SSH (tista' wkoll tikklona permezz ta' HTTP/HTTPS jekk għandek server tal-web installat u kkonfigurat kif xieraq, bħalma huwa l-każ mal-biċċa l-kbira tar-repożitorji pubbliċi fuq Github), pereżempju:

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

Biex tikklonajha f'direttorju speċifiku (~/bin/bashscripts), uża l-kmand hawn taħt.

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

Issa għandek istanza lokali tal-proġett f'repożitorju mhux vojt (b'direttorju tax-xogħol), tista 'toħloq l-istruttura inizjali tal-proġett (jiġifieri żżid fajl README.md, sub-direttorji għal kategoriji differenti ta' skripts eż. recon biex taħżen skripts ta' tkixxif, sysadmin ro taħżen skripts ta' sysadmin eċċ.):

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

Iċċekkja Sommarju tal-Istatus Git

Biex turi l-istatus tad-direttorju tax-xogħol tiegħek, uża l-kmand tal-istatus li jurik kwalunkwe tibdil li għamilt; liema fajls mhux qed jiġu ssorveljati minn Git; dawk il-bidliet li jkunu ġew stadji u l-bqija.

$ git status 

Git Stadju Bidliet u Impenn

Sussegwentement, stadju l-bidliet kollha billi tuża l-kmand żid bis-swiċċ -A u agħmel l-impenn inizjali. Il-marka -a tagħti struzzjonijiet lill-kmand biex awtomatikament ipoġġi fajls li jkunu ġew modifikati, u -m jintuża biex jispeċifika messaġġ ta' impenn:

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

Ippubblika Impenji Lokali għar-Repożitorju Remote Git

Bħala t-tim tal-proġett imexxi, issa li ħloqt l-istruttura tal-proġett, tista 'tippubblika l-bidliet fir-repożitorju ċentrali billi tuża l-kmand push kif muri.

$ git push origin master

Bħalissa, ir-repożitorju tal-git lokali tiegħek għandu jkun aġġornat mar-repożitorju ċentrali tal-proġett (oriġini), tista 'tikkonferma dan billi tħaddem il-kmand tal-istatus għal darb'oħra.

$ git status

Tista' wkoll tinfurmakom lill-kollegi biex tibda taħdem fuq il-proġett billi tikklona r-repożitorju fil-kompjuters lokali tagħhom.

Oħloq Fergħa Ġdida tal-Git

Il-fergħat jippermettilek taħdem fuq karatteristika tal-proġett tiegħek jew issolvi kwistjonijiet malajr mingħajr ma tmiss il-codebase (fergħa prinċipali). Biex toħloq fergħa ġdida u mbagħad taqleb għaliha, uża l-kmandi tal-fergħa u tal-ħruġ rispettivament.

$ git branch latest
$ git checkout latest

Alternattivament, tista 'toħloq fergħa ġdida u taqleb għaliha f'pass wieħed billi tuża l-kmand tal-checkout bil-bandiera -b.

$ git checkout -b latest

Tista' wkoll toħloq fergħa ġdida bbażata fuq fergħa oħra, pereżempju.

$ git checkout -b latest master

Biex tiċċekkja f'liema fergħa qiegħed, uża l-kmand tal-fergħa (karattru asterisk jindika l-fergħa attiva):

$ git branch

Wara li toħloq u taqleb għall-fergħa l-ġdida, agħmel xi bidliet taħtha u agħmel xi impenji.

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

Għaqad Bidliet Minn Fergħa għal Oħra

Biex tgħaqqad il-bidliet taħt it-test tal-fergħa fil-fergħa prinċipali, aqleb għall-fergħa prinċipali u agħmel l-għaqda.

$ git checkout master 
$ git merge test 

Jekk m'għadx għandek bżonn fergħa partikolari, tista' tħassarha billi tuża l-iswiċċ -d.

$ git branch -d test

Niżżel Bidliet Minn Repożitorju Ċentrali Remot

Jekk wieħed jassumi li l-membri tat-tim tiegħek imbuttaw bidliet fir-repożitorju ċentrali tal-proġett, tista 'tniżżel kwalunkwe tibdil fl-istanza lokali tiegħek tal-proġett billi tuża l-kmand tal-ġibda.

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

Spezzjona Repożitorju Git u Agħmel Tqabbil

F'din l-aħħar taqsima, se nkopru xi karatteristiċi Git utli li jżommu rekord tal-attivitajiet kollha li ġraw fir-repożitorju tiegħek, biex b'hekk tkun tista' tara l-istorja tal-proġett.

L-ewwel karatteristika hija Git log, li turi zkuk tal-kommit:

$ git log

Karatteristika oħra importanti hija l-kmand tal-ispettaklu li juri diversi tipi ta’ oġġetti (bħal kommessi, tikketti, siġar eċċ..):

$ git show

It-tielet karatteristika vitali li trid tkun taf hija l-kmand diff, użat biex iqabbel jew juri d-differenza bejn il-fergħat, juri bidliet bejn id-direttorju tax-xogħol u l-indiċi, bidliet bejn żewġ fajls fuq disk u ħafna aktar.

Pereżempju biex turi d-differenza bejn il-kaptan u l-aħħar fergħa, tista 'tmexxi l-kmand li ġej.

$ git diff master latest

Git jippermetti li tim ta’ nies jaħdmu flimkien billi juża l-istess fajl(i), filwaqt li jirreġistra bidliet fil-fajl(i) maż-żmien sabiex ikunu jistgħu jiftakru verżjonijiet speċifiċi aktar tard.

Dan il-mod, tista 'tuża Git għall-ġestjoni tal-kodiċi tas-sors, fajls ta' konfigurazzjoni jew kwalunkwe fajl maħżun fuq kompjuter. Tista' tkun trid tirreferi għad-Dokumentazzjoni Git Online għal aktar dokumentazzjoni.