Close

Czym jest Git?

Git jest obecnie najczęściej stosowanym nowoczesnym systemem kontroli wersji na świecie. Jest to dojrzały, aktywnie prowadzony projekt open source zainicjowany w 2005 roku przez Linusa Torvaldsa, słynnego twórcę jądra systemu operacyjnego Linux. System Git stosowany jest do kontroli wersji w olbrzymiej liczbie projektów oprogramowania, zarówno komercyjnych, jak i open source. Bardzo wielu programistów spośród puli dostępnych talentów w dziedzinie tworzenia oprogramowania miało styczność z systemem Git, który świetnie współpracuje z różnymi systemami operacyjnymi oraz zintegrowanymi środowiskami programistycznymi (IDE).

Ze względu na rozproszoną architekturę Git jest przykładem rozproszonego systemu kontroli wersji (DVCS). Zamiast przechowywania pełnej wersji historii oprogramowania w jednym miejscu, jak miało to miejsce w przypadku niegdyś popularnych systemów kontroli wersji, takich jak CVS lub Subversion (nazywany również SVN), w systemie Git kopia robocza kodu każdego programisty jest równocześnie repozytorium zawierającym pełną historię wszystkich zmian.

Oprócz rozproszonego charakteru, system Git cechują również wydajność, bezpieczeństwo i elastyczność.

A staggering number of software projects rely on Git for version control, including commercial projects as well as open source. Developers who have worked with Git are well represented in the pool of available software development talent and it works well on a wide range of operating systems and IDEs (Integrated Development Environments).

Having a distributed architecture, Git is an example of a DVCS (hence Distributed Version Control System). Rather than have only one single place for the full version history of the software as is common in once-popular version control systems like CVS or Subversion (also known as SVN), in Git, every developer's working copy of the code is also a repository that can contain the full history of all changes.

In addition to being distributed, Git has been designed with performance, security and flexibility in mind.


Wydajność


Sama charakterystyka wydajności systemu Git wypada bardzo korzystnie na tle wielu alternatywnych rozwiązań. Procesy zatwierdzania nowych zmian, tworzenia gałęzi, scalania i porównywania przeszłych wersji zostały zoptymalizowane pod kątem wydajności. Algorytmy zastosowane w systemie Git wykorzystują dogłębną znajomość powszechnych atrybutów drzew plików rzeczywistego kodu źródłowego, typowy przebieg ich modyfikacji w czasie oraz wzorce dostępu.

W przeciwieństwie do niektórych programów do kontroli wersji, Git nie daje się oszukać nazwom plików przy ustalaniu magazynu i historii wersji drzewa plików, ponieważ koncentruje się na samej zawartości pliku. W końcu pliki z kodem źródłowym często się dzieli, porządkuje oraz zmienia ich nazwy. Format obiektów w plikach repozytorium Git wykorzystuje kombinację kodowania różnicowego (przechowywania różnic w zawartości) i kompresji, jawnie przechowując zawartość katalogów i obiekty metadanych wersji.

Rozproszenie jest również bardzo korzystne z perspektywy wydajności.

Załóżmy na przykład, że programistka Alice wprowadza zmiany w kodzie źródłowym, dodając funkcję do kolejnego wydania 2.0, a następnie zatwierdza zmiany, dodając do nich opisowe komunikaty. Następnie pracuje nad drugą funkcją i te zmiany także zatwierdza. Są one oczywiście zapisywane jako odrębne elementy prac w historii wersji. Potem Alice przechodzi do gałęzi wersji 1.3 tego samego oprogramowania, aby poprawić błąd występujący tylko w starszej wersji. Ma to na celu umożliwienie zespołowi Alice dostarczenia wydania z poprawką błędu (wersji 1.3.1), zanim wersja 2.0 będzie gotowa. Następnie Alice wraca do gałęzi 2.0, aby kontynuować prace nad nowymi funkcjami do wersji 2.0, a to wszystko może odbywać się bez dostępu do sieci, zatem szybko i niezawodnie. Alice może pracować nawet w samolocie. Gdy Alice będzie gotowa do wysłania wszystkich zatwierdzonych z osobna zmian do zdalnego repozytorium, może je wypchnąć jednym poleceniem push.

