Vad är GitHub? Mer än Git-versionskontroll i molnet

GitHub är i grunden en värdtjänst för Git-arkiv, det vill säga ett molnbaserat källkodshantering eller versionskontrollsystem, men det är bara början. Dessutom implementerar GitHub funktioner för kodgranskning (pull-förfrågningar, skillnader och granskningsförfrågningar), projektledning (inklusive problemspårning och tilldelning), integrationer med andra utvecklarverktyg, teamhantering, dokumentation och "social kodning."

Något som en social nätverkssajt för programmerare, GitHub är en öppen miljö där programmerare fritt kan dela och samarbeta (till och med ad hoc) om öppen källkod. GitHub gör det enkelt att hitta användbar kod, kopiera förvar för eget bruk och skicka ändringar till andras projekt. Som ett resultat har GitHub blivit hem för nästan alla open source-projekt av någon betydelse.

När jag vill utforska ett öppen källkodsprojekt börjar jag med att söka efter projektnamnet. När jag väl hittat projektwebbplatsen letar jag efter dess länk till kodförvar och nio gånger av 10 hamnar jag på GitHub.

Git-versionskontroll

Innan vi förstår vad GitHub gör och hur GitHub fungerar måste vi förstå Git. Git är ett distribuerat versionskontrollsystem, ursprungligen skrivet av Linus Torvalds 2005 för och med hjälp från Linux-kärngemenskapen. Jag är inte här för att sälja dig på Git, så jag kommer att spara dig spelet om hur snabbt och litet och flexibelt och populärt det är, men du borde veta att när du klonar ett Git-arkiv ("repo", förkortat) du får hela versionshistoriken på din egen dator, inte bara en ögonblicksbild från en gren åt gången.

Git började som ett kommandoradsverktyg som passar sitt ursprung i Linux-kärngemenskapen. Du kan fortfarande använda kommandoraden Git, om du vill, men du behöver inte. Istället för eller utöver kommandoraden kan du använda den kostnadsfria GitHub-klienten på Windows eller Mac eller någon av ett antal andra GUI för Git, eller en kodredigerare som integreras med Git. Alla dessa alternativ är initialt enklare att använda än kommandoraden. Git-kommandoraden är förinstallerad på de flesta Mac- och Linux-system och stöder alla funktioner; GUI: erna stöder vanligtvis en ofta använd delmängd av Git-operationer.

Git skiljer sig från äldre versionskontrollsystem som Subversion genom att det distribueras snarare än centraliserat. Det är också ganska snabbt, särskilt eftersom de flesta operationer sker på ditt lokala förråd. Ändå lägger användningen av Git till en nivå av komplexitet: att begå kod i ditt lokala förvar och att trycka på dina åtaganden till ett fjärrförvar är separata steg. När team glömmer detta (eller inte lärde sig om det) kan det leda till situationer där olika utvecklare arbetar med kodbaser som har avvikit.

Ett fjärranslutet Git-arkiv kan finnas på en server eller på en annan utvecklarens maskin. Det möjliggör många möjliga arbetsflöden för team. Ett vanligt arbetsflöde handlar om att använda en serverförvaring som det "välsignade" förvaret, som endast granskad, väl testad kod är förpliktad till, ofta genom en pull-begäran från en utvecklares förvar.

GitHub-funktionalitet

Jag har redan noterat att GitHub är en molnbaserad Git-server för kodhantering och social kodning, och att den implementerar funktioner för kodgranskning (pull-förfrågningar, skillnader och granskningsförfrågningar), projektledning (inklusive problemspårning och tilldelning) integrationer med andra utvecklarverktyg, teamhantering och dokumentation.

Den senaste innovationen inom social kodning från GitHub är engagera medförfattare , vilket du åstadkommer genom att lägga till en eller flera trailers med "co-authored-by" i slutet av ett meddelande. Denna mekanism påverkar inte repo kärnan i sig, och inte ändra hur repo ser på vanligt Git, men på GitHub i Chrome kommer att visa flera committers i begå listan och ge varje medförfattare kredit i hans eller hennes bidrag diagram.

