Göm menyn

TDP001 Handhavande av datormiljö

Terminalkommandon v35


Nu är vi redan klara med andra veckan och därmed är det dags för ett nytt mail om terminalen och vad ni kan göra i den.
I detta mail får ni den första examinerande uppgiften i momentet UPG1. Ni kan se uppgiften här eller under Examination på kurshemsidan. Ni kan alltid se aktuella deadlines under Schema.

Vi inleder med lite grundläggande tips som gör det lättare att arbeta i terminalen.

TangentAnvänding
TabFyll i automatiskt. Om du börjat skriva något och det endast finns en fil som passar kan terminalen automatiskt fylla i resten av ordet. Trycker du tab två gånger får du en lista över alternativ.
Pil upp/ner bläddra mellan tidigare utförda kommandon

Git

Dagens mail kommer handla om versionhantering. Att kunna göra säkerhetskopior av dina filer och kunna backa bakåt i historiken. Observera för att slutföra veckans examinerande uppgift krävs det att ni inhämtar information utöver den korta introduktion som presenteras nedan.

Git är ett mycket kraftfullt verktyg som låter oss spara säkerhetskopior, versionshantera och kollaborera i projekt. Ni kommer i detta mail lära er grunderna i hur man kan använda git. Det kommer vara ett verktyg ni måste använda i vissa framtida kurser och bör använda i alla andra. Git är också ett vanligt verktyg i industrin och förtrogenhet med Git är en viktig förmåga för dagens programmerare.

Git fungerar så att det finns ett repository på en server som innehåller ett projekt. Ni kan tänka på det här projektet som en katalog. Detta repository kan sedan länkas till en lokal katalog på din dator. På LiU använder vi systemet Gitlab. Ni har alla ett konto på gitlab och kan logga in med ert LiU-konto där. Väl inne kan ni skapa nya repositories som även kallas för projekt.

ssh-nyckel

Om man i gitlab går in under user settings (uppe i högre hörnet) så kan man ställa in många olika saker. En viktig sak att ställa in för att kunna använda git är ssh-nyckeln. Det gör man under fliken SSH Keys. Här kan vi klistra in den PUBLIKA delen av ssh-nyckeln som ligger på vår dator. Om man vill veta mer om ssh och ssh-nycklar kan man läsa mer ingående om detta här. Men först behöver vi kontrollera om vi har en nyckel eller om vi ska göra en ny. I Linux sparas ssh-nycklar i filen ~/.ssh/id_rsa.pub

. Den ligger alltså i er hemkatalog i den dolda mappen .ssh. Med hjälp av informationen i det föregående mailet kan du komma fram till hur du kan se alla dolda filer och mappar i din hemkatalog. Om filen finns och det ligger en nyckel i den kan man kopiera den och lägga till den på gitlab. Annars måste vi skapa en ny nyckel. Det kan vi göra med programmet ssh-keygen på följande sätt:

ssh-keygen -t rsa -C "GitLab" -b 4096

Om du vill skriva in ett lösenord varje gång du använder din nyckel kan du skriva in ett annars kan du lämna det tomt. Du bör också spara din ssh-nyckel på sökvägen de föreslår.

"Clone"

När du lagt till en ssh-nyckel på gitlab är du redo att hämta hem det skapade projektet till din dator. När du navigerar till projektet bör du se en ruta med en text på formatet:

git@gitlab.ida.liu.se:[LiU-id]/[namnet på projektet].git

Ställ dig i din hemkatalog och skriv:

git clone git@gitlab.ida.liu.se:[LiU-id]/[namnet på projektet].git

Om allting gått rätt till så har nu en katalog som motsvarar namnet på projektet skapats i din hemkatalog. All information som git behöver för att hantera versioner med mera spara i denna nya katalog inuti en dold katalog som heter .git. Utöver denna dolda katalog bör katalogen vara tom. Skapa en fil som heter README.md(En readme bör finnas i varje projekt) i vilken du beskriver viktig information om just detta projekt. I detta fall räcker en kort text som förklarar att du skapat och använder detta projekt för att lära dig använda git. När du sparat denna fil kan du lägga märke till att denna fil inte syns på gitlab ännu!

"Commit"