Logo Git
materiały pokrewne

Git — ściągawka

Logo Bitbucket
POZNAJ ROZWIĄZANIE

Poznaj środowisko Git z rozwiązaniem Bitbucket Cloud

Bezpieczeństwo


System Git został zaprojektowany w taki sposób, aby najważniejsza była integralność zarządzanego kodu źródłowego. Zawartość plików, a także faktyczne relacje między plikami a katalogami, wersjami, tagami i commitami — wszystkie te obiekty w repozytorium Git są chronione zabezpieczonym kryptograficznie algorytmem skrótów o nazwie SHA1. To pozwala chronić kod i historię zmian przed przypadkowymi i złośliwymi zmianami, a także umożliwia pełne prześledzenie historii.

Z systemem Git zyskujesz pewność, że masz do czynienia z autentyczną historią zawartości swojego kodu źródłowego.

Niektóre inne systemy kontroli wersji nie są zabezpieczone przed wprowadzaniem tajnych modyfikacji w późniejszym czasie. Może to stwarzać poważną lukę w zabezpieczeniach informacji dowolnej organizacji zajmującej się tworzeniem oprogramowania.

Elastyczność


Jednym z kluczowych założeń projektowych systemu Git jest elastyczność. System Git jest elastyczny pod kilkoma względami: obsługuje różne rodzaje nieliniowych przepływów prac programistycznych, jest wydajny zarówno w przypadku małych, jak i dużych projektów, a także zgodny z wieloma istniejącymi systemami i protokołami.

System Git został zaprojektowany tak, aby w pierwszej kolejności położyć nacisk na tworzenie gałęzi i oznaczanie tagami (w odróżnieniu od systemu SVN), a operacje związane z gałęziami oraz tagami (takie jak scalanie lub przywracanie) również są przechowywane jako element historii zmian. Nie każdy system kontroli wersji zapewnia taki poziom śledzenia.

Kontrola wersji za pomocą Git


System Git jest obecnie najlepszą opcją dla większości zespołów programistycznych. Choć każdy zespół jest inny i powinien przeprowadzić własną analizę, warto wziąć pod uwagę poniższe powody, dla których kontrola wersji z użyciem systemu Git ma przewagę nad rozwiązaniami alternatywnymi:

System Git jest dobry

System Git cechują funkcjonalność, wydajność, bezpieczeństwo i elastyczność, których potrzebuje większość zespołów i indywidualnych programistów. Te atrybuty środowiska Git zostały szczegółowo opisane powyżej. Wiele zespołów uważa, że w zestawieniu z większością alternatywnych rozwiązań system Git wypada bardzo korzystnie.

Git jest de facto standardem

Git jest najszerzej stosowanym narzędziem tego rodzaju. To czyni go atrakcyjnym z wymienionych poniżej powodów. Atlassian zarządza w systemie Git prawie całym kodem źródłowym swoich projektów.

Duża liczba programistów ma już doświadczenie z systemem Git, a znaczny odsetek absolwentów może mieć doświadczenie wyłącznie z tym systemem. Choć niektóre organizacje będą musiały pokonać krzywą uczenia się, przeprowadzając migrację do systemu Git z innego systemu kontroli wersji, wielu dotychczasowych i przyszłych programistów nie wymaga szkolenia w tym zakresie.

Oprócz zalet takich jak dostęp do dużej puli talentów dominacja systemu Git na rynku oznacza również, że wiele narzędzi i usług programistycznych innych firm jest już zintegrowanych z systemem Git. Można wśród nich wskazać choćby zintegrowane środowiska programistyczne (IDE) oraz nasze własne narzędzia, takie jak klient DVCS na komputery Sourcetree, oprogramowanie do monitorowania zgłoszeń i projektów Jira, a także usługa hostingu kodu Bitbucket.

