Co to jest GitHub? Więcej niż kontrola wersji Git w chmurze

GitHub jest w istocie usługą hostingu repozytoriów Git, tj. Opartym na chmurze systemem zarządzania kodem źródłowym lub systemem kontroli wersji, ale to dopiero początek. Ponadto GitHub implementuje funkcje do przeglądu kodu (żądania ściągnięcia, różnice i żądania recenzji), zarządzania projektami (w tym śledzenia problemów i przypisywania), integracji z innymi narzędziami programistycznymi, zarządzania zespołem, dokumentacji i „kodowania społecznościowego”.

Coś w rodzaju serwisu społecznościowego dla programistów, GitHub to otwarte środowisko, w którym programiści mogą swobodnie udostępniać i współpracować (nawet ad hoc) nad kodem open source. GitHub ułatwia znajdowanie przydatnego kodu, kopiowanie repozytoriów na własny użytek i przesyłanie zmian do projektów innych osób. W rezultacie GitHub stał się domem dla praktycznie każdego projektu open source o jakimkolwiek znaczeniu.

Zawsze, gdy chcę zgłębić projekt open source, zaczynam od wyszukania nazwy projektu. Po znalezieniu witryny projektu szukam linku do repozytorium kodu i dziewięć razy na 10 trafiam na GitHub.

Kontrola wersji Git

Zanim zrozumiemy, co robi GitHub i jak działa GitHub, musimy zrozumieć Git. Git to rozproszony system kontroli wersji, pierwotnie napisany przez Linusa Torvaldsa w 2005 roku dla i z pomocą społeczności jądra Linuksa. Nie jestem tutaj, aby sprzedawać Ci w Git, więc oszczędzę ci gadania o tym, jak szybkie, małe, elastyczne i popularne jest to, ale powinieneś wiedzieć, że kiedy klonujesz repozytorium Git (w skrócie „repo”) otrzymujesz całą historię wersji na swoim komputerze, a nie tylko migawkę z jednej gałęzi na raz.

Git zaczynał jako narzędzie wiersza poleceń, jak przystało na jego pochodzenie w społeczności jądra Linuksa. Jeśli chcesz, nadal możesz używać wiersza poleceń Git, ale nie musisz. Zamiast lub oprócz wiersza poleceń możesz użyć bezpłatnego klienta GitHub w systemie Windows lub Mac lub dowolnego z wielu innych interfejsów GUI dla Git lub edytora kodu, który integruje się z Git. Wszystkie te opcje są początkowo łatwiejsze w użyciu niż wiersz poleceń. Linia poleceń Git jest preinstalowana w większości systemów Mac i Linux i obsługuje wszystkie operacje; GUI zazwyczaj obsługują często używany podzbiór operacji Git.

Git różni się od starszych systemów kontroli wersji, takich jak Subversion, tym, że jest raczej rozproszony niż scentralizowany. Jest również dość szybki, zwłaszcza że większość operacji odbywa się w lokalnym repozytorium. Niemniej jednak korzystanie z Git zwiększa poziom złożoności: wysyłanie kodu do lokalnego repozytorium i wysyłanie zatwierdzeń do zdalnego repozytorium to osobne kroki. Kiedy zespoły o tym zapomną (lub nie zostały o tym nauczone), może to prowadzić do sytuacji, w których różni programiści pracują z różnymi bazami kodu.

Zdalne repozytorium Git może znajdować się na serwerze lub na maszynie innego dewelopera. Umożliwia to wiele możliwych przepływów pracy dla zespołów. Jeden z typowych przepływów pracy polega na używaniu repozytorium serwera jako „błogosławionego” repozytorium, do którego przekazywany jest tylko przejrzany, dobrze przetestowany kod, często poprzez żądanie ściągnięcia wysłane z repozytorium programisty.

Funkcjonalność GitHub

Zauważyłem już, że GitHub to oparty na chmurze serwer Git do hostowania kodu i kodowania społecznościowego, i że implementuje funkcje do przeglądu kodu (pull requesty, diffs i review request), zarządzania projektami (w tym śledzenie problemów i przypisywanie), integracje z innymi narzędziami dla programistów, zarządzaniem zespołem i dokumentacją.

Najnowszą innowacją w kodowaniu społecznościowym z GitHub jest zatwierdzanie współautorów , które można osiągnąć, dodając jeden lub więcej zwiastunów „współautorstwa” na końcu komunikatu zatwierdzenia. Ten mechanizm nie wpływa na rdzeń repozytorium jako taki i nie zmienia wyglądu repozytorium na zwykłym Git, ale w GitHub Chrome pokaże wielu zatwierdzających na liście zatwierdzeń i przyzna każdemu współautorowi kredyt w jego / jej wykres wkładu.

