Otu esi eji Sistemụ Njikwa ụdị Git na Linux [Nduzi zuru oke]


Njikwa ụdị (nchịkwa ngbanwe ma ọ bụ njikwa isi mmalite) bụ ụzọ isi dekọọ mgbanwe na faịlụ ma ọ bụ nchịkọta faịlụ ka oge na-aga ka i wee nwee ike icheta ụdịdị dị iche iche ma emechaa. Usoro njikwa ụdị (ma ọ bụ VCS na nkenke) bụ ngwa ọrụ na-edekọ mgbanwe na faịlụ na sistemụ faịlụ.

Enwere ọtụtụ sistemụ njikwa ụdị dị n'ebe ahụ, mana Git bụ ugbu a kacha ewu ewu na nke a na-ejikarị eme ihe, ọkachasị maka njikwa koodu isi mmalite. Enwere ike iji njikwa ụdị maka ihe fọrọ nke nta ka ọ bụrụ ụdị faịlụ ọ bụla na kọmpụta, ọ bụghị naanị koodu isi mmalite.

Sistemụ njikwa/ngwaọrụ ụdị na-enye ọtụtụ atụmatụ na-enye ndị mmadụ ma ọ bụ otu ndị mmadụ ohere:

  • mepụta ụdị ọrụ.
  • mgbanwe nke ọma wee dozie esemokwu.
  • jikota mgbanwe ka ọ bụrụ ụdị nkịtị.
  • laghachi ma megharịa mgbanwe na faịlụ ahọpụtara ma ọ bụ ọrụ dum.
  • nweta ụdị akụkọ ihe mere eme nke ọrụ iji tụnyere mgbanwe n'ime oge.
  • hụ onye mezigharịrị ihe nwere ike ịkpata nsogbu.
  • mepụta nkwado ndabere na mpaghara nke ọrụ.
  • jiri ọtụtụ igwe rụọ ọrụ n'otu ọrụ yana ọtụtụ ihe ndị ọzọ.

