Git (oprogramowanie)

system kontroli wersji oprogramowania

Git – rozproszony system kontroli wersji. Stworzył go Linus Torvalds jako narzędzie wspomagające rozwój jądra Linux. Git stanowi wolne oprogramowanie i został opublikowany na licencji GNU GPL w wersji 2.

Git
Logo Git
Logo programu
Autor Junio Hamano, Linus Torvalds
Pierwsze wydanie 2005-04-07 7 kwietnia 2005(dts)
Aktualna wersja stabilna 2.44.0
(23 lutego 2024) [±]
Język programowania C, Bourne Shell, Perl
System operacyjny POSIX, Windows
Rodzaj system kontroli wersji
Licencja GNU GPL v2
Strona internetowa

Pierwsza wersja narzędzia Git została wydana 7 kwietnia 2005 roku, by zastąpić poprzednio używany w rozwoju Linuksa, niebędący wolnym oprogramowaniem, system kontroli wersji BitKeeper.

Historia edytuj

Prace nad Gitem rozpoczęły się po tym, jak BitKeeper, używany wtedy do rozwoju Linuksa, przestał być darmowy dla projektów o otwartym kodzie źródłowym. Torvalds szukał rozproszonego systemu kontroli wersji, który mógłby być użyty zamiast BitKeepera. Głównymi kryteriami wyboru były:

  1. Przykład CVS, czego nie robić.
  2. System powinien być rozproszony.
  3. System powinien być chroniony przed błędami w repozytorium (przypadkowymi, jak awaria twardego dysku, jak i złośliwymi, wprowadzonymi przez kogoś).
  4. System powinien być szybki.

Pierwsze dwa punkty wyeliminowały wszystko prócz Monotone’a(inne języki), a czwarty punkt wyeliminował wszystko, więc Torvalds postanowił napisać własny system kontroli wersji.

Prace nad Gitem rozpoczęły się 3 kwietnia 2005 roku, projekt został ogłoszony 6 kwietnia, 7 kwietnia Git obsługiwał kontrolę wersji swojego własnego kodu, 18 kwietnia pierwszy raz wykonano łączenie kilku gałęzi kodu, 27 kwietnia Git został przetestowany pod względem szybkości z wynikiem 6,7 łat na sekundę, a 16 czerwca Linux 2.6.12 był hostowany przez Gita.

Najważniejsze cechy edytuj

Dobre wsparcie dla rozgałęzionego procesu tworzenia oprogramowania: jest dostępnych kilka algorytmów łączenia zmian z dwóch gałęzi, a także możliwość dodawania własnych algorytmów[1].

Praca off-line: każdy programista posiada własną kopię repozytorium, do której może zapisywać zmiany bez połączenia z siecią; następnie zmiany mogą być wymieniane między lokalnymi repozytoriami. Programista może także dodawać oraz usuwać gałęzie[2].

Wsparcie dla istniejących protokołów sieciowych: dane można wymieniać przez HTTP(S), FTP, rsync (usunięte w wersji Git 2.8.0[3]), SSH.

Efektywna praca z dużymi projektami: system Git według zapewnień Torvaldsa, a także według testów fundacji Mozilla, jest o rzędy wielkości szybszy niż niektóre konkurencyjne rozwiązania[4][5].

Każda rewizja to obraz całego projektu: w przeciwieństwie do innych systemów kontroli wersji, Git nie zapamiętuje zmian między kolejnymi rewizjami, lecz kompletne obrazy. Z jednej strony wymaga to nieco więcej pracy, aby porównać dwie rewizje, z drugiej jednak pozwala np. na automatyczną obsługę zmian nazw plików[6].

Projekty edytuj

Wiele projektów używa Gita jako systemu kontroli wersji, zarówno nowo powstających, jak i migrowanch do niego z innego systemu kontroli wersji (np. CVS lub SVN). Do największych i najbardziej znanych projektów o otwartym źródle (a więc również posiadających dużo użytkowników i osób rozwijających oraz liczbę zmian) należy wymienić: jądro Linuksa oraz podprojekty z nim związane, a także GNU Hurd, GNOME, GTK+, GStreamer, KDE, GIMP, Perl, Qt, Ruby on Rails, Samba, Wine, Xfce, Xorg, jQuery, YUI, Erlang. Również część serwisów internetowych używa Gita do rozwijania swojego kodu (a część z niego jest publicznie dostępna), m.in. Reddit (otwarte źródła), Digg, Facebook.

Kilka systemów operacyjnych korzysta z Gita do zarządzania całą dystrybucją oraz dodatkowymi programami w nie wchodzącymi: Arch Linux, Android, Fedora, Maemo, MeeGo, OLPC XO-1, openSUSE oraz DragonFly BSD. Dystrybucje Debian[7] oraz Ubuntu używają Gita do rozwijania programów oraz zmian w programach zewnętrznych dla wielu (choć nie wszystkich) pakietów.

Wiele projektów używa innego systemu kontroli wersji, ale używa synchronizacji pomiędzy nim a Git, tak aby osoby chcące wykorzystywać większe możliwości Gita mogły go używać. Do przykładów należy projekt LLVM i clang (używają SVN).

Git server edytuj

Jako rozproszony system kontroli wersji, Git nie wymaga odrębnej aplikacji serwerowej. Istnieją jednak pakiety rozszerzające oryginalne oprogramowanie, przede wszystkim o kontrolę dostępu, wsparcie dla zarządzania wieloma repozytoriami, czy interfejs WWW. Przykłady niektórych popularnych projektów to GitHub, Bitbucket, GitLab, Git Daemon, Gitolite, Gerrit, Gitiles, Bonobo Git Server, Git Server.

Przenośność edytuj

Git jest rozwijany dla systemu operacyjnego GNU/Linux, ale może być też używany na innych systemach operacyjnych bazujących na Uniksie, takich jak BSD czy Solaris. Oficjalny port na Windowsa używa Cygwina (emulatora środowiska POSIX), jednak jest on o wiele wolniejszy niż na systemach używających POSIX-a natywnie. Istnieją też porty natywne na Windows (używające MinGW) i są w fazie produkcji.

Hosting edytuj

Istnieje kilka serwisów hostingowych umożliwiających trzymanie repozytoriów gita, m.in. Bitbucket, GitHub i GitLab.

Przypisy edytuj

  1. git-merge(1).
  2. Łukasz Bącik, Jak usunąć branch z GITa? [online] [dostęp 2022-02-23].
  3. Git 2.8 Release Notes, Git, 15 stycznia 2019 [dostęp 2019-01-15].
  4. Re: VCS comparison table.
  5. Oh what a relief it is.
  6. Re: more git updates...
  7. Use of VCS in Debian packages – some stats.

Linki zewnętrzne edytuj