Versjonskontroll med Git
mkdir alpha
cd alpha
echo "hello" > world.txt
git init
git status
git add world.txt
git status
git commit -m "Initial commit"
git status
git log
git init
git log --all --oneline --graph --decorate
git config --global alias.lg "log --all --oneline --graph --decorate"
git lg
bruk av alias
Forslag til andre alias:
https://github.com/mathiasbynens/dotfiles/blob/master/.gitconfig
echo "world" >> world.txt
git status
git add world.txt
git commit -m "Added world to world.txt"
git status
git lg
cat world.txt
git checkout HEAD~1
git lg
cat world.txt
git checkout master
git lg
cat world.txt
git checkout (commits)
echo "blabla" >> world.txt
cat world.txt
git checkout world.txt
cat world.txt
git status
git checkout (files)
cd ..
git clone alpha beta
cd beta
ls
git lg
cd ../alpha
echo "print 'hello world'" > hello.py
git add hello.py
git commit -m "Added hello.py initial version"
git lg
cd ../beta
git lg
git fetch
git lg
git merge
# git fetch + git merge = git pull
git lg
ls
git clone / git pull
cd ..
git clone --bare alpha common.git
cd common.git
ls
cd ..
git clone common.git gamma
cd gamma
ls
cd ../alpha
git remote add origin ../common.git
git push -u origin master
git lg
cd ../beta
git remote -v
git remote remove origin
git remote add origin ../common.git
git push -u origin master
git lg
git clone --bare / remotes
cd ..
git clone --bare alpha common.git
cd common.git
ls
cd ..
git clone common.git gamma
cd gamma
ls
cd ../alpha
git remote add origin ../common.git
git push -u origin master
git lg
cd ../beta
git remote -v
git remote remove origin
git remote add origin ../common.git
git push -u origin master
git lg
git clone --bare / remotes
echo "Tiger" > cats.txt
git add cats.txt
git commit -m "Added cats.txt - a list of cat names"
git fetch
git lg
git push
git lg
cd ../alpha
echo "Fido" > dogs.txt
git add dogs.txt
git commit -m "Added dogs.txt - a list of dog names"
git fetch
git lg
git merge origin/master --no-edit
git lg
basic merge
# for å "angre" merge vi gjorde:
git reset --keep HEAD~1
git lg
# git stash
git rebase origin/master
# git stash pop
git lg
git push
git lg
# git stash og git stash pop brukes
# dersom man har filer man har endret
# men ikke vil committe
basic rebase
echo "Fluffy" >> cats.txt
git commit -am "Added Fluffy to list of cat names"
git push
cd ../beta
echo "Shadow" >> cats.txt
git commit -am "Added Shadow to list of cat names"
git pull
nano cats.txt
git add cats.txt
git commit -m "Merged list of cat names"
git lg
basic merge m/konflikter
# igjen, for å "angre" merge vi gjorde:
git reset --keep HEAD~1
git fetch
git rebase
nano cats.txt
git add cats.txt
git rebase --continue
git lg
git push
basic rebase m/konflikter
git checkout -b fancyhello
echo "print sum(range(1, 101))" >> hello.py
git commit -am "Math demo added to hello.py"
git lg
git checkout master
echo "Bo" >> dogs.txt
git commit -am "Added dog name Bo"
git lg
git checkout fancyhello
git rebase master
git checkout master
git merge fancyhello
branching
GitHub
- Gratis til open source, private repo koster penger
- 5 gratis private repo som student
BitBucket
- Gratis private repo, samarbeid med over 5 personer koster penger
- Alt gratis som student
GitHub sin interaktive intro til Git:
Interaktiv tutorial til mer avansert branching og rebasing:
http://pcottle.github.io/learnGitBranching/
En fin liste med nyttige Git-kommandoer:
Hvordan bruke Git til å enkelt oppdatere en nettside ("push-to-deploy"):
http://toroid.org/ams/git-website-howto
Artikkel om hvordan Git faktisk fungerer:
Mine alias
unstage = reset HEAD
preview = diff --cached
lg = !git --no-pager lgl -15
lgl = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
st = status -s
co = checkout
wdiff = diff --color-words
# Remove the old tag with this name and tag the latest commit with it.
retag = "!r() { git tag -d $1 && git push origin :refs/tags/$1 && git tag $1; }; r"
alias = !git config --list | fgrep alias. | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\\t => \\2/' | sort | cut -c -80
Versjonskontroll med Git
By Erik Vesteraas
Versjonskontroll med Git
(Fra 2015, se heller den andre presentasjonen om versjonskontroll)
- 1,609