Git (oprogramowanie)
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.
Logo programu | |
Autor | Junio Hamano, Linus Torvalds |
---|---|
Pierwsze wydanie | (dts) | 7 kwietnia 2005
Aktualna wersja stabilna | 2.47.1 (25 listopada 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
edytujPrace 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
edytujDobre 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
edytujWiele 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
edytujJako 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ść
edytujGit 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
edytujIstnieją 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- ↑ 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- Strona domowa projektu Git (ang.)