Om du vill kan du förlänga GitHub med GitHub GraphQL API. Detta är en betydande förbättring jämfört med GitHubs tidigare API, som baserades på REST-samtal.

GitHub Enterprise

GitHub.com är en molntjänst som kan hantera en rad kontotyper: gratis (endast offentliga repor) och betalda (7 $ per månad) utvecklarkonton, team (9 $ per användare och månad) och företag (21 $ per användare och månad ). Om du vill köra GitHub Enterprise lokalt eller i din egen molninstans på AWS, Microsoft Azure, Google Cloud Platform eller IBM Cloud kan du göra det för samma $ 21 per användare och månadspris som ett värdkonto. GitHub Enterprise lägger till några användbara funktioner, såsom meddelanden i appar till användare och åtkomsttillförsel integrerade med LDAP-kataloger, men ger upp GitHub.com: s 99,95 procents SLA för driftstid för värdekonton.

GitHub vs. Bitbucket

GitHub är inte den enda värdförbättrade Git-tjänsten och GitHub Enterprise är inte den enda lokala produkten för företag. Atlassian Bitbucket konkurrerar med dem båda, med något lägre prissättning och med en gratis teamnivå på fem medlemmar som inkluderar obegränsade privata repor och användningen av Bitbucket Pipelines för kontinuerlig integration. GitHub är en mer populär webbplats för open source-projekt och den har en mycket större pool av open source-utvecklare. Bitbucket prissättning är mer gynnsam för små startups.

GitHub vs. GitLab

GitLab tävlar med både GitHub och Bitbucket, både värd och lokalt. På ytan verkar GitLab ha mer livscykelfunktionalitet än de andra, men skillnaden från Atlassian försvinner mest om du inkluderar Jira när du utvärderar Bitbucket. GitLab erbjuder Gold-plan molnfunktioner för öppen källkodsprojekt gratis, men den extra funktionaliteten kompenserar inte riktigt det större utvecklarsamhället med öppen källkod på GitHub.

GitHub Desktop

GitHub Desktop, som visas nedan, gör det enkelt att hantera dina GitHub.com- och GitHub Enterprise-förvar. Även om det inte implementerar alla funktioner i Git-kommandoraden och GitHub-webbgränssnittet, implementerar det alla de åtgärder du kommer att göra dagligen från skrivbordet medan du bidrar till projekt. Vanligtvis kommer du att klona repor från GitHub till GitHub Desktop, synkronisera dem efter behov, skapa filialer för ditt arbete, begå ditt arbete och ibland återställa en eller flera åtaganden.

För att arbeta med repor för vilka du saknar behörighets- och samarbetsbehörigheter börjar du vanligtvis med att gaffla repo på GitHub och klona gaffeln till skrivbordet. Sedan lägger du till alla filialer du behöver i GitHub Desktop, gör eventuella ändringar du vill, testar ditt arbete, drar tillbaka åtagandena till din fjärrgafflade repo och slutligen genererar en pull-begäran till det överordnade projektet.

Du kan se Pull Request-knappen längst upp till höger i GitHub Desktop-gränssnittet. Du kan också se många åtaganden i Neo4j-projektet som var sammanslagningar av filialer eller dragförfrågningar. Det är typiskt för open source-projekt med få åtaganden och många bidragsgivare.

Atom redaktör

Du kan använda vilken programmeringsredigerare du helst vill redigera kod, inklusive GitHubs gratis, källkods-hackbara Atom-redigerare (visas nedan), som integreras bra med GitHub och GitHub Desktop. Du kan använda Atom på MacOS, Windows eller Linux. Du kan öppna Atom från GitHub Desktop genom att högerklicka på förvaret du vill bläddra i eller redigera.