Jeśli jesteś początkującym programistą, który stara się rozwijać cenne umiejętności w zakresie obsługi narzędzi do tworzenia oprogramowania, system Git powinien się znaleźć na Twojej liście rozwiązań do kontroli wersji.

Git to wysokiej jakości projekt open source

Git jest solidnie wspieranym projektem open source, który od ponad dziesięciu lat jest pilnie nadzorowany. Opiekunowie projektu wykazali się zrównoważonym osądem i dojrzałym podejściem do zaspokajania długofalowych potrzeb swoich użytkowników przez dostarczanie regularnych wydań poprawiających przydatność i funkcjonalność. Jakość oprogramowania open source łatwo nadzorować, a mnóstwo firm w dużym stopniu korzysta z tej jakości.

System Git może pochwalić się ogromnym wsparciem udzielanym przez społeczność i dużą bazą użytkowników. Dokumentacja jest doskonała i wyczerpująca. Obejmuje książki, samouczki i dedykowane witryny internetowe. Dostępne są również podcasty i samouczki wideo.

Fakt, że system jest dostępny na zasadzie open source, ogranicza koszty dla osób, które programowaniem zajmują się hobbistycznie, ponieważ mogą korzystać z systemu Git bez żadnych opłat. Jeśli chodzi o zastosowanie w projektach open source, system Git jest bez wątpienia następcą poprzednich generacji udanych systemów open source do kontroli wersji: SVN i CVS.

Krytyka systemu Git

Jednym z powszechnych argumentów krytyków systemu Git jest to, że jego opanowanie może być trudne. Niektóre terminy występujące w systemie Git będą nowe dla początkujących oraz użytkowników innych systemów, a inne mogą mieć odmienne znaczenie. Przykładowo revert w systemie Git ma inne znaczenie niż w SVN czy CVS. Niemniej jednak Git jest niezwykle funkcjonalny i daje użytkownikom mnóstwo możliwości. Opanowanie umiejętności ich wykorzystania może potrwać jakiś czas, jednak później zespół może je wykorzystać do zwiększenia tempa prac programistycznych.

Dla zespołów migrujących z nierozproszonych systemów kontroli wersji posiadanie centralnego repozytorium może wydawać się czymś korzystnym, czego nie chcą stracić. Jednak mimo że system Git został zaprojektowany jako rozproszony system kontroli wersji (DVCS), można w nim prowadzić oficjalne, kanoniczne repozytorium, w którym muszą być przechowywane wszystkie zmiany w oprogramowaniu. W systemie Git repozytorium każdego programisty jest kompletne, dlatego praca nie musi być ograniczona dostępnością i wydajnością „centralnego” serwera. W trakcie awarii lub podczas pracy offline programiści zachowują dostęp do pełnej historii projektu. Dzięki elastyczności i rozproszeniu systemu Git możesz pracować tak jak dotychczas, zyskując dodatkowo korzyści, jakie daje Git, a z braku których Twój zespół mógł sobie dotąd nie zdawać sprawy.

Teraz, gdy już wiesz, na czym polega kontrola wersji, czym jest system Git i dlaczego zespoły tworzące oprogramowanie powinny z niego korzystać, poczytaj więcej na temat korzyści, jakie wdrożenie systemu Git może przynieść całej organizacji.


Udostępnij ten artykuł

Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ludzie współpracujący przy ścianie pełnej narzędzi

Blog Bitbucket

Ilustracja DevOps

Ścieżka szkoleniowa DevOps

Demonstracje funkcji z ekspertami Atlassian

Zobacz, jak Bitbucket Cloud współpracuje z Atlassian Open DevOps

Zapisz się do newslettera DevOps

Thank you for signing up