Giunsa Paggamit ang Git Version Control System sa Linux [Komprehensibo nga Giya]


Ang Pagkontrol sa Bersyon (kontrol sa rebisyon o pagkontrol sa gigikanan) usa ka paagi sa pagrekord sa mga pagbag-o sa usa ka file o koleksyon sa mga file sa paglabay sa panahon aron imong mahinumduman ang mga piho nga bersyon sa ulahi. Ang version control system (o VCS sa laktod) usa ka himan nga nagrekord sa mga kausaban sa mga file sa filesystem.

Adunay daghang mga sistema sa pagkontrol sa bersyon didto, apan ang Git sa pagkakaron ang labing inila ug kanunay nga gigamit, labi na alang sa pagdumala sa source code. Ang pagkontrol sa bersiyon kay magamit sa halos bisan unsang matang sa file sa kompyuter, dili lang sa source code.

Ang mga sistema sa pagkontrol sa bersyon/mga himan nagtanyag og daghang mga bahin nga nagtugot sa mga indibidwal o grupo sa mga tawo sa:

  • paghimo og mga bersyon sa usa ka proyekto.
  • pagsubay sa tukma nga mga kausaban ug pagsulbad sa mga panagsumpaki.
  • isagol ang mga kausaban ngadto sa komon nga bersyon.
  • pag-rollback ug pag-undo sa mga kausaban sa pinili nga mga file o tibuok nga proyekto.
  • pag-access sa makasaysayanong bersyon sa usa ka proyekto aron itandi ang mga kausaban sa paglabay sa panahon.
  • tan-awa kung kinsa ang katapusang nag-usab sa usa ka butang nga mahimong hinungdan sa problema.
  • paghimo ug luwas nga offsite backup sa usa ka proyekto.
  • paggamit ug daghang makina para magtrabaho sa usa ka proyekto ug daghan pa.

Ang usa ka proyekto sa ilawom sa usa ka sistema sa pagkontrol sa bersyon sama sa Git adunay panguna nga tulo nga mga seksyon, nga mao:

  • usa ka tipiganan: usa ka database alang sa pagrekord sa kahimtang sa o mga kausaban sa imong mga file sa proyekto. Naglangkob kini sa tanan nga gikinahanglan nga metadata sa Git ug mga butang alang sa bag-ong proyekto. Timan-i nga kasagaran kini ang gikopya kung imong gi-clone ang usa ka repository gikan sa laing kompyuter sa network o layo nga server.
  • usa ka nagtrabaho nga direktoryo o lugar: nagtipig og kopya sa mga file sa proyekto nga mahimo nimong buhaton (pagdugang, pagtangtang ug uban pang mga aksyon sa pagbag-o).
  • usa ka dapit sa dula: usa ka file (nailhan nga indeks ubos sa Git) sulod sa direktoryo sa Git, nga nagtipig og impormasyon mahitungod sa mga pagbag-o, nga andam nimong i-commit (i-save ang estado sa usa ka file o set sa mga file) ngadto sa repositoryo.< /li>

Adunay duha ka nag-unang matang sa mga VCS, nga ang nag-unang kalainan mao ang gidaghanon sa mga repositoryo:

  • Centralized Version Control Systems (CVCSs): dinhi ang matag miyembro sa team sa proyekto makakuha sa ilang kaugalingon nga lokal nga direktoryo sa pagtrabaho, bisan pa, naghimo sila mga pagbag-o sa usa ra ka sentro nga tipiganan.
  • Distributed Version Control Systems (DVCSs): ubos niini, ang matag miyembro sa team sa proyekto makakuha sa ilang kaugalingong lokal nga working directory ug Git directory diin sila makahimo sa mga commit. Pagkahuman sa usa ka indibidwal nga maghimo usa ka lokal nga pasalig, ang ubang mga miyembro sa team dili maka-access sa mga pagbag-o hangtod nga iduso niya kini sa sentro nga tipiganan. Ang Git usa ka pananglitan sa usa ka DVCS.

Dugang pa, ang usa ka Git repository mahimong hubo (repository nga walay working directory) o non-bare (usa nga adunay working directory). Ang mga gipaambit (o publiko o sentral) nga mga repositoryo kinahanglan kanunay nga hubo - ang tanan nga mga repositoryo sa Github kay hubo.

Pagkat-on sa Pagkontrol sa Bersyon gamit ang Git

