Git

## Repository

För de som kommer att arbeta nära koden, både som kodare, banbyggare, grafiker och ljudtekniker så är det viktigt att alla arbetar med samma kod och att den hålls uppdaterad när någon gör något nytt. Därför kommer vi att anvädna ett så kallat repository. Kortfattat inebär det att hela projektet kommer att vara nerladdningsbart från en sida, och när det laddats ner en gång kommer du sedan kunna synka av de förändringar som gjorts på din sida och den andra sidan respektive och uppdatera så att alla nya balla features kommer upp.

Varje användare kommer att ha ett lokalt repository som hen uppdaterar från online repository:t när arbetet påbörjas ('pull') och där ändringarna sen sparas ('commit') eftersom arbetet fortgår. Sen väljer man att trycka upp ('push') sina uppdateringar till det gemensamma repository:t som ligger online. Vanligtvis sker det utan konflikt men om någon annan har uppdaterat eller ändrat några filer som du också har ändrat så kan du behöva slå ihop era olika ändringar ('merge') innan online-versionen accepterar din uppdatering av repository:t.

## Att använda GitHub

### Installera Git

http://git.scm.com/download/win

- Välj alla standardinställningar

### Konfigurera Git

Högerklicka på skrivbordet, välj "git bash". I konsolen som kommer upp, skriv "git config". Kör de i följd, ersätt John Doe med ditt namn och ersätt e-posten med din e-postadress

* $ git config --global user.name "John Doe"
* $ git config --global user.email johndoe@example.com
* $ git config --global merge.tool.vimdiff

Sist, för att kolla så att allt blev rätt kör följande kommandon

* $ git config --list
* $ git config user.name
* $ git config user.email

### Skapa SSH-nyckel

För att använda Git behöver du sätta upp en SSH-nyckel. I kort är det den nyckel som du använder för att få lägga in ny data i projektet. Gör nedan kommandon så ska du vara klar

* Öppna git Bash (om du inte redan har den öppen)
	+ $ ssh-keygen -t rsa -C "e-post" (din e-postadress så klart :P)
	+ En fråga om vart du vill spara den filen kommer dyka upp - ha kvar standard genom att trycka enter
	+ välj lösenord (helt okey att lämna det blankt då du kommer behöva skriva in det här lösenordet OFTA)
	+ $ ssh-agent -s (sparar SSH-nyckeln)
	+ $ clip < ~/.ssh/id\_rsa.pub (Kopierar nyckeln så att det går att klistra in på andra ställen)
* Gå till github.com och logga in
	+ Klicka på Kugghjulet
	+ Välj SSH-keys
		- Lägg till nyckel
		- Klistra in det som kopierats i nyckelfältet och döp datorn till något fint.
* Gå till git Bash igen
	+ $ ssh -T git@github.com (testar nyckeln)
	+ Välj "yes"

### Hjälpkommandon

* $ git help <verb>
* $ git <verb> --help
* $ man git-<verb>
* Exempel. $ git help config

## Välj mapp för projektet

Nu när git nästan är helt färdigkonfigurerat ska du även välja vart på din dator som filerna ska sparas. Detta görs genom nedan kommandon

* Öppna Git Bash
* $ cd "sökväg" (Skriv in sökvägen exempel "C:\Users\Public\Videos")
* $ git clone [https://github.com/nejthegame/nejthegame01.git]

## Bra kommandon

* $ git status
	+ Kollar vad du har som är och inte är "commited" dvs. redo för att publiceras upp mot projektet
* $ git pull
	+ Hämtar hem de förändringar som skett sedan du var inne i projektet. BÖRJA ALLTID MED DETTA
* $ git diff
	+ Jämför de faktiska kodändringarna mellan det som finns och det du lägger in
* $ git add FIL
	+ Säger åt git att du vill lägga upp FIL mot projektet. Går utmärkt att tabba här för att få fram filnamnen så hjälper git till med vilka alternativ som finns
* $ git commit -m "MEDDELANDE"
	+ Skickar upp det som du har "addat" med kommentaren som du skriver i meddelandet
* $ git push BRANCH
	+ Lägger upp förändringarna i projektbranchen. Tänk på att göra en "$ git pull" innan för att vara säker på att du inte skriver över någon annans kod
* $ git rm FIL
	+ Tar bort en fil från systemet om det är något som sa bort permanent. Gäller bara filer som du INTE har pushat
* $ git log
	+ Får upp en lista över vad som hänt i git
* $ git remove -v
	+ Visar vilka servrar du är kopplade till och vad de har för URL

## Hjälpprogram

Det går såklart att strunta i många av konsolgrejerna, men det är ju samtidigt lite mysigt :P Exempel på program är:

https://windows.github.com/

och ett annat är

http://www.sourcetreeapp.com/