Git + GitHub i Rider

Samarbejde om én kodebase — med JetBrains Rider (Windows eller macOS)

Her vises hvordan man kan samarbejde om at udvikle software, via professionelt software som git og github — ikke med CLI kommandoer, men grafisk via JetBrains Rider udviklingsværktøjet. Du skal ikke skrive git-kommandoer. Vil du vide, hvad der sker "under motorhjelmen", kan du bagefter læse siden Git CLI. Bruger du Visual Studio på Windows i stedet, kan du læse siden Git + GitHub i Visual Studio.

Git er et versionsstyringssystem: det gemmer projektets historik, så man altid kan se, hvad der er ændret, og gå tilbage til tidligere versioner. GitHub er et sted online, hvor et Git-repository kan ligge — så hele gruppen kan hente og gemme i det samme projekt. Rider har Git indbygget: du behøver ikke noget ekstra program.

Princippet

Projektet findes to steder: i skyen (GitHub — det fælles repository) og hos hver enkelt person (den lokale folder på egen maskine, typisk C:\Users\username\RiderProjects\... på Windows eller /Users/username/RiderProjects/... på macOS). Man gemmer egne ændringer op i skyen og henter de andres ændringer ned. Første gang man får projektet ned på sin maskine hedder det klone. Derefter gemmer man egne ændringer med commit og sender dem op med push — og henter de andres ændringer ned med pull.

Forudsætning: Én i gruppen har allerede oprettet projektet og repositoriet på GitHub og inviteret dig som collaborator (se hvordan på siden Git + GitHub i Visual Studio). På denne side starter vi med at klone repositoriet ned i Rider.

Trin 1 — Klon repositoriet

Start Rider. På velkomstskærmen vælger du Clone Repository (eller menuen File > New > Project from Version Control):

Rider velkomstskærm med knappen Clone Repository
Riders velkomstskærm — vælg Clone Repository

Vælg GitHub i listen til venstre (Rider skal være logget ind på din GitHub-konto — det sker typisk automatisk første gang). Søg efter repositoriets navn og vælg det:

Clone Repository-vinduet med GitHub valgt og søgning efter repositoriet
Vælg GitHub, søg på en del af navnet og vælg repositoriet

Kontrollér at stien (Directory) er som den skal være — bemærk at solution-navnet er en del af stien:

Stien til den lokale folder inklusive solution-navnet
Kontrollér stien inkl. solution-navn, og tryk Clone
Rider kloner repositoriet
Rider kloner nu repositoriet ned fra GitHub

Rider spørger, om du stoler på solution'en og vil åbne den — vælg Trust and Open:

Dialog: Trust and Open 'CDtest' Solution?
Trust and Open — Rider åbner den klonede solution

Trin 2 — Se resultatet

Projektet ligger nu i din lokale folder. Åbn visningen File System (i stedet for Solution) for at se alle filerne — inklusive de skjulte git-filer:

Projektet set i File System-visningen
Resultatet — projektet i File System-visningen
Skift mellem Solution- og File System-visning
Skift mellem Solution- og File System-visning via dropdown-menuen

Bemærk folderen .idea — det er Riders egen konfigurationsfolder:

File System-visning med .git-, .idea- og .gitignore fremhævet
Bemærk .idea — Riders konfigurationsfolder (og .git + .gitignore)

Og bemærk filen .gitignore — den fortæller Git, hvilke filer der ikke skal gemmes i repositoriet:

File System-visning med .gitignore fremhævet
Bemærk .gitignore — filer heri ignoreres af Git

Trin 3 — Føj Rider- og macOS-filer til .gitignore

Én i gruppen retter .gitignore og tilføjer følgende linjer, f.eks. i toppen af filen, for at ignorere Rider-specifikke og macOS-specifikke filer (så de ikke ender i det fælles repository):


# ==========================================
# JetBrains Rider & macOS
# ==========================================
.idea/
*.sln.iml
# macOS systemfiler
.DS_Store
.AppleDouble
.LSOverride
    