Jeśli chcesz, możesz rozszerzyć GitHub za pomocą interfejsu API GitHub GraphQL. Jest to znacząca poprawa w stosunku do poprzedniego interfejsu API GitHub, który był oparty na wywołaniach REST.

GitHub Enterprise

GitHub.com to usługa hostingowa w chmurze, która może obsługiwać szereg typów kont: bezpłatne (tylko publiczne repozytoria) i płatne (7 USD miesięcznie) konta programistów, zespoły (9 USD na użytkownika miesięcznie) i firmy (21 USD na użytkownika miesięcznie ). Jeśli chcesz uruchomić GitHub Enterprise lokalnie lub we własnej instancji w chmurze na AWS, Microsoft Azure, Google Cloud Platform lub IBM Cloud, możesz to zrobić za tę samą cenę 21 USD na użytkownika miesięcznie, co hostowane konto biznesowe. GitHub Enterprise dodaje kilka przydatnych funkcji, takich jak wysyłanie wiadomości w aplikacji do użytkowników i zapewnianie dostępu zintegrowane z katalogami LDAP, ale rezygnuje z gwarancji dostępności usług GitHub.com na poziomie 99,95% dla hostowanych kont firmowych.

GitHub kontra Bitbucket

GitHub nie jest jedyną hostowaną ulepszoną usługą Git, a GitHub Enterprise nie jest jedynym produktem lokalnym dla firm. Atlassian Bitbucket konkuruje z oboma z nieco niższymi cenami i bezpłatnym pięcioosobowym poziomem zespołu, który obejmuje nieograniczoną liczbę prywatnych repozytoriów i korzystanie z Bitbucket Pipelines do ciągłej integracji. GitHub jest bardziej popularną witryną dla projektów open source i ma znacznie większą pulę programistów open source. Ceny Bitbucket są korzystniejsze dla małych start-upów.

GitHub kontra GitLab

GitLab konkuruje zarówno z GitHub, jak i Bitbucket, zarówno hostowanymi, jak i lokalnymi. Na pozór wydaje się, że GitLab ma więcej funkcji cyklu życia niż inne, ale różnica w stosunku do Atlassian w większości znika, jeśli uwzględniasz Jira podczas oceny Bitbucket. GitLab oferuje bezpłatnie funkcje chmury w planie Gold do projektów open source, ale ta dodatkowa funkcjonalność nie rekompensuje tak naprawdę większej społeczności deweloperów open source na GitHub.

GitHub Desktop

Przedstawiony poniżej GitHub Desktop ułatwia zarządzanie repozytoriami GitHub.com i GitHub Enterprise. Chociaż nie implementuje wszystkich funkcji wiersza poleceń Git i internetowego interfejsu graficznego GitHub, implementuje wszystkie operacje, które będziesz wykonywać codziennie z poziomu komputera podczas współtworzenia projektów. Zazwyczaj będziesz klonować repozytoria z GitHub do GitHub Desktop, synchronizować je w razie potrzeby, tworzyć gałęzie dla swojej pracy, zatwierdzać swoją pracę i czasami przywracać jedno lub więcej zatwierdzeń.

Aby pracować z repozytoriami, dla których nie masz uprawnień do zatwierdzania i współpracy, zazwyczaj zaczynasz od rozwidlenia repozytorium w GitHub i sklonowania rozwidlenia na pulpit. Następnie dodajesz potrzebne gałęzie w GitHub Desktop, zatwierdzasz dowolne zmiany, testujesz swoją pracę, przesyłasz zatwierdzenia z powrotem do zdalnego rozproszonego repozytorium, a na koniec generujesz żądanie ściągnięcia do projektu nadrzędnego.

Możesz zobaczyć przycisk Pull Request w prawym górnym rogu interfejsu GitHub Desktop. Możesz również zobaczyć wiele zatwierdzeń w projekcie Neo4j, które były połączeniami gałęzi lub żądaniami ściągnięcia. Jest to typowe dla projektów open source, w których jest niewielu autorów i wielu współpracowników.

Edytor Atom

Możesz użyć dowolnego edytora programowania, który lubisz edytować kod, w tym darmowego, open source, edytora Atom z możliwością hakowania na GitHub (pokazany poniżej), który dobrze integruje się z GitHub i GitHub Desktop. Możesz używać Atom w systemie MacOS, Windows lub Linux. Możesz otworzyć Atom z GitHub Desktop, klikając prawym przyciskiem myszy repozytorium, które chcesz przeglądać lub edytować.

Atom jest dostarczany z około 90 pakietami, czterema motywami interfejsu użytkownika i ośmioma motywami składni. Do instalacji Atom możesz dodać dowolne z 7 000 pakietów i 2000 motywów. Pakiety mogą obsługiwać określone języki programowania, takie jak TypeScript, lub dodawać funkcje, takie jak Hydrogen, interaktywne środowisko kodowania obsługujące Python, R, JavaScript i inne jądra Jupyter.

