Git (oprogramowanie)
Logo programu | |
Autor | Junio Hamano, Linus Torvalds |
---|---|
Pierwsze wydanie | (dts) | 7 kwietnia 2005
Aktualna wersja stabilna | 2.47.0 (7 października 2024) [±] |
Język programowania | C, Bourne Shell, Perl |
System operacyjny | POSIX, Windows |
Rodzaj | system kontroli wersji |
Licencja | GNU GPL v2 |
Strona internetowa |
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.
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 | edytuj kod]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:
- Przykład CVS, czego nie robić.
- System powinien być rozproszony.
- System powinien być chroniony przed błędami w repozytorium (przypadkowymi, jak awaria twardego dysku, jak i złośliwymi, wprowadzonymi przez kogoś).
- System powinien być szybki.
Pierwsze dwa punkty wyeliminowały wszystko prócz Monotone’a , 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 | edytuj kod]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 | edytuj kod]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 | edytuj kod]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 | edytuj kod]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 | edytuj kod]Istnieją serwisy internetowe umożliwiające hostowanie repozytoriów Gita oraz zapewniające rozwiązania ciągłej integracji oraz wdrażania, m.in. Bitbucket, GitHub i GitLab. Niektóre z nich, takie jak np. Gitea, umożliwiają uruchomienie własnej, darmowej instancji danego narzędzia, ale udostępniają płatny hosting, inne (jak np. GitLab) mają płatne plany dla większych repozytoriów lub dodatkowych usług[8].
Przypisy
[edytuj | edytuj kod]- ↑ git-merge(1).
- ↑ Łukasz Bącik , Jak usunąć branch z GITa? [online] [dostęp 2022-02-23] .
- ↑ Git 2.8 Release Notes, Git, 15 stycznia 2019 [dostęp 2019-01-15] .
- ↑ Re: VCS comparison table.
- ↑ Oh what a relief it is.
- ↑ Re: more git updates...
- ↑ Use of VCS in Debian packages – some stats.
- ↑ Top GitHub Alternatives to Host Your Open Source Projects. itsfoss.com, 2024-02-15. [dostęp 2024-05-07]. (ang.).
Linki zewnętrzne
[edytuj | edytuj kod]- Strona domowa projektu Git (ang.)