
Nödvändiga ingångar:
- Läs, följ med och förstå min artikel om Git . Detta kommer att hjälpa till att säkerställa att allt är inställt och redo att gå.
- Installera IntelliJ IDEA.
- Tilldela en timmes personlig tid för att uppnå fullständig behärskning.
Klona projektet lokalt
Det finns två alternativ här:- Om du redan har ett GitHub-konto och vill pusha något senare, är det bättre att dela projektet och klona din egen kopia.
- Klona mitt förråd och gör allt lokalt utan möjlighet att skicka det hela till servern. Detta är trots allt mitt förråd :)
-
Kopiera projektets adress:
-
Öppna IntelliJ IDEA och välj "Hämta från versionskontroll":
-
Kopiera och klistra in projektadressen:
-
Du kommer att bli ombedd att skapa ett IntelliJ IDEA-projekt. Acceptera erbjudandet:
-
Eftersom det inte finns något byggsystem och det ligger utanför ramen för denna artikel, väljer vi Skapa projekt från befintliga källor :
-
Därefter kommer du att se den här vackra skärmen:
Nu när vi kom på kloning kan du ta en titt.
Första anblicken på IntelliJ IDEA som ett Git-gränssnitt
Ta en närmare titt på det klonade projektet: du kan redan få mycket information om versionskontrollsystemet. Först har vi versionskontrollfönstret i det nedre vänstra hörnet. Här kan du hitta alla lokala ändringar och få en lista över commits (analogt med "git log"). Låt oss gå vidare till en diskussion om Log . Det finns en viss visualisering som hjälper oss att förstå exakt hur utvecklingen har gått till. Till exempel kan du se att en ny gren skapades med en tillagd rubrik till txt commit, som sedan slogs samman till huvudgrenen. Om du klickar på en commit kan du se i det högra hörnet all information om commit: alla dess ändringar och metadata.



Arbeta med ett förråd
Användbara snabbtangenter
För framtida arbete måste du komma ihåg några mycket användbara snabbtangenter:- CTRL+T — Hämta de senaste ändringarna från fjärrförvaret (git pull).
- CTRL+K — Skapa en commit/se alla aktuella ändringar. Detta inkluderar både ospårade och modifierade filer (se min artikel om git, som förklarar detta) (git commit).
- CTRL+SHIFT+K — Det här är kommandot för att skicka ändringar till fjärrförvaret. Alla commits som skapats lokalt och ännu inte finns i fjärrlagret kommer att pushas (git push).
- ALT+CTRL+Z — Återställ ändringar i en specifik fil till tillståndet för den senaste commit som skapades i det lokala arkivet. Om du väljer hela projektet i det övre vänstra hörnet kan du återställa ändringar i alla filer.

Vad vill vi ha?
För att få jobbet gjort behöver vi bemästra ett grundscenario som används överallt. Målet är att implementera ny funktionalitet i en separat gren och sedan skjuta den till ett fjärrlager (då måste du också skapa en pull-begäran till huvudgrenen, men det ligger utanför den här artikelns räckvidd). Vad krävs för att göra detta?-
Få alla aktuella ändringar i huvudgrenen (till exempel "master").
-
Från denna huvudgren skapar du en separat gren för ditt arbete.
-
Implementera den nya funktionen.
-
Gå till huvudgrenen och kontrollera om det har skett några nya ändringar medan vi arbetade. Om inte, så är allt bra. Men om det fanns förändringar gör vi följande: gå till arbetsgrenen och basera om ändringarna från huvudgrenen till vår. Om allt går bra, så bra. Men det är fullt möjligt att det blir konflikter. Som det händer kan de bara lösas i förväg, utan att slösa tid i fjärrförvaret.
Undrar du varför du ska göra detta? Det är gott uppförande och förhindrar att konflikter uppstår efter att du har skjutit din filial till det lokala förvaret (det finns naturligtvis en möjlighet att konflikter fortfarande kommer att uppstå, men den blir mycket mindre).
- Skicka dina ändringar till fjärrförvaret.
Få ändringar från fjärrservern?
Jag lade till en beskrivning till README med en ny commit och vill få dessa ändringar. Om ändringar gjordes både i det lokala arkivet och i det avlägsna, så uppmanas vi att välja mellan en sammanslagning och en rebas. Vi väljer att slå samman. Ange CTRL+T :

Skapa en ny gren baserad på master
Allt är enkelt här.-
Gå till det nedre högra hörnet och klicka på Git: master . Välj + Ny gren .
Lämna kryssrutan Checkout filial markerad och ange namnet på den nya filialen. För mig kommer det att vara readme-förbättrare .

Git: master kommer då att ändras till Git: readme-improver .
Låt oss simulera parallellt arbete
För att konflikter ska dyka upp måste någon skapa dem :D Jag kommer att redigera README med en ny commit genom webbläsaren, vilket simulerar parallellt arbete. Det är som om någon gjorde ändringar i samma fil medan jag arbetade med den. Resultatet blir en konflikt. Jag kommer att ta bort ordet "fully" från rad 10.Implementera vår funktionalitet
Vår uppgift är att ändra README och lägga till en beskrivning till den nya artikeln. Det vill säga arbetet i Git går genom IntelliJ IDEA. Lägg till detta:


Kontrollera om huvudgrenen har ändrats
Vi slutförde vår uppgift. Det fungerar. Vi skrev prov. Allt är bra. Men innan vi trycker till servern måste vi fortfarande kontrollera om det skett några ändringar i huvudgrenen under tiden. Hur kunde det hända? Ganska enkelt: någon får en uppgift efter dig, och att någon avslutar den snabbare än du slutför din uppgift. Så vi måste gå till mastergrenen. För att göra detta måste vi göra det som visas i det nedre högra hörnet i skärmdumpen nedan:



- acceptera din — acceptera endast ändringar från readme-improver.
- acceptera deras — acceptera endast ändringar från master.
- slå samman — välj själv vad du vill behålla och vad du vill kassera.

- Det här är ändringarna från readme-improver.
- Det sammanslagna resultatet. För närvarande är det vad som fanns före förändringarna.
- Ändringarna från mastergrenen.

Push ändringar till fjärrservern
Nästa steg är att skicka ändringarna till fjärrservern och skapa en pull-begäran. För att göra detta, tryck helt enkelt på CTRL+SHIFT+K . Då får vi:

Bonus del
Först ville jag inte lägga till skapandet av en pull-förfrågan i den här artikeln, men den är inte helt komplett utan den. Så, låt oss gå till ett GitHub-förråd (ett som är ditt, naturligtvis :)) och vi ser att GitHub redan vet vad vi vill ha:

GO TO FULL VERSION