Git

Wikipedia, Entziklopedia askea
GIT» orritik birbideratua)
 Git
Jatorria
Sortzailea(k)Linus Torvalds
Sorrera-urtea2005
Argitaratze-data2005
Azken bertsioa2.44.0
Ezaugarriak
Hizkuntzaingelesa
Programazio-lengoaiaC, Unixeko shell, Perl, Tcl (en) Itzuli, Python eta C++
Sistema eragileagit packfile (en) Itzuli, git packfile index, version 1 (en) Itzuli eta git packfile index, version 2 (en) Itzuli
Irakur dezakePlataforma-anitz, GNU/Linux, BSD, Mac OS, Microsoft Windows eta UNIX-moduko
Idatz dezakegit packfile (en) Itzuli, git packfile index, version 1 (en) Itzuli eta git packfile index, version 2 (en) Itzuli
Egile-eskubideakcopyrightduna
LizentziaGPLv2
Deskribapena
Honen eragina jaso duCVS eta BitKeeper (en) Itzuli
Ekoizpena
DiseinatzaileaLinus Torvalds
GaratzaileaSoftware Freedom Conservancy (en) Itzuli, Linus Torvalds eta Junio C Hamano (en) Itzuli
Fikzioa
Erabiltzen duGit Wire Protocol, version 1 (en) Itzuli, Git Wire Protocol, version 2 (en) Itzuli, Git Dumb HTTP (en) Itzuli, Git Dumb HTTP over TLS (en) Itzuli, Git Smart HTTP (en) Itzuli, Git Smart HTTP over TLS (en) Itzuli eta changeset (en) Itzuli
git-scm.com
GitHub: git
Iturri-kodeahttps://git.kernel.org/pub/scm/git/git.git eta git://git.kernel.org/pub/scm/git/git.git

Git Linus Torvaldsek garatutako bertsio-kontrol software bat da; hain zuzen, produktu edo konfigurazio batean egin daitezkeen aldaketak kudeatzeko programa da. Linusen helburu nagusiak mantentze-lanen fidagarritasuna eta efizientzia ziren. Git garatzerako orduan, kontuan izan zuen programa horietan egingo ziren aldaketak artxibo askokoak izango zirela.

Hasierako ideia zen Git maila baxuko motore bat izatea, beste developer batzuek hori erabiliz aplikazio grafikoak sor zezaten, Cogito edo StGITen antzera. Hala ere, funtzionaltasunari dagokionez, erabateko sistema-kontrol bat bilakatu da. Indar handiko proiektu askotan erabiltzen da Git softwarea, Linuxen garapen nukleoan esate baterako. Gaur egungo software honen mantentze-lanak Junio Hamanoren esku daude. Horretarako, 280 programatzaileren laguntza du.

Ezaugarriak[aldatu | aldatu iturburu kodea]

BitKeeper eta Monotonen oinarritutako diseinua dauka Gitek.

Giten diseinua Linus Torvaldsek Linux garatzean izandako esperientziaren emaitza da; kode mordoa jende askoren artean banatuta, kudeatuta eta mantenduta dago, helburua delarik sistemaren funtzionamendu azkarra.

Ezaugarri garrantzitsuenetakoen artean, honako hauek aurki ditzakegu:

  • Garapen ez lineala bultzatzen du, adarren kudeaketa azkar baten bidez, eta bertsioen arteko nahasketak ahalbidetzen ditu. Garapen ez-lineala nola doan ikusteko tresna multzo bat ere badu. Programatzaileak aldaketak berrikusten doazen heinean, aldaketak gehitzen joaten dira.
  • Banatutako gestioa. Gitek programatzaile bakoitzari kopia lokal bat sortzen dio, garapenaren historia osoarekin. Aldaketak adarretan banatzen dira, eta adarrak modu lokalean gordetzen; adar lokaleko aldaketak ere urruneko zerbitzarietan erregistratzen dira.
  • Subversion eta svk errepositorioak zuzenean erabil daitezke git-svnrekin.
  • Proiektu handien kudeaketan efizientzia lortzen da artxiboen arteko ezberdintasunak artxiboan bertan adierazten, beste onura batzuen artean.
  • Izen aldaketak fitxategien arteko berdintasunean oinarritzen dira, marka berezirik egin gabe. Honek konfusio asko ekiditen ditu.
  • Automatikoki, behar den heinean fitxategi berriak sortu eta bertan gordetzen dira datuak. Nahiz eta irakurketarako ez den oso eraginkorra, kontrakoa da idazteko orduan.

Historia[aldatu | aldatu iturburu kodea]

Git-en garapena 2005eko apirilean hasi zen, Linux kernel-aren garatzaileek BitKeeper erabiltzeari laga ondoren. Larry McVoyk, BitKeeperreko copyrightaren jabe zenak, doako lizentzia ukatu zien, itxura denez, Andrew Tridgellek alderantzizko-ingeniaritza aplikatu baitzien BitKeeper protokoloei.