Ọrụ n'okpuru sistemụ njikwa ụdị dị ka Git ga-enwe akụkụ atọ, ya bụ:

  • ebe nchekwa: nchekwa data maka ịdekọ ọnọdụ ma ọ bụ mgbanwe na faịlụ ọrụ gị. O nwere metadata Git niile dị mkpa na ihe maka ọrụ ọhụrụ a. Rịba ama na nke a na-abụkarị ihe a na-eṅomi mgbe ị na-emechi ebe nchekwa site na kọmputa ọzọ na netwọk ma ọ bụ ihe nkesa dịpụrụ adịpụ.
  • akwụkwọ ndekọ aha ma ọ bụ mpaghara na-arụ ọrụ: na-echekwa otu faịlụ ngo nke ị nwere ike ịrụ ọrụ na ya (mepụta mgbakwunye, nhichapụ na omume mgbanwe ndị ọzọ).
  • Mpaghara nhazi: faịlụ (nke a maara dị ka index n'okpuru Git) n'ime akwụkwọ ndekọ aha Git, nke na-echekwa ozi gbasara mgbanwe, na ị dịla njikere ime (chekwaa ọnọdụ faịlụ ma ọ bụ nhazi faịlụ) na ebe nchekwa.< /li>

Enwere ụdị VCS abụọ bụ isi, yana isi ihe dị iche bụ ọnụọgụ nke ebe nchekwa:

  • Centralized Version Control Systems (CVCSs): ebe a, onye otu ọ bụla na-arụ ọrụ na-enweta akwụkwọ ndekọ aha nke ha, mana ha na-eme mgbanwe na naanị otu ebe nchekwa etiti.
  • Sistemụ njikwa ụdị ekesa (DVCSs): n'okpuru nke a, onye otu ọ bụla na-arụ ọrụ na-enweta akwụkwọ ndekọ aha mpaghara yana ndekọ Git ebe ha nwere ike ịme nkwa. Mgbe mmadụ mere mkpebi na mpaghara, ndị otu ndị ọzọ enweghị ike ịnweta mgbanwe ahụ ruo mgbe ọ ga-ebuga ha na ebe nchekwa etiti. Git bụ ọmụmaatụ nke DVCS.

Na mgbakwunye, ebe nchekwa Git nwere ike ịbụ ihe efu (ebe nchekwa na-enweghị akwụkwọ ndekọ aha na-arụ ọrụ) ma ọ bụ na-abụghị nke (nke nwere akwụkwọ ndekọ aha na-arụ ọrụ). Ebe nchekwa ekekọrịtara (ma ọ bụ ọha ma ọ bụ nke etiti) kwesịrị ịpụta mgbe niile - ebe nchekwa Github niile tọgbọrọ chakoo.

Jiri Git mụta njikwa ụdịdị

Git bụ isi mmalite mepere emepe, ngwa ngwa, dị ike, kesaa, dị mfe iji, yana sistemụ njikwa ụdị ama ama nke na-arụ ọrụ nke ọma na nnukwu ọrụ ma nwee sistemụ ngalaba na njikọta dị ịrịba ama. Emebere ya ka ijikwa data dị ka usoro onyonyo nke obere faịlụ, nke echekwara na ndekọ Git.

Usoro ọrụ n'okpuru Git dị nnọọ mfe: ị na-eme mgbanwe na faịlụ na ndekọ ọrụ gị, wee họrọ naanị faịlụ ndị gbanwere, na mpaghara nhazi, ka ị bụrụ akụkụ nke ntinye gị ọzọ.

Ozugbo ị dị njikere, ị ga-eme mkpebi, nke na-ewepụ faịlụ ndị ahụ site na ebe a na-edozi ma chekwaa foto ahụ na-adịgide adịgide na ndekọ Git.

Iji tinye Git na Linux, jiri iwu kwesịrị ekwesị maka nkesa nhọrọ gị:

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

Mgbe ị wụnye Git, a na-atụ aro ka ị gwa Git onye ị bụ site n'inye aha na adreesị ozi-e gị n'uju, dị ka ndị a:

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

Ka ịlele ntọala Git gị, jiri iwu a.

$ git config --list 

Na-emepụta ebe nchekwa Git ọhụrụ

Ekekọrịtara ebe nchekwa ma ọ bụ usoro arụ ọrụ nke etinyere na ya bụ ihe a na-ahụkarị na nke ahụ bụ ihe anyị ga-egosipụta ebe a. Dịka ọmụmaatụ, anyị na-eche na e nyela gị ọrụ ịtọlite ebe nchekwa etiti dịpụrụ adịpụ maka ndị na-ahụ maka sistemụ/ndị na-eme mmemme sitere na ngalaba dị iche iche na nzukọ gị, ịrụ ọrụ na ọrụ a na-akpọ bashscripts, nke a ga-echekwa n'okpuru /projects/scritpts/ na ihe nkesa.

SSH n'ime ihe nkesa dịpụrụ adịpụ wee mepụta ndekọ dị mkpa, mepụta otu a na-akpọ sysadmins (tinye ndị otu ọrụ niile na otu a dịka nchịkwa onye ọrụ), ma debe ikike kwesịrị ekwesị na ndekọ a.

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

Mgbe ahụ malite ebe nchekwa ọrụ efu.

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

N'oge a, ị malitela akwụkwọ ndekọ aha Git nke bụ ebe nchekwa etiti maka ọrụ ahụ. Gbalịa mee ndepụta ndekọ aha ka ịhụ faịlụ na akwụkwọ ndekọ aha niile dị n'ebe ahụ:

# ls -la /projects/scripts/bashscripts/

Mechie ebe nchekwa Git

Ugbu a mechie ebe nchekwa Git dịpụrụ adịpụ na kọmputa mpaghara gị site na SSH (ịnwekwara ike imechi site na HTTP/HTTPS ma ọ bụrụ na ị nwere sava weebụ arụnyere ma hazie ya nke ọma, dịka ọ dị na ọtụtụ ebe nchekwa ọha na Github), dịka ọmụmaatụ:

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

Iji mechie ya na otu ndekọ aha (~/bin/bashscripts), jiri iwu dị n'okpuru.

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

Ị nwere ugbu a ihe atụ mpaghara nke ọrụ ahụ na ebe nchekwa na-abụghị nke efu (ya na akwụkwọ ndekọ aha), ị nwere ike ịmepụta nhazi mbụ nke ọrụ ahụ (ya bụ tinye faịlụ README.md, akwụkwọ ndekọ aha maka ụdị edemede dị iche iche dịka recon). iji chekwaa scripts nyocha, sysadmin ro store sysadmin scripts wdg):

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

Lelee nchịkọta ọnọdụ Git

Iji gosi ọkwa nke akwụkwọ ndekọ aha gị, jiri iwu ọkwa nke ga-egosi gị mgbanwe ọ bụla i mere; Faịlụ ndị Git anaghị enyocha ya; mgbanwe ndị ahụ emebere na ihe ndị ọzọ.

$ git status 

Mgbanwe na ọkwa Git

Na-esote, mee mgbanwe niile site na iji iwu gbakwunye na mgba ọkụ -A wee mee nkwa mbụ. Ọkọlọtọ -a na-enye iwu ka e wepụta faịlụ ndị emezigharịrị na-akpaghị aka, na -m na-eji ezipụta ozi nkwa:

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