Trin 4 — Foretag en ændring og commit

Ret noget i koden — her ændres udskriften i Program.cs:

Program.cs med en ændret Console.WriteLine
Foretag en ændring i Program.cs

Åbn Commit-vinduet (venstre sidepanel, eller Ctrl+K / Cmd+K). Under Changes sætter du kryds ved de filer, der skal med — her både .gitignore og Program.cs:

Commit-vinduet med Changes valgt: .gitignore og Program.cs
Vælg de ændrede filer under Commit > Changes

Skriv en kort commit-besked, der beskriver ændringen, og tryk Commit:

Commit-vinduet med commit-besked og Commit-knappen
Skriv commit-besked og tryk Commit

Efter commit'en er Changes tom — ændringerne er gemt i din lokale historik:

Commit-vinduet efter commit — Changes er tom
Efter commit: ingen ændringer tilbage at committe
Push bagefter: Commit gemmer kun lokalt. Tryk Commit and Push... (eller Git > Push...) for at sende dine commits op på GitHub, så resten af gruppen kan se dem.

Trin 5 — Hent de andres ændringer: Pull

En anden person i gruppen (Person B) har ændret Program.cs og pushet til GitHub. Du henter ændringen ned med Pull — højreklik på projektet og vælg Git > Pull...:

Kontekstmenu: Git > Pull...
Person B har ændret Program.cs — Person A henter ændringen med Git > Pull

I dialogen bekræftes pull fra origin til din branch (her master) — tryk Pull:

Dialog: Pull to master — git pull origin master
Pull to master — hent fra origin
Genvæj: Update Project i Git-menuen øverst til højre (eller Ctrl+Alt+W) gør det samme som Pull.

Trin 6 — Ved merge-konflikt: Merge Editoren

En merge-konflikt opstår, når to personer har ændret det samme sted i den samme fil, og Git ikke kan afgøre, hvilken ændring der skal gælde. Det er helt normalt — og Rider hjælper dig gennem det. Git opdager konflikten og viser en liste — vælg Merge...:

Conflicts-dialogen: Program.cs er Modified på begge sider — vælg Merge
Git opdager konflikten — vælg Merge...

Rider åbner Merge Editoren: din version til venstre, versionen fra GitHub til højre, med konfliktlinjen markeret. Vælg den rigtige tekst — eller skriv en blanding:

Merge Revisions-vinduet: Changes from master vs. Changes from origin/master
Merge Editoren — din version (venstre) mod skyens version (højre)

Efter merge indeholder din lokale fil nu den valgte version:

Program.cs efter merge — den lokale version er opdateret
Efter merge — den lokale version er ændret

Afslut med et commit og eventuelt et push, så løsningen kommer op i skyen:

Kontekstmenu: Git > Push...
Hvis du skal pushe: Git > Push...
Git-menuen med Update Project fremhævet
Update Project — en anden måde at trække (pull) på
Bedste råd mod konflikter: aftal, hvem der rører hvad — del filerne mellem jer, og pull altid, før du begynder at skrive. Så mødes I sjældent om de samme linjer.

Checkliste — hele forløbet på én side


  FØRSTE GANG (efter invitation fra Person A)
  1. Rider: Clone Repository -> GitHub -> vælg repos
  2. Kontrollér stien (RiderProjects\... \solutionnavn)
  3. Clone -> Trust and Open
  4. Én i gruppen: .gitignore += .idea/, *.sln.iml, .DS_Store ...

  HVERDAGEN (alle)
  5. pull  (Git > Pull... / Update Project)
  6. arbejd -> commit ofte (Ctrl+K), kort besked
  7. push  (Git > Push... / Ctrl+Shift+K)
     Ved merge-konflikt: Merge... -> vælg rigtig tekst -> commit
    
# macOS systemfiler .DS_Store .AppleDouble .LSOverride