Chapters ▾ 2nd Edition

A1.1 Bilaga A: Git i andra miljöer - Grafiska gränssnitt

Om du har läst hela boken har du lärt dig mycket om hur du använder Git på kommandoraden. Du kan arbeta med lokala filer, koppla ditt kodförråd till andra över ett nätverk och arbeta effektivt med andra. Men historien slutar inte där; Git används oftast som en del av ett större ekosystem, och terminalen är inte alltid det bästa sättet att arbeta med det. Nu tittar vi på några andra typer av miljöer där Git kan vara användbart, och hur andra applikationer (inklusive dina egna) arbetar sida vid sida med Git.

Grafiska gränssnitt

Gits hemmiljö är terminalen. Nya funktioner dyker upp där först, och bara på kommandoraden har du full tillgång till Gits kraft. Men ren text är inte det bästa valet för alla uppgifter; ibland behöver du en visuell representation, och vissa användare är mycket mer bekväma med ett peka‑och‑klicka‑gränssnitt.

Det är viktigt att notera att olika gränssnitt är anpassade för olika arbetsflöden. Vissa klienter exponerar bara en noggrant utvald delmängd av Gits funktionalitet för att stödja ett specifikt sätt att arbeta som författaren tycker är effektivt. Sett i det ljuset kan inget av dessa verktyg kallas “bättre” än något av de andra, de är helt enkelt mer lämpade för sitt avsedda syfte. Notera också att det inte finns något dessa grafiska klienter kan göra som kommandoradsklienten inte kan; kommandoraden är fortfarande där du har mest kraft och kontroll när du arbetar med dina kodförråd.

gitk och git-gui

När du installerar Git får du också dess visuella verktyg, gitk och git-gui.

gitk är en grafisk historikvisare. Tänk på det som ett kraftfullt GUI‑skal ovanpå git log och git grep. Det här är verktyget att använda när du försöker hitta något som hände i det förflutna eller visualisera projektets historik.

Enklast är att starta gitk från kommandoraden. Gå bara cd in i ett Git‑kodförråd och skriv:

$ gitk [git log options]

gitk accepterar många kommandoradsalternativ, varav de flesta skickas vidare till den underliggande git log‑åtgärden. Ett av de mest användbara är flaggan --all, som säger åt gitk att visa incheckningar som kan nås från alla refs, inte bara HEAD. Gitks gränssnitt ser ut så här:

Gitks historikvisare
Figur 175. Gitks historikvisare

Längst upp är något som ser lite ut som utdata från git log --graph; varje punkt representerar en incheckning, linjerna representerar föräldrarelationer och refs visas som färgade rutor. Den gula punkten representerar HEAD, och den röda punkten representerar ändringar som ännu inte blivit en incheckning. Längst ned finns en vy av den valda incheckningen; kommentarerna och ändringspatchen till vänster och en sammanfattningsvy till höger. Mellan dessa finns en samling kontroller som används för att söka i historiken.

git-gui är däremot främst ett verktyg för att skapa incheckningar. Även det är lättast att starta från kommandoraden:

$ git gui

Och det ser ut ungefär så här:

`git-gui`‑verktyget för incheckningar
Figur 176. git-gui‑verktyget för incheckningar

Till vänster finns indexet; oköade ändringar är högst upp, köade ändringar längst ned. Du kan flytta hela filer mellan de två tillstånden genom att klicka på deras ikoner, eller välja en fil för visning genom att klicka på dess namn.

Uppe till höger finns diff‑vyn, som visar ändringarna för den för närvarande valda filen. Du kan lägga till enskilda stycken (eller enskilda rader) till köytan genom att högerklicka i detta område.

Längst ned till höger finns området för meddelanden och åtgärder. Skriv ditt meddelande i textrutan och klicka på “Commit” för att göra något som liknar git commit. Du kan också välja att ändra den senaste incheckningen genom att välja alternativknappen “Amend”, vilket uppdaterar området “Staged Changes” med innehållet i den senaste incheckningen. Sedan kan du helt enkelt köa eller avköa ändringar, ändra incheckningsmeddelandet och klicka på “Commit” igen för att ersätta den gamla incheckningen med en ny.

gitk och git-gui är exempel på uppgiftsorienterade verktyg. Var och en av dem är anpassad för ett specifikt syfte (att visa historik respektive skapa incheckningar) och utelämnar de funktioner som inte behövs för uppgiften.

GitHub för macOS och Windows

GitHub har skapat två arbetsflödesorienterade Git‑klienter: en för Windows och en för macOS. Dessa klienter är ett bra exempel på arbetsflödesorienterade verktyg – i stället för att exponera all Gits funktionalitet fokuserar de på en noggrant utvald uppsättning vanligt förekommande funktioner som fungerar bra tillsammans. De ser ut så här:

GitHub för macOS
Figur 177. GitHub för macOS
GitHub för Windows
Figur 178. GitHub för Windows