Bipụta nkwenye mpaghara na ebe nchekwa Git Remote

Dị ka ndị otu ọrụ na-eduzi, ugbu a na ị mepụtara usoro ihe omume ahụ, ị nwere ike bipụta mgbanwe na ebe nchekwa etiti site na iji iwu push dị ka egosiri.

$ git push origin master

Ugbu a, ebe nchekwa git dị na mpaghara gị kwesịrị ịdị ọhụrụ na ebe nchekwa etiti (mmalite), ị nwere ike kwado nke a site na ịmegharị iwu ọkwa ọzọ.

$ git status

Ị nwekwara ike ịgwa gị ndị ọrụ ibe ka ịmalite ịrụ ọrụ na ọrụ ahụ site na ijikọ ebe nchekwa ahụ na kọmputa ha.

Mepụta Alaka Git ọhụrụ

Alaka ụlọ ọrụ na-enye gị ohere ịrụ ọrụ na akụkụ nke ọrụ gị ma ọ bụ dozie okwu ngwa ngwa na-emetụghị codebase (alaka ukwu). Iji mepụta alaka ọhụrụ wee gbanwee gaa na ya, jiri ngalaba na ndenye iwu n'otu n'otu.

$ git branch latest
$ git checkout latest

N'aka nke ọzọ, ịnwere ike ịmepụta alaka ọhụrụ wee gbanwee gaa na ya n'otu nzọụkwụ site na iji iwu ndenye ọpụpụ nwere ọkọlọtọ -b.

$ git checkout -b latest

Ị nwekwara ike ịmepụta alaka ọhụrụ dabere na alaka ọzọ, dịka ọmụmaatụ.

$ git checkout -b latest master

Ka ịlele ngalaba nke ị nọ na ya, jiri iwu alaka ụlọ ọrụ (ihe akara akara na-egosi alaka nọ n'ọrụ):

$ git branch

Mgbe ịmepụtara ma gbanwee gaa na alaka ụlọ ọrụ ọhụrụ, mee mgbanwe ụfọdụ n'okpuru ya ma mee ihe ụfọdụ.

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

Jikọta Mgbanwe Site n'otu Alaka gaa na Ọzọ

Iji jikọta mgbanwe n'okpuru ule alaka ụlọ ọrụ n'ime alaka ụlọ ọrụ, gbanwee gaa na alaka ụlọ ọrụ ma mee njikọ ahụ.

$ git checkout master 
$ git merge test 

Ọ bụrụ na ịchọghị otu alaka ụlọ ọrụ, ịnwere ike ihichapụ ya site na iji mgba ọkụ -d.

$ git branch -d test

Budata Mgbanwe site na Remote Central Repository

Na-eche na ndị otu gị akwalitela mgbanwe na ebe nchekwa ọrụ etiti, ị nwere ike budata mgbanwe ọ bụla na mpaghara ọrụ a site na iji iwu ndọpụta.

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

Nyochaa ebe nchekwa Git wee mee ntụnyere

Na ngalaba ikpeazụ a, anyị ga-ekpuchi ụfọdụ njirimara Git bara uru nke na-edekọ ihe omume niile mere na ebe nchekwa gị, si otú a na-enye gị ohere ịlele akụkọ ihe mere eme.

Akụkụ mbụ bụ Git log, nke na-egosipụta ndekọ ndekọ:

$ git log

Akụkụ ọzọ dị mkpa bụ iwu ihe ngosi nke na-egosipụta ụdị ihe dị iche iche (dị ka eme, mkpado, osisi wdg..):

$ git show

Akụkụ nke atọ dị mkpa ị ga-amata bụ iwu dị iche iche, nke a na-eji tụnyere ma ọ bụ gosi ọdịiche dị n'etiti alaka, mgbanwe mgbanwe n'etiti ndekọ ọrụ na ndeksi, mgbanwe n'etiti faịlụ abụọ na diski na ọtụtụ ndị ọzọ.

Dịka ọmụmaatụ iji gosi ọdịiche dị n'etiti onye isi na ngalaba ọhụrụ, ị nwere ike ịme iwu a.

$ git diff master latest

Git na-enye ohere ka otu ndị mmadụ rụọ ọrụ ọnụ site na iji otu faịlụ, ebe ha na-edekọ mgbanwe na faịlụ (s) ka oge na-aga ka ha wee nwee ike icheta nsụgharị ụfọdụ ma emechaa.

N'ụzọ dị otú a, ị nwere ike iji Git maka ijikwa koodu isi mmalite, faịlụ nhazi ma ọ bụ faịlụ ọ bụla echekwara na kọmputa. Ị nwere ike ịtu aka na Git Online Documentation maka akwụkwọ ndị ọzọ.