Array ( [0] => 15526928 [id] => 15526928 [1] => cswiki [site] => cswiki [2] => Git [uri] => Git [3] => GNOME gitg.png [img] => GNOME gitg.png [4] => [day_avg] => [5] => [day_diff] => [6] => [day_last] => [7] => [day_prev_last] => [8] => Git Git je distribuovaný systém správy verzí, používaný především pro vývoj softwaru. Byl vyvinut Linusem Torvaldsem v roce 2005 a stal se jedním z nejvíce používaných nástrojů pro správu verzí vývojového kódu. Git je plně distribuovaný, což znamená, že každý programátor má lokální kopii celého repozitáře, což umožňuje efektivní nahrávání změn a práci i bez připojení k internetu. Git umožňuje efektivně spravovat a sledovat změny v kódu, udržovat historii verzí a sjednocovat změny od různých vývojářů. Repozitáře v Gitu jsou strukturovány do větví, které umožňují paralelní vývoj. Větve mohou být sloučeny do hlavní linie pomocí procesu zvaného sloučení, což zajišťuje správu změn a sjednocování větví. Git je oblíbený pro svou rychlost a efektivnost práce s velkými projekty. Jeho odolnost proti chybám a možnost verzování binárních souborů také přispívá k jeho popularitě. Git je také podporován rozsáhlou komunitou uživatelů a existuje mnoho nástrojů a rozšíření, které umožňují rozšíření jeho funkcionality. V České republice je Git velmi populární mezi programátory a vývojáři softwaru. Jeho použití se rozšířilo do různých odvětví IT oblasti a je považován za standardní nástroj pro správu verzí kódu. S jeho pomocí lze efektivně sledovat a synchronizovat změny vývojového kódu a udržovat v historii veškeré úpravy a vylepšení. Díky svému otevřenému zdrojovému kódu je Git také široce přizpůsobitelný a rozšiřitelný pro různé specifické potřeby. [oai] => Git Git je distribuovaný systém správy verzí, používaný především pro vývoj softwaru. Byl vyvinut Linusem Torvaldsem v roce 2005 a stal se jedním z nejvíce používaných nástrojů pro správu verzí vývojového kódu. Git je plně distribuovaný, což znamená, že každý programátor má lokální kopii celého repozitáře, což umožňuje efektivní nahrávání změn a práci i bez připojení k internetu. Git umožňuje efektivně spravovat a sledovat změny v kódu, udržovat historii verzí a sjednocovat změny od různých vývojářů. Repozitáře v Gitu jsou strukturovány do větví, které umožňují paralelní vývoj. Větve mohou být sloučeny do hlavní linie pomocí procesu zvaného sloučení, což zajišťuje správu změn a sjednocování větví. Git je oblíbený pro svou rychlost a efektivnost práce s velkými projekty. Jeho odolnost proti chybám a možnost verzování binárních souborů také přispívá k jeho popularitě. Git je také podporován rozsáhlou komunitou uživatelů a existuje mnoho nástrojů a rozšíření, které umožňují rozšíření jeho funkcionality. V České republice je Git velmi populární mezi programátory a vývojáři softwaru. Jeho použití se rozšířilo do různých odvětví IT oblasti a je považován za standardní nástroj pro správu verzí kódu. S jeho pomocí lze efektivně sledovat a synchronizovat změny vývojového kódu a udržovat v historii veškeré úpravy a vylepšení. Díky svému otevřenému zdrojovému kódu je Git také široce přizpůsobitelný a rozšiřitelný pro různé specifické potřeby. [9] => [is_good] => [10] => [object_type] => [11] => 1 [has_content] => 1 [12] => # Git Git je moderní systém pro správu verzí, který umožňuje efektivně sledovat změny v kódu a dalších typech textových souborů. Byl vyvinut Linusem Torvaldsem v roce 2005 a od té doby se stal jedním z nejrozšířenějších nástrojů pro práci na projektech v softwarovém inženýrství. Jednou z hlavních předností Gitu je jeho decentralizovaná povaha, což znamená, že každý vývojář má kompletní kopii celého repozitáře na svém počítači. Tato vlastnost přináší mnoho výhod, jako je možnost pracovat i bez připojení k internetu a rychlé provádění operací. Git také usnadňuje spolupráci mezi různými vývojáři, protože umožňuje snadné sloučení změn a efektivní řešení konfliktů. Git podporuje širokou škálu pracovních procesů a je možné ho použít pro projekty jakékoliv velikosti, od malých osobních projektů po velké open-source iniciativy. Díky bohaté sadě nástrojů a integrací s populárními platformami, jako je GitHub či GitLab, je Git přístupný a přívětivý i pro nováčky, kteří chtějí vývoj softwaru vyzkoušet. Spousta komunit a zdrojů je k dispozici pro naučení se používání Gitu, což přispívá k jeho popularitě a rozšíření. Git nejenže podporuje kreativní proces tvorby softwaru, ale také pomáhá budovat silná a spolupracující vývojářská prostředí. Celkově Git představuje skvělý nástroj, který zjednodušuje správu verzí, a přispívá k produktivitě a efektivitě v oblasti softwarového vývoje, což v konečném důsledku podporuje inovaci a zlepšení technologií, které používáme každý den. [oai_cs_optimisticky] => # Git Git je moderní systém pro správu verzí, který umožňuje efektivně sledovat změny v kódu a dalších typech textových souborů. Byl vyvinut Linusem Torvaldsem v roce 2005 a od té doby se stal jedním z nejrozšířenějších nástrojů pro práci na projektech v softwarovém inženýrství. Jednou z hlavních předností Gitu je jeho decentralizovaná povaha, což znamená, že každý vývojář má kompletní kopii celého repozitáře na svém počítači. Tato vlastnost přináší mnoho výhod, jako je možnost pracovat i bez připojení k internetu a rychlé provádění operací. Git také usnadňuje spolupráci mezi různými vývojáři, protože umožňuje snadné sloučení změn a efektivní řešení konfliktů. Git podporuje širokou škálu pracovních procesů a je možné ho použít pro projekty jakékoliv velikosti, od malých osobních projektů po velké open-source iniciativy. Díky bohaté sadě nástrojů a integrací s populárními platformami, jako je GitHub či GitLab, je Git přístupný a přívětivý i pro nováčky, kteří chtějí vývoj softwaru vyzkoušet. Spousta komunit a zdrojů je k dispozici pro naučení se používání Gitu, což přispívá k jeho popularitě a rozšíření. Git nejenže podporuje kreativní proces tvorby softwaru, ale také pomáhá budovat silná a spolupracující vývojářská prostředí. Celkově Git představuje skvělý nástroj, který zjednodušuje správu verzí, a přispívá k produktivitě a efektivitě v oblasti softwarového vývoje, což v konečném důsledku podporuje inovaci a zlepšení technologií, které používáme každý den. ) Array ( [0] => {{Infobox - software [1] => | jméno = Git [2] => | logo = git-logo-2012.svg [3] => | velikost loga = 128px [4] => | velikost obrázku = [5] => | alt = [6] => | vývojář = [[Junio Hamano]], [[Linus Torvalds]] [7] => | první vydání = [[7. duben|7. dubna]] [[2005]] [8] => | operační systém = [[Linux]], [[POSIX]], [[Microsoft Windows|Windows]], [[macOS]] [9] => | platforma = [10] => | programovací jazyk = [[C|C (programovací jazyk)]], [[Bourne shell]], [[Tcl]], [[Perl]] [11] => | typ softwaru = [[Verzování|Verzovací systém]] [12] => | licence = [[GNU General Public License|GPL]] v2 [13] => | lokalizace = [14] => | web = http://git-scm.com [15] => }} [16] => '''Git''' je v [[Informatika|informatice]] [[Distribuované verzování|distribuovaný systém správy verzí]] vytvořený [[Linus Torvalds|Linusem Torvaldsem]] pro vývoj [[Linux (jádro)|jádra]] [[Linux]]u. Návrh Gitu byl ovlivněn projekty [[BitKeeper]] (dříve používán pro vývoj [[Linux (jádro)|jádra Linuxu]]) a [[Monotone]]. V současnosti ([[2016]]) je projekt Git používán mnoha známými projekty, například: [[Linux (jádro)|jádro]] [[Linux]]u, [[X.Org]] nebo [[Ruby on Rails]]. Projekt spravuje [[Junio Haman]], je šířen pod [[GNU General Public License|GPL]] verze 2 a jedná se o [[svobodný software]]. [17] => [18] => == Historie == [19] => Vývoj Gitu začal v dubnu 2005, když vývojáři [[Linux (jádro)|jádra Linuxu]] opustili [[Proprietární software|proprietární]] správu [[Zdrojový kód|zdrojového kódu]] (SCM) [[BitKeeper]], který používali od roku 2002.{{Citace elektronického periodika |titul=BitKeeper and Linux: The end of the road? {{!}}linux.com |url=https://www.linux.com/news/bitkeeper-and-linux-end-road |datum přístupu=2020-05-28 |url archivu=https://web.archive.org/web/20170608000000/https://web.archive.org/web/20170608224906/https://www.linux.com/news/bitkeeper-and-linux-end-road |datum archivace=2017-06-08 |nedostupné= }}{{Citace elektronického periodika [20] => | příjmení = Brown [21] => | jméno = Zack [22] => | titul = A Git Origin Story [23] => | periodikum = Linux Journal [24] => | datum vydání = 2018-07-27 [25] => | datum přístupu = 2020-05-28 [26] => | url = https://www.linuxjournal.com/content/git-origin-story [27] => }} [28] => Autor projektu a držitel copyrightu [[Larry McVoy]] tehdy ukončil možnost volného používání, které zdůvodnil tím, že [[Andrew Tridgell]] pomocí [[Reverzní inženýrství|reverzního inženýrství]] protokolu BitKeeperu vytvořil [[SourcePuller]].{{cite news |last= McAllister |first= Neil |url= http://www.infoworld.com/article/2670360/operating-systems/linus-torvalds--bitkeeper-blunder.html |title= Linus Torvalds' BitKeeper blunder |work= InfoWorld |publisher= IDG |date= 2005-05-02 |access-date= 2015-09-08 |url-status= live |archiveurl= https://web.archive.org/web/20150826064920/http://www.infoworld.com/article/2670360/operating-systems/linus-torvalds--bitkeeper-blunder.html |archivedate= 26 August 2015 |df= dmy-all}} Stejný incident inicioval vývoj podobného systému správy zdrojových kódů [[Mercurial]]. [29] => [30] => [[Linus Torvalds]] chtěl mít distribuční systém, který bude moci používat stejně jako BitKeeper, ale žádný takový nebyl volně dostupný. Torvalds zmínil SCM, který za 30 vteřin aplikuje [[patch]] a aktualizuje všechna související [[metadata]] a poznamenal, že takový systém nemůže zvládnout (nemůže škálovat pro) vývoj jádra, kde správci potřebují udělat takových změn 250 najednou. Designové kritérium ([[návrhový vzor]]), které stanovil, vyžadovalo aplikaci patche za ne více než 3 sekundy{{cite mailing list |mailinglist = linux-kernel |last = Torvalds |first = Linus |url = https://marc.info/?l=linux-kernel&m=111288700902396 |title = Re: Kernel SCM saga.. |date = 2005-04-07}} "So I'm writing some scripts to try to track things a whole lot faster." a přidal další tři požadavky: [31] => [32] => * [[CVS]] je příklad jak to nedělat a pokud budeme na pochybách, uděláme to obráceně{{cite video |people = Linus Torvalds |date = 2007-05-03 |url = https://www.youtube.com/watch?v=4XpnKHJAok8 |title = Google tech talk: Linus Torvalds on git |time = 02:30 |accessdate = 2007-05-16 |url-status = live |archiveurl = https://web.archive.org/web/20070528041814/http://www.youtube.com/watch?v=4XpnKHJAok8 |archivedate = 28 May 2007 |df = dmy-all}} [33] => * podpora a distribuovanost podobně jako workflow BitKeeperu [34] => * zahrnout velmi silnou ochranu proti poškození ať už z důvodu nehody nebo záměru{{cite mailing list |last = Torvalds |first = Linus |authorlink = Linus Torvalds |mailinglist = git |date = 2007-06-10 |title = Re: fatal: serious inflate inconsistency |url = https://marc.info/?l=git&m=118143549107708}} [35] => [36] => Tato tři kritéria eliminovala všechny tehdy existující systémy pro správu verzí s výjimkou [[Monotone]], který však nesplňoval výkonnostní požadavky. Bezprostředně po vydání [[Linux (jádro)|linuxového jádra]] verze 2.6.12-rc2 se Linus Torvalds rozhodl napsat svůj vlastní systém. [37] => [38] => == Charakteristika == [39] => Git byl inspirován verzovacími systémy [[BitKeeper]] a [[Monotone]].{{cite web |mailinglist=linux-kernel [40] => | autor=Linus Torvalds | url=http://marc.info/?l=git&m=114685143200012 [41] => | titul=Re: [ANNOUNCE] Git wiki | datum=2006-05-05}} "Historické souvislosti" kolem předchůdců systému git{{cite web |mailinglist=linux-kernel | url=http://lkml.org/lkml/2005/4/8/9 [42] => | autor=Linus Torvalds | titul=Re: Kernel SCM saga [43] => | datum=2005-04-07}} Git byl původně navržen jako nízkoúrovňový nástroj, který by ostatním umožnil vytvoření uživatelského rozhraní [44] => (front end) jako je [[Cogito (software)|Cogito]] nebo [[StGIT]].{{cite web| autor=Linus Torvalds | [45] => url=http://marc.info/?l=linux-kernel&m=111293537202443 | titul=Re: Kernel [46] => SCM saga | datum=2005-04-08 |mailinglist=linux-kernel [47] => | datum přístupu=2008-02-20}} Jádro projektu Git se však postupně rozrostlo na kompletní systém pro správu revizí, který je použitelný bez doplňkových nástrojů.{{cite web |mailinglist=git [48] => | autor=Linus Torvalds | url=http://marc.info/?l=git&m=114314642000462 [49] => | titul=Re: Errors GITtifying GCC and Binutils | datum=2006-03-23}} [50] => [51] => Ze zřejmých důvodů byl Git původně psán pro [[operační systém]] Linux, ale je snadno přenositelný na ostatní [[UN*X]]ové systémy, včetně [[BSD]], [[Solaris (operační systém)|Solarisu]] a [[Darwin (operační systém)|Darwina]]. Implementován je samozřejmě také pod [[Microsoft Windows|Windows]]. Existuje také reimplementace [[JGit]] v [[Java (programovací jazyk)|Javě]]{{Citace elektronické monografie [52] => | titul = JGit [53] => | url = http://eclipse.org/jgit/ [54] => | datum vydání = [55] => | datum aktualizace = [56] => | datum přístupu = 2012-8-18 [57] => }} a podpora ve formě [[plugin|plug-inu]] EGit{{Citace elektronické monografie [58] => | titul = EGit [59] => | url = http://www.eclipse.org/egit/ [60] => | datum vydání = [61] => | datum aktualizace = [62] => | datum přístupu = 2012-8-18 [63] => }} pro [[Eclipse (vývojové prostředí)|Eclipse]]. [64] => [65] => Návrh systému Git byl syntézou zkušeností [[Linus Torvalds|Linuse Torvaldse]] s údržbou rozsáhlého projektu ([[Linux (jádro)|jádro Linuxu]]) vyvíjeného distribuovaným (kolektivním) způsobem, s důkladnou znalostí výkonnosti [[Souborový systém|souborového systému]] a potřeby vytvořit v krátké době použitelný nástroj (viz níže). Uvedené vlivy vedly k následujícím implementačním rozhodnutím: [66] => [67] => * Mocná podpora pro nelineární vývoj. Git podporuje rychlé vytváření větví a rychlé slučování (merge). Obsahuje specifické nástroje pro vizualizaci a navigaci v nelineární historii vývoje projektu. Jedním z klíčových předpokladů (na kterých je Git založen) je to, že změna je začleňována (merge) do jiných větví častěji, než je vytvářena -- tak jak prochází rukama různých recenzentů. [68] => * Distribuovaný vývoj. Podobně jako je tomu u systémů [[Darcs]], [[BitKeeper]], [[Mercurial]], [[SVK]], [[Bazaar]] a [[Monotone]] poskytuje Git každému vývojáři lokální kopii celé historie vývoje. Změny se kopírují z jednoho takového úložiště do jiného. Tyto změny se importují v podobě dalších vývojových větví, které mohou být začleněny do jiné větve stejným způsobem, jako lokálně vyvíjené větve. [69] => * Úložiště může být zpřístupněno prostřednictvím protokolů [[Hypertext Transfer Protocol|HTTP]], [[File Transfer Protocol|FTP]], [[rsync]] nebo protokolu Git realizovaného buď přes obyčejné sokety nebo přes [[Secure Shell|SSH]]. Git obsahuje rovněž emulaci [[CVS]] serveru, což umožňuje zpřístupnit úložiště Git i stávajícím CVS klientům a zásuvným modulům (plugin) pro [[Vývojové prostředí|vývojová prostředí]] (IDE). [70] => * Úložiště systémů [[Apache Subversion|Subversion]] a [[svk]] mohou být používána přímo, nástrojem git-svn. [71] => * Efektivní práce s velkými projekty. Torvalds popisuje Git jako velmi rychlý a škálovatelný.{{cite web | autor=Linus Torvalds | url=http://marc.info/?l=git&m=116128307511686 | titul=Re: VCS comparison table | datum=2006-10-19 |mailinglist=git}} Výkonnostní testy uskutečněné sdružením [[Mozilla]] ukázaly, že Git je o jeden řád rychlejší (cca 10×) než jiné systémy pro správu revizí. Některé operace jsou dokonce o dva řády rychlejší (cca 100×).{{Citation | autor=jst | url=http://weblogs.mozillazine.org/jst/archives/2006/11/vcs_performance.html | titul=bzr/hg/git performance | periodikum=Jst's Blog | příjmení=Stenback | jméno=Johnny | datum=2006-11-30 | datum přístupu=2008-02-20 | título= | fechaacceso=2009-03-05 | urlarchivo=https://web.archive.org/web/20100529094107/http://weblogs.mozillazine.org/jst/archives/2006/11/vcs_performance.html | fechaarchivo=2010-05-29 | url archivu=https://web.archive.org/web/20100529094107/http://weblogs.mozillazine.org/jst/archives/2006/11/vcs_performance.html | datum archivace=2010-05-29 | nedostupné=ano }}, benchmarking "git diff" against "bzr diff", and finding the former 100× faster in some cases.{{Citace elektronické monografie | autor=Roland Dreier | url=http://digitalvampire.org/blog/index.php/2006/11/16/oh-what-a-relief-it-is/ | titul=Oh what a relief it is | datum=2006-11-13}}, observing that "git log" is 100× faster than "svn log" because the latter has to contact a remote server. [72] => * Kryptografická autentizace historie. Historie je v systému Git uložena takovým způsobem, že jméno konkrétní revize (v pojmech Git je nazýváno „commit“) závisí na celkové historii vývoje, která vede až k tomuto commitu. Jakmile je jednou zveřejněno, nelze staré verze změnit, aniž by to prošlo bez povšimnutí (tuto vlastnost mají i systémy [[Mercurial]] a [[Monotone]]). [73] => * Navržen jako sada nástrojů (Toolkit design). Systém Git byl navržen jako sada programů napsaných v jazyce [[C (programovací jazyk)|C]] a dalších shellovských skriptů, které volání těchto programů obalují.{{cite web [74] => | mailinglist=git [75] => | autor=Linus Torvalds [76] => | url=http://marc.info/?l=git&m=116118369005954 [77] => | titul=Re: VCS comparison table [78] => | datum vydání=2006-10-18}}, describing Git's script-oriented design Při přenosu Gitu do systému Microsoft Windows byla většina skriptů nahrazena programy v jazyce C, ale původní návrh je zachován. Díky tomu lze snadno řetězit funkčnost jednotlivých komponent s cílem dosáhnout jiných zajímavých efektů.{{Citace elektronické monografie [79] => | autor = iabervon [80] => | url = http://lwn.net/Articles/165202/ [81] => | titul = Git rocks! [82] => | datum vydání = 2005-12-22 [83] => }}, praising Git's scriptability [84] => * Zaměnitelné slučovací strategie (Pluggable merge strategies). Součástí návrhu ve formě sady nástrojů (toolkit design) je dobře definovaný model neúplného sloučení (incomplete merge) a několik algoritmů pro jeho dokončení. Na vrcholu procesu stojí uživatelské hlášení, že Git není schopen dokončit sloučení (merge) automaticky a že musí být provedena ruční editace. [85] => * Nepotřebné soubory se hromadí až do úklidu. Přerušení operace nebo návrat ke stavu před změnami vede k tomu, že v databázi zůstávají viset nepotřebné objekty. V rámci průběžně narůstající historie chtěných objektů jde o malé zlomky, ale jejich odstraňování ([[garbage collection]]) pomocí git-gc --prune může být pomalé.{{Citace elektronické monografie [86] => | url = http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#ensuring-reliability [87] => | titul = Git User's Manual [88] => | datum vydání = 2007-08-05 [89] => }} [90] => [91] => Pro dosažení maximální rychlosti zachycuje Git vývoj projektu jako sérii stavů adresářových stromů se soubory. Tím se liší od dřívějších [[Verzování|verzovacích]] systémů jako [[Source Code Control System|SCCS]] a [[Revision Control System|RCS]], které se soustředily na úsporu místa ukládáním rozdílů mezi verzemi jednotlivých souborů, a koncept, kdy se sledují změny identifikovatelného souboru procházejícího jednotlivými revizemi projektu, převzaly i pozdější systémy. Torvalds však tuto koncepci odmítl,{{cite web [92] => | mailinglist=linux-kernel [93] => | autor=Linus Torvalds [94] => | url=http://marc.info/?l=linux-kernel&m=111314792424707 [95] => | titul=Re: more git updates.. [96] => | datum vydání=2005-04-10 [97] => }} takže Git vztahy mezi jednotlivými revizemi jednoho souboru nijak neuchovává. Z toho plynou významné důsledky: [98] => [99] => * Zjištění stavu celého projektu v libovolném historickém okamžiku je velmi rychlé. [100] => * Zjištění historie změn jednoho souboru je o něco náročnější než zjištění historie změn celého projektu.{{cite web [101] => | mailinglist=git [102] => | autor=Bruno Haible [103] => | url=http://marc.info/?l=git&m=117119479505638 [104] => | titul=how to speed up "git log"? [105] => | datum vydání=2007-02-11 [106] => }} Git zjišťuje historii změn jednoho souboru tak, že projde globální historii, a zjišťuje, zda jednotlivé změny mohly vést ke změně daného souboru. Zjišťování historie libovolné sady souborů je pak stejně efektivní jako v případě jednoho souboru. Velmi běžné je například zjišťování historie pro podadresář zdrojových textů a přidruženého globálního hlavičkového souboru. [107] => * Přejmenování je prováděno implicitně a ne explicitně. Mezi časté stížnosti na [[CVS]] patří to, že součástí historie revizí souborů je jeho jméno. Kvůli tomu nelze přejmenovat soubor, aniž by došlo k přerušení jeho historie, nebo přejmenování historie, které ji učiní nepřesnou. Většina systémů pro správu revizí novějších než [[CVS]] tento problém řeší tím, že souboru přidělí unikátní trvanlivé jméno (něco jako [[inode|číslo inodu]]), které přežívá i po přejmenování. Git podobné identifikátory nepoužívá a považuje to za výhodu.{{cite web [108] => | mailinglist=git [109] => | autor=Linus Torvalds [110] => | url=http://marc.info/?l=git&m=114123702826251 [111] => | titul=Re: impure renames / history tracking [112] => | datum vydání=2006-03-01 [113] => }}{{cite web [114] => | mailinglist=git [115] => | autor=Junio C Hamano [116] => | url=http://marc.info/?l=git&m=114316047119262 [117] => | titul=Re: Errors GITtifying GCC and Binutils [118] => | datum vydání=2006-03-24 [119] => }} Jako argument lze použít skutečnost, že zdrojové soubory jsou kromě prostého přejmenování občas také rozdělovány nebo slučovány.{{cite web [120] => | mailinglist=git [121] => | autor=Junio C Hamano [122] => | url=http://marc.info/?l=git&m=114315795227271 [123] => | titul=Re: Errors GITtifying GCC and Binutils [124] => | datum vydání=2006-03-23 [125] => }} Zachycením této skutečnosti jako prosté přejmenování by jen zafixovalo nepřesné vyjádření toho, co se ve skutečnosti stalo, v rámci (později neměnitelné) historie. Git tento problém řeší detekcí přejmenování během zjišťování historie stavů projektu (snapshots) a nikoliv jeho zaznamenáváním při zachycování stavu (snapshot).{{cite web [126] => | mailinglist=git [127] => | autor=Linus Torvalds [128] => | url=http://marc.info/?l=git&m=116473016012824 [129] => | titul=Re: git and bzr [130] => | datum vydání=2006-11-28 [131] => }}, on using git-blame to show code moved between source files (Stručně: Pokud se v revizi N nachází nějaký soubor, pak soubor se stejným jménem v revizi N-1 je jeho předpokládaným předkem. Pokud ale v revizi N-1 není soubor podobného jména, pak Git hledá soubor, který existoval v revizi N-1 a je velmi podobný novému souboru.) Tento přístup ovšem při každém prohlížení historie vyžaduje více času [[Centrální procesorová jednotka|procesoru]] a používání více voleb pro nastavení potřebných heuristik. [132] => [133] => Někteří lidé kritizují model ukládání dat: [134] => [135] => * Opakované explicitní balení objektů. Git uchovává každý nově vytvořený objekt jako samostatný soubor. Ačkoliv je každý z nich komprimován, vede to k prostorové neefektivnosti. Tento problém je řešen používáním balíčků (pack), které ukládají více objektů v jednom souboru (nebo v jednom síťovém proudu dat) při zhušťování na základě uchovávání vzájemných rozdílů. Při kompresi balíčků se využívá heuristika, která vychází z toho, že soubory se stejným jménem jsou asi podobné. Ale na této heuristice není závislá korektnost. Nově vytvořené objekty (nově přidaná historie) jsou ukládány odděleně. Pro dosažení prostorové efektivnosti je nutné provést znovuzabalení (repacking). Git provádí periodické znovuzabalení automaticky, ale lze je provést i ručně provedením příkazu git gc. [136] => [137] => Git implementuje několik slučovacích strategií (merging strategies). Nestandardní strategie může být zvolena v okamžiku zahájení slučování:{{Citace elektronické monografie | autor=Linus Torvalds | url=http://www.kernel.org/pub/software/scm/git/docs/git-merge.html | titul=git-merge(1) | datum vydání=2007-07-18}} [138] => [139] => ; resolve: Tradiční třícestný slučovací algoritmus ([[3-way merge]]). [140] => ; recursive: Toto je standardní (default) strategie užívaná v případě, kdy dochází k přetažení (pulling) nebo sloučení (merging) jedné větve. Jde o variantu třícestného slučovacího algoritmu. „Pokud existuje více než jeden společný předek, který by mohl být použit pro třícestné slučování, vytvoří se sloučený strom společných předků a ten se použije jako referenční strom pro třícestné slučování. Tento přístup vede k méně slučovacím konfliktům aniž by docházelo k chybným slučováním. Bylo to potvrzeno testy na skutečných případech slučování (merge commits) převzatých z historie vývoje jádra Linux 2.6. Tento přístup navíc může detekovat a vyřešit slučování, jehož součástí je i přejmenování“.{{Citace elektronické monografie | autor=Linus Torvalds | url=http://revctrl.org/CrissCrossMerge | titul=CrissCrossMerge | datum vydání=2007-07-18 | datum přístupu=2009-03-05 | url archivu=https://web.archive.org/web/20060113122252/http://revctrl.org/CrissCrossMerge | datum archivace=2006-01-13 | nedostupné=ano }} [141] => ; octopus: Standardní (default) strategie při slučování více než dvou hlavních větví (when merging more than two heads). [142] => [143] => == Datové struktury == [144] => Git není v podstatě jen systém pro správu zdrojových kódů (SCM): [145] => [146] => {{Citát v rámečku|Je mnoho způsobů, jak můžete vidět Git jen jako souborový systém – je obsahově adresovatelný, a umí verzovat, ale hlavně problémy řeší z pohledu souborového systému (''jo, jádra jsou to, co já dělám''), a já ve skutečnosti nemám naprosto žádný zájem na vytvoření tradičního SCM systému.|Linus Torvalds}} [147] => [148] => K tomuto základu byla postupně, jak se ukázala jejich potřeba, doplněna řada funkcí, které jsou očekávány od tradičních SCM. [149] => [150] => Git používá dvě základní datové struktury umístěné v adresáři .git: proměnlivý index (také nazývaný stage nebo cache), který ukládá informace o pracovním stromě a připravovaném commitu (revizi); a databázi, do které se pouze připisuje. Index slouží jako spojovací bod mezi objektovou databází a pracovním stromem. Databáze obsahuje čtyři typy objektů: [151] => [152] => * ''Blob'' slouží k uložení obsahu jednoho souboru. ''Blob'' objekt neobsahuje název souboru, časová razítka ani jiná metadata. [153] => * ''Strom'' je ekvivalentem adresáře. Obsahuje seznam názvů souborů, z nichž ke každému je přiřazena řada bitových příznaků a název objektu typu ''blob'' nebo ''strom'', které odpovídají jednotlivým souborům, symbolickým odkazům, nebo podadresářům. Tento objekt popisuje snapshot zdrojového adresáře, jejich hierarchie pak snapshot zdrojového stromu. [154] => * ''Commit'' slouží k seřazení objektů ''strom'' do historie. Obsahuje název objektu ''strom'' (který odpovídá nejvyšší úrovni zdrojového adresáře), časové razítko, žurnálovací zprávy a jména ''commit'' objektů, které jsou bezprostředními předchůdci tohoto ''commitu''; mnoho ''commitů'' má jednoho bezprostředního předchůdce, ''commity'' vzniklé slučováním mají dva nebo více předchůdců, nejstarší ''commit'' nemá žádného předchůdce. [155] => * ''Tag'' je kontejner, který obsahuje odkaz na jiný objekt a může obsahovat další metadata ve spojení s jiným objektem. Nejčastěji se používá k ukládání digitálního podpisu commit objektu odpovídajícímu konkrétnímu poslaní údajů do repositáře (tj. začaly být sledovány Gitem). [156] => [157] => Každý objekt je v Gitu identifikován hodnotou [[hašovací funkce]] [[Secure Hash Algorithm|SHA-1]] svého obsahu. [158] => [159] => Git ukládá každou revizi souboru jako samostatný blob. Vztahy mezi bloby lze nalézt pouze prohlížením stromu a commit objektů. U nově přidávaných objektů se nevyužívá jejich podobnosti s předešlou revizí, pouze se zkomprimují algoritmem [[zlib]]. Git spočítá hodnotu [[Hašovací funkce|haše]] (u souborů se hodnota počítá včetně předřazené identifikace typu a čísla objektu) a blob umístí do adresáře podle prvních dvou znaků haše. Zbytek hashe se používá jako název souboru pro daný objekt. To může vést k velké spotřebě diskového prostoru, proto se starší objekty ukládají do jednoho souboru v adresáři .git/objects/pack, který pro úsporu místa využívá delta kompresi, což znamená, že se ukládají pouze změny oproti jiné revizi. [160] => [161] => Git servery typicky naslouchají na TCP portu 9418.{{Citace elektronické monografie | url = http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt | titul = Service Name and Transport Protocol Port Number Registry | vydavatel = IANA (Internet Assigned Numbers Authority)}} [162] => [163] => == Realizace Gitu == [164] => Git je primárně vyvíjen na Linuxu, ale také podporuje většinu hlavních operačních systémů včetně [[BSD]], [[Solaris (operační systém)|Solarisu]], [[macOS]] a [[Windows NT]]. [165] => [166] => JGit realizace Gitu je čistě Java softwarová knihovna, jež má být začleněna do všech aplikací Java. JGit používá Gerrit (code review tool) a EGit (Git klient pro Eclipse IDE). [167] => [168] => Realizace Dulwich je čistě Python softwarová komponenta pro Python 2. [169] => [170] => Libgit2 je realizace Gitu v podobě ANSI C knihovny, kterou lze přeložit pro různé platformy včetně Microsoft Windows, Linux, macOS a BSD. Používá se jako základ pro Git knihovny pro programovací jazyky Ruby, Python a Haskell a jako základní implementace gitu v týmu Microsoft Foundation servis a Visual Studio. [171] => [172] => Verzovací systémy Perforce a Plastic SCM obsahuje vlastní implementaci protokolu Git, aby jejich klienti mohli spolupracovat se vzdálenými Git [[Repozitář (verzování)|repozitáři]]. [173] => [174] => == Osvojení == [175] => Eclipse Foundation uvedl v ročních statistických zjišťování Společenství, že v květnu 2012 více než 27 % (z 732) z profesionálních softwarových vývojářů používalo Git jako jejich primární systém, což byl nárůst z 12,8 % v roce 2011.{{cite web|url=http://eclipse.org/org/community_survey/Survey_Final_Results_2012.xls|title=Results of Eclipse Community Survey 2012}} Open source directory Ohloh vykazuje podobný nárůst mezi open source projekty. [176] => [177] => Ve Spojeném království IT webové stránky itjobswatch.co.uk hlásí, že od prosince 2012 má přibližně 10 % společností zabývajících se vývojem softwaru na seznam požadavků Git ve srovnání s 17,3 % v Subversion, 8,7 % pro Microsoft Team Foundation Server, a 1,9 % pro Visual SourceSafe. [178] => [179] => Následující webové stránky poskytují zdarma hostování zdrojových kódu v repozitářích postavených na Gitu: [180] => {{Sloupce|3| [181] => * [[Assembla]] [182] => * [[BerliOS]] [183] => * [[Bitbucket]] [184] => * [[CloudForge]] [185] => * [[CodePlex]]{{cite news|last=Bright|first=Peter|title=Microsoft brings git support to its CodePlex hosting service|url=http://arstechnica.com/microsoft/news/2012/03/microsoft-brings-git-support-to-its-codeplex-hosting-service.ars|accessdate=23 March 2012|newspaper=Ars Technica|date=22 March 2012}} [186] => * [http://www.collab.net/git CollabNet] [187] => * [[GitHub]] [188] => * [[GitLab]] [189] => * [[Gitorious]] [190] => * [[GNU Savannah]] [191] => * [[Google Code]] [192] => * [[JavaForge]] [193] => * [[SourceForge]] [194] => }} [195] => [196] => == Odkazy == [197] => [198] => === Reference === [199] => [200] => [201] => === Související články === [202] => * [[Verzování]] [203] => * [[Subversion]] [204] => [205] => === Externí odkazy === [206] => * {{Wikiknihy|kniha=Git}} [207] => * {{Wikiknihy|kniha=Git pro mě}} [208] => * [http://knihy.nic.cz/files/nic/edice/scott_chacon_pro_git.pdf Český překlad knihy „Pro Git“, Scott Chacon] – vyšlo [http://knihy.nic.cz/ v edici CZ.NIC], PDF volně ke stažení. [209] => * [http://git-scm.com/book/cs HTML podoba „Pro Git“ (český překlad) na oficiálních stránkách Gitu] – překlad vychází z výše uvedeného překladu vydaného v CZ.NIC. [210] => * {{Commonscat}} [211] => [212] => {{Software pro správu verzí}} [213] => {{Autoritní data}} [214] => [215] => [[Kategorie:Systémy pro správu verzí]] [216] => [[Kategorie:Svobodný software v C]] [] => )
good wiki

Git

# Git Git je moderní systém pro správu verzí, který umožňuje efektivně sledovat změny v kódu a dalších typech textových souborů. Byl vyvinut Linusem Torvaldsem v roce 2005 a od té doby se stal jedním z nejrozšířenějších nástrojů pro práci na projektech v softwarovém inženýrství.

More about us

About

Byl vyvinut Linusem Torvaldsem v roce 2005 a od té doby se stal jedním z nejrozšířenějších nástrojů pro práci na projektech v softwarovém inženýrství. Jednou z hlavních předností Gitu je jeho decentralizovaná povaha, což znamená, že každý vývojář má kompletní kopii celého repozitáře na svém počítači. Tato vlastnost přináší mnoho výhod, jako je možnost pracovat i bez připojení k internetu a rychlé provádění operací. Git také usnadňuje spolupráci mezi různými vývojáři, protože umožňuje snadné sloučení změn a efektivní řešení konfliktů. Git podporuje širokou škálu pracovních procesů a je možné ho použít pro projekty jakékoliv velikosti, od malých osobních projektů po velké open-source iniciativy. Díky bohaté sadě nástrojů a integrací s populárními platformami, jako je GitHub či GitLab, je Git přístupný a přívětivý i pro nováčky, kteří chtějí vývoj softwaru vyzkoušet. Spousta komunit a zdrojů je k dispozici pro naučení se používání Gitu, což přispívá k jeho popularitě a rozšíření. Git nejenže podporuje kreativní proces tvorby softwaru, ale také pomáhá budovat silná a spolupracující vývojářská prostředí. Celkově Git představuje skvělý nástroj, který zjednodušuje správu verzí, a přispívá k produktivitě a efektivitě v oblasti softwarového vývoje, což v konečném důsledku podporuje inovaci a zlepšení technologií, které používáme každý den.

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.

You might be interested in

,'Linux (jádro)','Monotone','BitKeeper','CVS','Linus Torvalds','Verzování','Linux','Mercurial','macOS','Microsoft Windows','BSD','Solaris (operační systém)'