git & GitHUB 101

Max Witt digIT 13

Agenda

  • Vad är versionshantering, varför ska jag använda det?
  • Problemet med andra människor
  • Objekt i git
  • Vad är GitHub?
  • Lär dig krypa, lär dig gå

Vad är versionshantering?

Inte backup

Hjälper dig hålla reda på hur filer ändras med tiden

Tvingar dig hålla snyggt och prydligt bland versionerna

Men Google Drive & Dropbox då?

Båda bygger på versionshantering under huven

De tror att de själva vet bäst

Knepigt att backa i tiden

Riktig versionshantering kan

  • Hoppa fram och tillbaka i tiden
  • Hålla reda på separata tidslinjer
  • Baka ihop (mergea) tidslinjer

Riktig versionshantering kan

  • Låta användaren avgöra vad som är rätt
  • Fungera ihop med utvecklingsmiljöer och andra system
  • Smidigt ge fan i kompilerade och genererade filer

Problemet med andra människor

Grupparbeten och projekt är vanligt

Jobba tillsammans på samma sak

Jobba på olika saker i samma projekt

Jobba på samma sak

  • Klarar av ändringar i samma fil
  • Ändringar på samma rad kan ge problem
  • Förstår att nya rader kan flytta på existerande rader

Jobba på olika saker

  • Börja från en gemensam punkt
  • Arbeta ostört utan att påverka varann
  • Slå ihop allt när ni är klara

Google Drive:

“Din kompis la till en stor bild. Jag låter din skärm hoppa runt tills han är färdig med den, okej?”

Konflikter händer

  • Två olika ändringar av samma rad utan att de vet om varann
  • Förebygg med kommunikation inom gruppen
  • git låter och tvingar dig välja vad som är rätt

Dropbox:

“Din kompis gjorde något samtidigt som du, så jag skapar en kopia av hela mappen utan att tala om det, okej?”

Objekt i git

Commit

  • Minsta och viktigaste beståndsdelen
  • Ärver från föräldern - har bara förändringar
  • Allt annat är labels som pekar på commits

Repository / Repo

  • Container som innehåller alla commits
  • Gräns för var projektet börjar och slutar
  • Finns en commit här så finns den tills repot försvinner

Workspace

  • Mappen på din hårddisk där projektet finns
  • Här ska exempelvis Eclipse eller Xcode jobba
  • Inget är heligt, allt kan skrivas över

Staging area

  • Välj vilka förändringar som ska vara med i committen
  • Förberedelseplats för commits, inget sparas här
  • Smidigt att dela upp ändringar i fler commits

Branch & Tag

  • Länkar som pekar på commits
  • Branch pekar på senaste, Tag står stilla
  • Branchen “Master” finns alltid som standard

Vad är GitHub

Repo online

Social kod

git närmast hjärtat

Repo online

  • Skicka upp din kod till central server
  • Gratis utrymme för open source
  • Styr projektet med medlemmar

Social kod

  • Hitta andras projekt
  • Delta i utveckling, issue tracker
  • Dela med dig av kodsnuttar - Gist

git närmast hjärtat

  • Hjälp att komma igång
  • Community för support
  • Renodlat fokus

Lär dig krypa, lär dig gå

clone

add/rm

commit

checkout

reset

push/pull

Clone

Hämta ett repo till din dator, fixa allt på en gång

Add/rm

Styr vad som ska hamna i staging area

Commit

Skapa commit med det som finns i staging area

Checkout

Hoppa runt i trädet, titta på tidigare versioner

Reset

Backa trädet om senaste committen inte var bra

Push/pull

Skicka upp och hämta ändringar från servern

#digIT