De är utformade för att se ut och fungera mycket lika, så vi behandlar dem som en enda produkt i det här kapitlet. Vi kommer inte att göra en detaljerad genomgång av dessa verktyg (de har sin egen dokumentation), men en snabb rundtur i vyn “changes” (där du tillbringar mest tid) är på sin plats.

  • Till vänster finns listan över kodförråd som klienten spårar; du kan lägga till ett kodförråd (antingen genom att klona eller genom att lägga till lokalt) genom att klicka på ikonen “+” längst upp i detta område.

  • I mitten finns ett incheckningsinmatningsområde som låter dig mata in ett incheckningsmeddelande och välja vilka filer som ska inkluderas. På Windows visas incheckningshistoriken direkt under detta; på macOS finns den på en separat flik.

  • Till höger finns en diffvy som visar vad som har ändrats i din arbetskatalog, eller vilka ändringar som ingick i den valda incheckningen.

  • Den sista saken att notera är knappen “Sync” uppe till höger, som är det primära sättet du interagerar över nätverket.

Notera

Du behöver inget GitHub‑konto för att använda dessa verktyg. Även om de är utformade för att lyfta fram GitHubs tjänst och rekommenderade arbetsflöde kommer de glatt att fungera med vilket kodförråd som helst och utföra nätverksoperationer mot vilken Git‑värd som helst.

Installation

GitHub för Windows och macOS kan laddas ner från https://desktop.github.com/. När applikationerna körs första gången leder de dig genom hela Git‑förstagångsinställningen, som att konfigurera ditt namn och din e‑postadress, och båda sätter rimliga standardvärden för många vanliga konfigurationsalternativ, som autentiseringsmellanlagring och CRLF‑beteende.

Båda är “städse uppdaterade” – uppdateringar laddas ner och installeras i bakgrunden medan applikationerna är öppna. Detta inkluderar också en medföljande version av Git, vilket betyder att du förmodligen inte behöver oroa dig för att manuellt uppdatera den igen. I Windows innehåller klienten en genväg för att starta PowerShell med Posh-git, som vi pratar mer om senare i det här kapitlet.

Nästa steg är att ge verktyget några kodförråd att arbeta med. Klienten visar en lista över de kodförråd du har åtkomst till på GitHub och kan klona dem i ett steg. Om du redan har ett lokalt kodförråd kan du bara dra dess katalog från Finder eller Utforskaren till GitHub‑klientens fönster, så inkluderas det i listan över kodförråd till vänster.

Rekommenderat arbetsflöde

När det är installerat och konfigurerat kan du använda GitHub‑klienten för många vanliga Git‑uppgifter. Det avsedda arbetsflödet för detta verktyg kallas ibland “GitHub Flow”. Vi går igenom detta mer i detalj i GitHub-flödet, men den allmänna kärnan är att (a) du checkar in på en gren och (b) att du synkroniserar med ett fjärrkodförråd ganska regelbundet.

Grenhantering är ett av områdena där de två verktygen skiljer sig åt. På macOS finns det en knapp högst upp i fönstret för att skapa en ny gren:

“Create Gren”‑knappen på macOS
Figur 179. “Create Branch”‑knappen på macOS

I Windows görs detta genom att skriva in den nya grenens namn i grenväxlingswidgeten:

Skapa en gren i Windows
Figur 180. Skapa en gren i Windows

När grenen är skapad är det ganska enkelt att göra nya incheckningar. Gör några ändringar i din arbetskatalog, och när du växlar till GitHub‑klientens fönster visar den vilka filer som ändrats. Ange ett incheckningsmeddelande, välj vilka filer du vill inkludera och klicka på knappen “Commit” (ctrl-enter eller ⌘-enter).

Det huvudsakliga sättet du interagerar med andra kodförråd över nätverket är via funktionen “Sync”. Git har internt separata operationer för att skicka, hämta, sammanfoga och ombasera, men GitHub‑klienterna slår ihop alla dessa till en flerstegs‑funktion. Här är vad som händer när du klickar på Sync‑knappen:

  1. git pull --rebase. Om detta misslyckas på grund av en sammanslagningskonflikt, fall tillbaka till git pull --no-rebase.

  2. git push.

Det här är den vanligaste sekvensen av nätverkskommandon när man arbetar på detta sätt, så att sammanfoga dem i ett kommando sparar mycket tid.

Sammanfattning

Dessa verktyg är mycket väl lämpade för det arbetsflöde de är utformade för. Utvecklare och icke‑utvecklare kan samarbeta i ett projekt inom några minuter, och många av de bästa metoderna för den här typen av arbetsflöde är inbyggda i verktygen. Men om ditt arbetsflöde är annorlunda, eller om du vill ha mer kontroll över hur och när nätverksoperationer görs, rekommenderar vi att du använder en annan klient eller kommandoraden.

Andra GUI:er

Det finns ett antal andra grafiska Git‑klienter, och de spänner från specialiserade verktyg för enstaka uppgifter ända till appar som försöker exponera allt Git kan göra. Den officiella Git‑webbplatsen har en utvald lista över de mest populära klienterna på https://git-scm.com/downloads/guis. En mer omfattande lista finns på Git‑wiki‑sidan, på https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools.html#Graphical_Interfaces.