(bild: git.scm.com)
- Som ersättning för omöjliga versionshanteringar på filnivå skapades Versionshanteringsprogram
- Git är ett versionshanteringsprogram VCS (Version Control System), Subversion (SVN) är ett annat
- Versionshantering innebär stöd för traceability, möjligheten att backa till tidigare versioner
- Git är inte filversioner
- Stödjer flera användare i ett team eller projekt genom branch-based workflow (branching och merging)
- Är de facto standard och benämns vara lightwheight
- Open source, skapat av Linus Thorvalds 2005
- Kan vara svårt att lära sig
- Mål: master branch - always deployable - deploy i Master branch, utveckling i annan branch
- git is British slang för "pig headed, think they are always correct, argumentative" wiki
- Läs mer på https://www.git-tower.com/learn/git/ebook eller https://git-scm.com/book/en/v2/
- Lär/träna Git interaktivt online på https://try.github.io
(bild: github.com)
- Centrala datalagringsplatser (fil- och databaser) kallas repository eller repo's
- Github är ett publikt repository och kan nås via webb
- Principen är öppen lagring gratis - betala för privat
- Git är inte github
(bild: jahya.net)
http://git-scm.com/download
(installera med förvalda inställningar)
- Registrera konto på
https://github.com
och logga in
- GitHub for Windows
https://windows.github.com
- GitHub for Mac
https://mac.github.com
http://git-scm.com/download
krävs för tillgång till Git i VS Codehttps://code.visualstudio.com/download
- Med Visual Studio Code finns möjlighet att arbeta med terminal eller GUI
http://git-scm.com/download
- Installerar Bash-kommandoprompt (Linuxkommandon)- För Windows finns en bättre konsol
http://cmder.net
- Öppna VS Code's interna terminalfönster (Windows: CTRL-ö, Linux: CTRL-Shft-´)
- Öppna terminal och förbered plats och mapp i filsystemet
cd <mapp>
och/ellermkdir <mapp>
git init
- Skapar lokal repository i dolda undermappen.git
git config --global user.name "johansundstrom"
Tillägget--global
ger åtkomst i alla projektmappargit config --global user.email "johan.sundstrom@mdh.se"
git config user.name
- Visar användarnamngit config user.email
- Visar epostadressgit config --list
- Listar inställningargit config --global user.name "ninja-johan"
- Ändrar usernamegit config --global color.ui auto
- Färg UI
- Klicka
Initialize Repository
i VS Code eller... - Öppna VS Code's interna terminalfönster (CTRL-ö) och skriv konsolkommandon
git <verb> --help
git help <verb>
(bild: github.com)
- Modified - Redigerade mapp(ar)/fil(er) upptäckta av Git (röd)
- Staged - Mapp(ar)/fil(er) märkta för att bli committed (gul)
- Committed - Mapp(ar)/fil(er) i säkert förvar inom versionsdatabasen (grön)
git status
- Visar filer som ändratsgit add .
- Stage'ar alltgit status
- Visar statusgit status --short
- Visar kort meddelandegit commit --message "commit message"
- Commit (lagrar versionen)
git add <fil>
|<mapp>
|*.????
|.
- Fil | mapp | wildcard | allagit add <fil>
|<mapp>
|*.????
|.
Tillägget--patch
visar redigeringar mot repository
git reset HEAD <fil>
|<path/fil>
- Fil återgår till Modified-status (HEAD är aktuell commit)
git commit --message "commit message"
git reset HEAD <fil>
- Återställ fil från föregående commit
git checkout -- <fil(er)>
git log
- Visar alla commits och IDgit log --patch
- Visar commit händelser, visar vad som ändratsgit log --patch -2
- Visar commit händelser, visar vad som ändrats, sista två händelsernagit log --pretty=oneline
- Enklare överblick över commitsgit log --pretty=oneline --graph
- Lägger till en grafgit log author="joh"
- Visar alla commits från viss användare
touch .gitignore
- Skapa filen.gitignore
fil
|/folder
|*.txt
- Lista vad som inte ska ingå (ett entry/rad)
git diff <fil(er)>
git diff --staged
git rm fil.file
Kräver Git add nyfil.file och Git rm gammal.file innan commit
git mv oldname.file newname.file
git mv oldplace.file folder/newplace.file
Notis visar att förändringar väntar på att skrivas
- Ett
M
indikerar modified +
öppnar StageA
visas- Markera fil - Stage
- Skriv commit message, Skicka
- Klick på
M
visar förändringar
git log --oneline
(en rad) output från ovanstående
d8362b7 upd (commit meddelanden...)
f8a9f38 nya filer
64116aa update
git checkout f8a9f38 -- filename.ext
git status
git checkout master
git checkout -- <fil>
(återgår till sista commit)git status
- Ett
M
indikerar modified - Markera fil - Clean
(bild: backlogtool.com)
git branch develop
Skapar kopia av master branch i "develop" branch (eller annat namn)git checkout develop
switch till "develop" branch. develop branch är nu aktiv- eller HEAD-branch- ...arbete sker nu i develop branch
git checkout master
byt till master branch. Master är nu HEAD branchgit merge develop
slår samman "develop" med master branchgit branch --delete develop
raderar "develop" branch
git branch develop
Skapar kopia av master i "develop" (eller annat namn)
git checkout develop
switch till "develop" branch
- develop är nu aktuell HEAD branch
- filerna i arbetskatalogen byts nu till de aktuella i develop branch
git rm "*.txt"
Raderar alla *.txt i "develop" branchgit commit --message "raderat alla *.txt"
git checkout master
- Switch till master branch
git merge develop
- Slår samman
git branch --delete develop
(raderar branch develop)
git push
git clone <url>
- Skapar lokal mapp samt .git och hämtar filer från centralt repogit pull <remote> <branch>
- Hämtar förändringar från origin och uppdaterar arbetsfiler i HEADgit push <remote> <branch>
- Publicera lokala förändringar på ett anslutningsnamn
git remote add origin <url>
- Använd URL från github.com (origin
är default anslutningsnamn)git remote add <remote> <url>
- Använd url från github.com (<remote>
är anslutningsnamnet)git remote
- Listar anslutningsnamngit remote --verbose
- Visar anslutningsnamn och URLgit remote rm <remote>
- Raderar anslutning 'remote'git remote rename <old-remotename> <new-remotename>
git clone <url>
- Skapar lokal mapp samt .git och hämtar filer från centralt repogit fetch <remote>
- Hämtar förändringar från origin men uppdaterar INTE arbetsfiler i HEAD (kräver omstart av t.ex. VS Code)git pull <remote> <branch>
- Hämtar förändringar från origin och uppdaterar arbetsfiler i HEAD
git push <remote> <branch>
- Publicera lokala förändringar på ett anslutningsnamngit push --set-upstream <remote> <branch>
- Parameter -u i minnet, Git push nästa gång)
git branch -dr <remote/branch>
- Radera remote branchgit diff HEAD
- Visar skillnader i arbetsverktyget
- Git pull (ändringar?) git (visar kommandon) git VI esc:wq = write quit
Klona från externt repository git clone https://github.com/johansundstrom/RPi_Node (hämtar från repository)
- Git remote add origin https://github.com/johansundstrom/try_git.git
- Git push -u origin master (-u remember parameters, next time: Git push)
- Git pull origin master
NEW BRANCH - PULL REQUEST
- Create branch (name: feature?) 2) Make changes and commit 3) Open "Pull Requests tab" and click "New pull request" (for someone to review, show diffs) 4) Select branch 5) Verify 6) Click "Create pull request" 7) Add description, click "Create pull request".
- "Merge pull request"