Atom levereras med cirka 90 paket, fyra UI-teman och åtta syntaxteman. Du kan lägga till 7 000 paket och 2 000 teman i din installation av Atom. Paket kan stödja specifika programmeringsspråk, till exempel TypeScript, eller lägga till funktionalitet, såsom Hydrogen, en interaktiv kodningsmiljö som stöder Python, R, JavaScript och andra Jupyter-kärnor.

Atom är byggt med HTML, JavaScript, CSS och Node.js-integration. Den körs på Electron, ett ramverk för att bygga plattformsappar med webbteknik. GitHub Desktop körs också på Electron.

GitHub-projekt

Projekt med öppen källkodsprogram behöver ofta sätt att genomdriva kvalitetskontroll samtidigt som de accepterar bidrag från det centrala teamet av åtaganden. Behovet av bidragsgivare är enormt, men det är ett svårt och potentiellt farligt åtagande att ta med nya bidragsgivare till projektet samtidigt som kodbasen är integrerad. Samtidigt är behovet av feedback från användare av projektet också stort.

GitHub har ett antal mekanismer som kan hjälpa till att smörja hjulen i öppen källkodsprojekt. Till exempel kan användare lägga till problem i GitHub för att rapportera fel eller begära funktioner. Vissa andra system kallar dessa biljetter . Projektledare som arbetar med problem kan generera uppgiftslistor, tilldela problem till specifika bidragsgivare, nämna andra intresserade bidragsgivare så att de får information om ändringar, lägga till etiketter och lägga till milstolpar.

För att bidra till ett projekt, du i princip utgå från ett ämne huvudgren som innehåller engagerade förändringar som du vill lägga till projektet grund gren och initiera en pull begäran från huvudet gren, som visas nedan. Sedan trycker du på dina åtaganden och lägger till dem i projektgrenen. Andra bidragsgivare kan granska dina föreslagna ändringar, lägga till recensionskommentarer, bidra till diskussionen om pull-begäran och lägga till sina egna åtaganden i pull-begäran.

När alla inblandade är nöjda med de föreslagna ändringarna kan en kommittör slå samman begäran om att dra. Sammanfogningen kan bevara alla åtaganden, squasha alla ändringar i en enda förpliktelse eller basera om åtagandena från huvudgrenen till basgrenen. Om sammanslagningen genererar konflikter kan du lösa dem på GitHub eller med kommandoraden.

Kodrecensioner på GitHub tillåter ett distribuerat team att samarbeta asynkront. Användbara GitHub-verktyg för granskare inkluderar diffs (den nedre halvan av skärmdumpen nedan), historik (den övre halvan) och skuldvyn (ett sätt att se utvecklingen av en filåtagning genom commit). Koddiskussioner på GitHub går in på kommentarer som presenteras i linje med dina kodändringar. Om de inbyggda verktygen inte räcker för ditt projekt kan du lägga till kodgransknings- och kontinuerliga integrationsverktyg från GitHub-marknaden. Marketplace-tillägg är ofta gratis för projekt med öppen källkod.

GitHub gists

Gists är speciella GitHub-förråd för att dela ditt arbete (offentligt) eller för att spara arbete för senare återanvändning (hemligt). De kan innehålla enstaka filer, delar av filer eller fullständiga applikationer. Du kan ladda ner gists, klona dem, gaffla dem och bädda in dem.

Offentliga listor kan upptäckas och hittas i sökningar. Du kan använda nyckelord för att begränsa vad du hittar, inklusive prefix för att begränsa resultaten till listor från specifika användare, listor med minst N- stjärnor, listor med specifika filnamn och så vidare.

Hemliga gists är inte sökbara, men alla med URL kan se dem. Om du verkligen vill att din kod ska skyddas, använd ett privat arkiv.

Som vi har sett tillhandahåller GitHub Git-arkiv som en tjänst, tillsammans med funktioner för kodgranskning, projektledning, integrationer med andra utvecklarverktyg, teamhantering, social kodning och dokumentation. Medan GitHub inte är den enda produkten i sin kategori, är det det dominerande förvaret för öppen källkodsutveckling.