Git Intro

Git introduktion

Basal Arbejdsgang

flowchart TD; EDIT("opret/rediger/slet fil(er)") --> STAGE("udvælg ændringer") STAGE --> COMMIT("Commit i lokalt depot") COMMIT --> DO_PUSH{Klar til offentliggørelse?} DO_PUSH -->|Nej| EDIT DO_PUSH -->|Ja| PUSH("Skub ændriger til 'remote'") PUSH --> EDIT

Den følgende illustration viser hvordan forskellige kommandoer påvirker komponenterne i git systemet.

Samarbejde via github

For at kunne samarbejde om den samme kodebase er det nødvendigt med en smule setup for at komme igang.

Hvis vi tager udgangspunkt i et nyt projekt kræves denne opsætning.

  • opret et repository i github
  • lave en klon på den/de computere der skal deltage.
  • Ejeren af “repository” skal tilføje de andre bruger som samarbejdspartnere (Collaborators)
  • Samarbejdspartnere skal acceptere invitationen (typisk via et link i en email)
  • Efter accept af samabejdsinvitation kan de inviterede brugere skubbe kode ind i projektet.

Samarbejde via Git

Her er en visualisering af opsætningen med to samarbejdende udviklere.

graph TB remote_repo(remote repo) your_repo(you local repo) friend_repo(friend local repo) your_wd friend_wd your_repo --> |push| remote_repo remote_repo --> |pull| your_repo friend_repo --> |push| remote_repo remote_repo --> |pull| friend_repo subgraph you your_wd -->|commit| your_repo end subgraph friend friend_wd --> |commit| friend_repo end subgraph github remote_repo end

Basale kommandoer

Ønsker du er bruge git fra en kommando prompt er her en liste med basale kommandoer

Github pages

Her finder du en guide til at komme igang med Github pages.

Denne videoguide forklarer hvordan man kommer igang med at bruge github pages til at hoste sin webside.

Konfliktløsning

Når man er flere der samarbejder om samme kode kompleks opstår der uungåeligt det at man på et tidspunkt kommer til at ændre i en fil , der allerede er blevet ændret af en anden person. Derfor er det nødvendigt at vide hvordan man løser disse konflikter i git, så man kan komme videre med arbejdet.

Konfliktløsningsscenariet kan illustreres med et eksempel i et sekvensdiagram.

sequenceDiagram %%Bob: asdfas fasfd Note over Alice,Bob: Succesful interaction Bob ->> Bob : commit Bob ->>+ github : push github -->>- Bob : success Bob ->>+ Alice : "Please pull the latest code" Alice ->>+ github : pull github -->>- Alice : latest code Alice -->>- Bob : "OK, done" Alice ->> Alice : commit Alice ->>+ github : push github -->>- Alice : success Alice ->>+ Bob : "I pushed some changes" Bob ->>+ github : pull github -->>- Bob : latest code Bob -->>- Alice : "OK, done" Note over Alice,Bob: Handling merge conflicts Bob ->> Bob : commit Alice ->> Alice : commit Alice ->>+ github : push github -->>- Alice : success Alice ->>+ Bob : "I pushed some changes" Bob ->>+ github : push github -->>- Bob : error, not on latest commit activate Bob Bob ->>+ github : pull github -->>- Bob : latest code Bob ->> Alice : "Oh no, lots of conflicts!" Bob ->> Bob : resolve conflicts locally Bob ->>+ github : push github -->>- Bob : success Bob ->>+ Alice : "Managed to resolve the conflicts, please review" deactivate Bob Alice -->>- Bob : "OK, sorry!" Alice ->>+ github : pull github -->>- Alice : latest code Alice ->>+ Bob : "pulled the code, no issues!" Bob -->>- Alice : "OK, great" %% Bob -->>- Alice : "I hope it merges cleanly"

Konfliktløsning i git er også beskrevet i denne video.

1.9: Resolving Merge Conflicts - Git and GitHub for Poets