Linusek BitKeeperren antzera erabili zitekeen sistema bat nahi zuen, baina orduko software askedun sistemek ez zituzten bere beharrak betetzen, errendimenduaren atalean batez ere. Torvaldsek iturburu-kontrol sistema bat jarri zuen eredutzat, non patch bat jarriz, eta berarekin batera doan metadata guztia eguneratzen 30 segundo ematen dituen, eta nahiz eta proiektu itzela izan (Linuxeko kernela, esaterako), denbora mantentzen den. Hau betetzeko, patching lanek 3 segundo baino gutxiago iraun beharko luketela zehaztu zuen, eta hiru sententzia gehiago gehitu zituen:

  • Jasatea BitKeeper-lako lan-fluxu banatua.
  • Jagole boteretsuak erabili nahita edo nahigabe gertatutako datu hondaketen aurka.

Irizpide hauek orduko bertsio-kontrol sistema oro kanporatu zuen, Monotone izan ezik. Errendimendu eskaerak hori ere alde batera utzi zuen, beraz, 2.6.12-rc2 Linux kernelaren release bertsioa atera ostean, Torvaldsek bere sistema idazteari ekin zion.

2005eko apirilaren 3an hasi zen garapena. Torvaldsek apirilaren 6an iragarri zuen, eta hurrengo egunean Giten garapenaren bertsio-kontrola Git bera erabiliz egiten hasi zen. 18an lehenengo merge anitza egin zen, eta 29rako bere errendimendu beharrak betetzen zituen, segundoko 6.7 Linux kerneleko atal pathceatuz. Ekainak 16an Linux kernelaren 2.6.12 releasea Gitek kudeatu zuen.

2005eko uztailak 26an, Junio Hamanoren (proiektuko ekarle nagusitako baten) eskuetan utzi zituen mantentze lanak Torvaldsek. Bera izan zen 1.0 bertsioa argitaratzearen arduraduna urte bereko abenduaren 21ean. Gaur egun, bera da mantentze lanen arduraduna.

Oinarrizko komandoak[aldatu | aldatu iturburu kodea]

git fetch

Urruneko fitxategi-sisteman egindako aldaketak deskargatzen ditu.

git merge <adar_izena>

Adar batean egindako aldaketak adar lokalean aplikatzeko erabilia.

git pull

Aurreko bi komandoak bateratzen ditu, fitxategi-sistemako adar bat lokalean deskargatuz eta aldaketak aplikatuz.

git commit

Egindako aldaketak erreferentziako adarrean aplikatzen dira, pull eginda adar bera duten beste erabiltzaileek eskuratzeko.

git commit -am "<mezua>"

Commitatzean mezu bat jartzen da, eta aplikatutako aldaketak azaltzen dira.

git push origin <adar_izena>

Adar lokala urruneko zerbitzarira igotzeko balio du.

git status

Adaren egoera zein den ikusteko balio du.

git add <artxibo_izena>

Artxiboa git sistemara gehitzen da. Hurrengo commitean zerbitzarira igoko da.

git checkout -b <adar_berriaren_izena>

Adar lokaleko aldaketak dituen adar berri bat sortzen da.

git checkout -t origin/<adar_izena>

Urrunean dagoen adar baten kopia lokala sortzen da, eta horretan parte hartzen edo honen jarraipena ahalbidetzen du.

git branch

Adar lokal guztiak bistaratzen ditu.

git branch -a

Adar lokalak zein erremotoak bistaratzen ditu.

git branch -d <adar_izena>

Adar lokala ezabatzen du.

git push origin <adar_izena>

Adar baten aldaketak commitatzen ditu.

git remote prune origin

Urruneko errepositorioa eguneratzen du.

git reset --hard HEAD

Egindako aldaketak commitatu ez badira, desegin egiten ditu.

git revert <commit_kodea>

Egindako commit baten aldaketak desegiten ditu, commita egin ez balitz bezela.

Erabilera egokiak[aldatu | aldatu iturburu kodea]

Master, development eta features adarren erabilera
Adarren erabilera egokia

Erabiltzaile bakoitzak nahi bezala erabil dezake software hau, hala ere, erabilera egokia honako hau da:

Master:

Adar nagusia da. Erabiltzailearen esku dagoen programa baten errepositorioari deritzo. Beraz, bertsio egonkor bat izan behar da.

Development:

Adar nagusitik ateratako bigarren bat da. Integrazio adar bat da, funtzionaltasun berri guztiak bertan integratuko dira.

Features:

Funtzionaltasun berri bakoitzarekiko adar espezifiko bat sortzen da. Hauek development adar batetik garatutakoak izango dira. Behin funtzionaltasuna garatuta, bestearekin integratzeko development adarrarekiko merge bat egingo da.

Hotfix:

Horfix-ak programa garatzerako orduan sortzen diren bug-ak, masterretik ateratako adarrak dira. Horiek lehenbailehen argitaratu eta ondoren konpondu behar dira sor ditzaketen arazoengatik. Behin arazoa konponduta, master adarrarekiko merge bat egin behar da. Azkenik, eguneratuta mantentzeko master adarra development adarrarekiko merge bat egin behar da.

Kanpo estekak[aldatu | aldatu iturburu kodea]