Atom jest zbudowany z integracją HTML, JavaScript, CSS i Node.js. Działa na Electron, frameworku do tworzenia aplikacji wieloplatformowych przy użyciu technologii internetowych. GitHub Desktop działa również na Electron.

Projekty GitHub

Projekty oprogramowania open source często wymagają sposobów egzekwowania kontroli jakości przy jednoczesnym przyjmowaniu wkładów spoza głównego zespołu twórców. Potrzeba współautorów jest ogromna, ale wprowadzenie nowych współpracowników do projektu przy jednoczesnym zachowaniu integralności bazy kodu jest trudnym i potencjalnie niebezpiecznym przedsięwzięciem. Jednocześnie potrzeba informacji zwrotnej od użytkowników projektu jest również ogromna.

GitHub ma wiele mechanizmów, które mogą pomóc w smarowaniu kół projektów open source. Na przykład użytkownicy mogą dodawać problemy do projektu na GitHub, aby zgłaszać błędy lub żądać funkcji. Niektóre inne systemy nazywają te bilety . Menedżerowie projektów pracujący z problemami mogą generować listy zadań, przypisywać problemy do określonych współautorów, wymieniać innych zainteresowanych współpracowników, aby byli powiadamiani o zmianach, dodawać etykiety i dodawać punkty kontrolne.

Aby przyczynić się do projektu, to w zasadzie zacząć od tematu szef oddziału, który zawiera zaangażowanych zmian, które mają być dodane do projektu podstawy gałęzi i zainicjować żądania ściągania z branży głowy, jak pokazano poniżej. Następnie wypychasz swoje zatwierdzenia i dodajesz je do gałęzi projektu. Inni współautorzy mogą przeglądać proponowane zmiany, dodawać komentarze do recenzji, uczestniczyć w dyskusji dotyczącej żądania ściągnięcia i dodawać własne zatwierdzenia do żądania ściągnięcia.

Gdy wszyscy zaangażowani będą zadowoleni z proponowanych zmian, osoba zatwierdzająca może scalić żądanie ściągnięcia. Scalanie może zachować wszystkie zatwierdzenia, zmiażdżyć wszystkie zmiany w jednym zatwierdzeniu lub przenieść zmiany z gałęzi head do gałęzi podstawowej. Jeśli scalanie generuje konflikty, możesz je rozwiązać w serwisie GitHub lub za pomocą wiersza poleceń.

Przeglądy kodu w serwisie GitHub umożliwiają zespołowi rozproszonemu współpracę asynchroniczną. Przydatne narzędzia GitHub dla recenzentów obejmują różnice (dolna połowa zrzutu ekranu poniżej), historia (górna połowa) i widok adnotacji (sposób na przeglądanie ewolucji pliku zatwierdzonego przez zatwierdzenie). Dyskusje na temat kodu w serwisie GitHub przechodzą do komentarzy, które są prezentowane wraz ze zmianami kodu. Jeśli wbudowane narzędzia nie są wystarczające dla Twojego projektu, możesz dodać narzędzia do przeglądu kodu i ciągłej integracji z GitHub Marketplace. Dodatki z Marketplace są często bezpłatne dla projektów typu open source.

GitHub gists

Gists to specjalne repozytoria GitHub do udostępniania Twojej pracy (publiczne) lub do zapisywania pracy do późniejszego ponownego wykorzystania (tajne). Mogą zawierać pojedyncze pliki, części plików lub pełne aplikacje. Możesz pobierać streszczenia, klonować je, rozwidlać i osadzać.

Istoty publiczne można znaleźć i znaleźć podczas wyszukiwania. Możesz użyć słów kluczowych, aby zawęzić to, co znajdujesz, w tym prefiksy, aby ograniczyć wyniki do streszczeń od określonych użytkowników, streszczeń z co najmniej N gwiazdkami, streszczeń z określonymi nazwami plików i tak dalej.

Tajnych treści nie można przeszukiwać, ale każdy, kto ma adres URL, może je zobaczyć. Jeśli naprawdę chcesz, aby Twój kod był chroniony, użyj prywatnego repozytorium.

Jak widzieliśmy, GitHub udostępnia repozytoria Git jako usługę, wraz z funkcjami do przeglądu kodu, zarządzania projektami, integracji z innymi narzędziami programistycznymi, zarządzania zespołem, kodowania społecznościowego i dokumentacji. Chociaż GitHub nie jest jedynym produktem w swojej kategorii, jest dominującym repozytorium rozwoju oprogramowania open source.