Ang Git usa ka libre ug bukas nga tinubdan, paspas, gamhanan, giapod-apod, sayon gamiton, ug popular nga sistema sa pagkontrol sa bersyon nga episyente kaayo sa dagkong mga proyekto, ug adunay talagsaong sistema sa pagsanga ug paghiusa. Gidisenyo kini aron pagdumala sa datos nga mas sama sa sunod-sunod nga mga snapshot sa usa ka mini nga filesystem, nga gitipigan sa usa ka Git nga direktoryo.

Ang dagan sa trabaho ubos sa Git yano ra kaayo: maghimo ka og mga pagbag-o sa mga file sa imong working directory, unya pilion nga idugang ang mga file nga nausab, sa staging area, aron mahimong bahin sa imong sunod nga commit.

Kung andam ka na, maghimo ka usa ka commit, nga magkuha sa mga file gikan sa lugar sa dula ug i-save ang snapshot nga permanente sa direktoryo sa Git.

Aron ma-install ang Git sa Linux, gamita ang angay nga mando alang sa imong pag-apod-apod sa kapilian:

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

Human ma-install ang Git, girekomenda nga isulti nimo si Git kung kinsa ka pinaagi sa paghatag sa imong tibuuk nga ngalan ug email address, sama sa mosunod:

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

Aron masusi ang imong mga setting sa Git, gamita ang mosunod nga sugo.

$ git config --list 

Naghimo ug Bag-ong Git Repository

Ang mga shared repository o sentralisadong mga workflow kay komon kaayo ug mao kana ang atong ipakita dinhi. Pananglitan, kami nagtuo nga ikaw gitahasan sa pag-setup sa usa ka hilit nga sentral nga tipiganan alang sa mga tigdumala sa sistema/programmer gikan sa lain-laing mga departamento sa imong organisasyon, aron sa pagtrabaho sa usa ka proyekto nga gitawag og bashscripts, nga tipigan ubos sa /projects/scripts/ sa server.

SSH ngadto sa hilit nga server ug paghimo sa gikinahanglan nga direktoryo, paghimo og grupo nga gitawag og sysadmins (idugang ang tanang miyembro sa team sa proyekto niini nga grupo e.g user admin), ug itakda ang angay nga mga permiso niini nga direktoryo.

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

Unya pagsugod sa usa ka hubo nga proyekto repository.

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

Niini nga punto, malampuson nimo nga nasugdan ang usa ka hubo nga Git nga direktoryo nga mao ang sentro nga pasilidad sa pagtipig alang sa proyekto. Sulayi ang paghimo sa usa ka lista sa direktoryo aron makita ang tanan nga mga file ug mga direktoryo didto:

# ls -la /projects/scripts/bashscripts/

I-clone ang usa ka Git Repository

Karon i-clone ang hilit nga gipaambit nga Git repository sa imong lokal nga kompyuter pinaagi sa SSH (mahimo usab nimo nga i-clone pinaagi sa HTTP/HTTPS kung adunay usa ka web server nga na-install ug tukma nga gi-configure, sama sa kaso sa kadaghanan sa mga pampublikong repositoryo sa Github), pananglitan:

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

Aron ma-clone kini sa usa ka piho nga direktoryo (~/bin/bashscripts), gamita ang sugo sa ubos.

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

Ikaw karon adunay usa ka lokal nga pananglitan sa proyekto sa usa ka non-bare repository (nga adunay usa ka nagtrabaho nga direktoryo), mahimo nimong buhaton ang inisyal nga istruktura sa proyekto (ie pagdugang usa ka README.md file, mga sub-direktoryo alang sa lainlaing mga kategorya sa mga script eg recon sa pagtipig sa mga script sa reconnaissance, sysadmin ro pagtipig sa mga script sa sysadmin ug uban pa):

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

Susiha ang Git Status Summary

Aron ipakita ang status sa imong working directory, gamita ang status command nga magpakita kanimo sa bisan unsang kausaban nga imong nahimo; unsa nga mga file ang wala gisubay sa Git; kadtong mga pagbag-o nga gipasundayag ug uban pa.

$ git status 

Git Stage Mga Pagbag-o ug Pagpasalig

Sunod, ipahigayon ang tanang kausaban gamit ang add command gamit ang -A switch ug buhata ang inisyal nga commit. Ang -a nga bandera nagmando sa command nga awtomatikong i-stage ang mga file nga giusab, ug ang -m gigamit sa pagtino sa commit nga mensahe:

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