Som vi ovan la märke till så syns ännu inte vår nya README.md på gitlab. Det är för att vi inte sparat våra ändringar ännu och skickat upp dem till gitlab. För att git ska bry sig om nya filer behöver vi se till att dessa spåras av git. Om du skriver git status så kan du se att README.md är röd och ligger under Untracked files. Status är ett kommando du kommer använda ofta när du arbetar med git för att se vad du behöver göra. För att börja spåra vår nya fil skriver du git add README.md. Om du sedan kontrollerar du statusen för projektet igen. Du kan nu se att README.md är grön, står som new file och ligger under changes to be committed.

Vi ska nu göra en "commit", detta är ett ögonblick i tiden (hur projektet såg ut i detta ögonblick) som git kommer hålla koll på åt dig. Det kommer vara möjligt att gå tillbaka till hur alla filer såg ut i detta ögonblick i framtiden. För att git ska komma ihåg hur saker ser ut nu (för de filer som spåras, se status) skriver vi kommandot commit:

git commit -am "[Meddelande som beskriver vilka ändringar som hänt sedan senaste commit]"

Här händer det en hel del men delen -am gör att alla ändrade filer (som någon gång spårats) kommer med i denna commit och att vi redan här kan skriva in ett meddelande inom " efter kommandot. Lämpligt meddelande i detta fall kan vara:

git commit -am "Add readme"

Om vi nu tittar på gitlab kan vi se att README.md fortfarande inte finns där!

"Push"

När vi sparat ett ögonblick i tiden med hjälp av commit bör statusen visa att vi inte har någonting att spara och att "working directory is clean". Nu behöver vi knuffa upp detta ögonblick till gitlab. Lägg alltså märke till att commit bara sparar dessa ögonblick lokalt på datorn, för att spara de online krävs ett extra steg. Vi kan åstadkomma detta med följande kommando:

git push

Om allt gått rätt till kan vi nu se vår nya fil på gitlab! Ett git-projekt kan vara kopplat till flera kataloger på flera datorer och det är inte säkert att katalogen du arbetar i har senaste versionen av alla filer. Därför är det viktigt att hämta hem de senaste ändringarna från git med hjälp av pull innan man börjar arbeta i katalogen. Om du till exempel hade kataloger kopplade till detta projekt både på din hårddisk och din hemdator så slår inte de ögonblick(commits) du knuffat upp automatiskt igenom i alla kopplade kataloger. Så om du arbetat hemma under helgen/kvällen och knuffat upp ändringar och sedan kommer till universitetet måste du hämta dessa genom att skriva:

git pull

Kommandon

Kommando:Anteckning:
cloneSkapar en katalog med samma namn som projektet, länkar git till denna katalog.
statusVisa nuvarande status. Se om filer är spårade av git etc.
addLägg till en fil till nästa commit.
commitSpara ett ögonblick som du senare kan knuffa upp
pushKnuffa upp alla lokala sparade ögonblick så de syns på gitlab
pullHämta hem alla nya ögonblick från gitlab
initLänka ett gitlab-projekt till en existerande mapp. Läs på mer om hur detta fungerar.

Veckans uppgift:

Du ska skapa ett nytt gitlabprojekt, använd ett lämpligt namn som du kan komma fram till efter du läst hela denna instruktion. Du ska sedan gå till katalogen i vilken din blogg publicerats. Använd kommandot init för att länka git projektet till denna katalog. Se sedan till att spåra alla relevanta filer i katalogen (.html, .css, etc) och se till att dessa syns på gitlab. Skriv sedan i detalj ner processen du gick igenom för att komma fram till detta resultat på din blogg. Lägg sedan till mig (Pontus Haglund ponha45) som medlem i gitlab-projektet med rättigheter som en reporter. Skriv även med länken till gitlab-projektet.

Lösningsexempel:

Det efterfrågades ett exempel på hur lösningar skulle läggas upp på bloggen. Nedan följer ett exempel på hur en lösning skulle kunna se ut för en väldigt enkel uppgift. Instruktionen nedan löser följande uppgift: Gå från hemkatalogen till katalogen Documents och skriv ut alla filer (inklusive dolda) i den katalogen.

Lösning uppgift1: 2018-08-31

Jag använde terminalen och skrev följande kommando:

cd ~/Documents

Vilket flyttade mig till katalogen Documents. Sedan skrev jag följande kommando:

ls -la

ls listar alla filer och kataloger i katalogen. Men sedan behövde jag också flaggorna l och a. a visar även dolda filer och l gör att utskriften ger lite mer information och blev lättare att läsa


Sidansvarig: Pontus Haglund
Senast uppdaterad: 2019-05-29