I-publish ang Local Commits sa Remote Git Repository

Samtang nanguna ang team sa proyekto, karon nga nahimo nimo ang istruktura sa proyekto, mahimo nimong imantala ang mga pagbag-o sa sentro nga tipiganan gamit ang push command sama sa gipakita.

$ git push origin master

Sa pagkakaron, ang imong lokal nga git repository kinahanglan nga updated sa project central repository (gigikanan), makumpirma nimo kini pinaagi sa pagpadagan sa status command sa makausa pa.

$ git status

Mahimo usab nimo ipahibalo kanimo ang mga kauban sa pagsugod sa pagtrabaho sa proyekto pinaagi sa pag-clone sa repository sa ilang lokal nga mga kompyuter.

Paghimo og Bag-ong Git Branch

Ang branching nagtugot kanimo sa pagtrabaho sa usa ka bahin sa imong proyekto o pag-ayo sa mga isyu sa madali nga walay paghikap sa codebase (master branch). Aron makahimo og bag-ong branch ug dayon ibalhin kini, gamita ang branch ug checkout nga mga sugo matag usa.

$ git branch latest
$ git checkout latest

Sa laing bahin, makahimo ka og bag-ong branch ug mobalhin niini sa usa ka lakang gamit ang checkout command gamit ang -b flag.

$ git checkout -b latest

Mahimo ka usab nga maghimo usa ka bag-ong sanga nga gibase sa laing sanga, pananglitan.

$ git checkout -b latest master

Aron masusi kung asa nga sanga naa ka, gamita ang sugo sa sanga (usa ka karakter nga asterisk nagpaila sa aktibo nga sanga):

$ git branch

Pagkahuman sa paghimo ug pagbalhin sa bag-ong sanga, paghimo og pipila ka mga pagbag-o sa ilawom niini ug paghimo og pipila ka mga pasalig.

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

Paghiusa sa mga Kausaban Gikan sa Usa ka Sanga ngadto sa Lain

Aron mahiusa ang mga pagbag-o sa ilawom sa pagsulay sa sanga sa master branch, ibalhin sa master branch ug buhata ang paghiusa.

$ git checkout master 
$ git merge test 

Kung dili na nimo kinahanglan ang usa ka partikular nga sanga, mahimo nimong papason kini gamit ang switch nga -d.

$ git branch -d test

Pag-download sa Mga Kausaban Gikan sa Remote Central Repository

Sa pag-ingon nga ang imong mga miyembro sa team nagduso sa mga pagbag-o sa sentro nga repository sa proyekto, mahimo nimong i-download ang bisan unsang mga pagbag-o sa imong lokal nga pananglitan sa proyekto gamit ang pull command.

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

Susiha ang Git Repository ug Buhata ang mga Pagtandi

Niining kataposang seksyon, atong tabonan ang pipila ka mapuslanong mga feature sa Git nga nagsubay sa tanang kalihokan nga nahitabo sa imong repository, sa ingon makapahimo kanimo sa pagtan-aw sa kasaysayan sa proyekto.

Ang una nga bahin mao ang Git log, nga nagpakita sa commit logs:

$ git log

Ang laing importante nga bahin mao ang show command nga nagpakita sa nagkalain-laing matang sa mga butang (sama sa commits, tags, trees etc..):

$ git show

Ang ikatulo nga hinungdanon nga bahin nga kinahanglan nimong mahibal-an mao ang diff command, nga gigamit sa pagtandi o pagpakita sa kalainan tali sa mga sanga, pagpakita sa mga pagbag-o tali sa nagtrabaho nga direktoryo ug indeks, mga pagbag-o tali sa duha nga mga file sa disk ug daghan pa.

Pananglitan aron ipakita ang kalainan tali sa master ug pinakabag-o nga sanga, mahimo nimong ipadagan ang mosunod nga sugo.

$ git diff master latest

Gitugotan sa Git ang usa ka grupo sa mga tawo nga magtinabangay gamit ang parehas nga (mga) file, samtang nagrekord sa mga pagbag-o sa (mga) file sa paglabay sa panahon aron ilang mahinumduman ang mga piho nga bersyon sa ulahi.

Niining paagiha, magamit nimo ang Git alang sa pagdumala sa source code, mga file sa pag-configure o bisan unsang file nga gitipigan sa usa ka kompyuter. Mahimo nimong i-refer ang Git Online Documentation para sa dugang nga dokumentasyon.