Listen

Description

Vi pratar versionshantering med Git. Verktyg, kommandon, inställningar, arbetsflöden och en del annat. Vi avslutar som vanligt med nyheter, nya lanseringar samt modultips från Drupalsfären.

Länkar till moduler, webbplatser och tjänster vi pratade om i detta avsnitt:

Bra resurser för att lära sig om Git

Git verktyg

Webbtjänster för Git

(Mer Git grejor längre ned.)

Nya webbplatser med Drupal

Modultipset

Nyheter

Git-kommandon vi gick igenom

Git completion och prompt

Med git brukar det följa med en git-completion.* fil för olika shells. Läs på hur man aktiverar den så får du tab complete på git kommandon, branches etc. Otroligt smidigt och tidsbesparande!

Det går också att få shell prompten att visa aktuell branch, status och annat. Sök efter information om “git prompt” så finns en uppsjö av information och exempel.

Git ignore

I filen gitignore kan man ange vilka filer man vill att git ska ignorera. Som i exemplet från Fredrik nedan kan man ha en i sin hemmamapp, den kommer alltid att vara aktiv. Sedan kan man ha en specifik per projekt också.

Fil: ~/.gitignore

*.a
*.o
*.py[co]
*.so
*.sw[nop]
*.tmp
*.patch
*.orig
*.sql
*.gz
*.tar
*.zip
*~
.#*
[#]*#
.DS_Store

Git config

I hemmamappen finns också en git config fil. Här är exempel från Fredriks config fil. Kopiera inte dessa rakt av utan kolla upp vad kommandona gör först.

Fil: ~/.gitconfig

[user]
name = Kalle Svensson
email = kalle@exempel.se

[core]
excludesfile = ~/.gitignore
trustctime = false
whitespace = tab-in-indent,trailing-space

[alias]
br = branch
co = checkout
ci = commit
cia = commit -a
cim = commit -m
cima = commit -am
ciam = commit --amend -m
st = status
cp = cherry-pick
w = whatchanged
df = diff --patch-with-stat
dfs = diff --staged --patch-with-stat
l = log
ll = log --oneline --decorate
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

[color]
ui = auto
whitespace = red reverse

[push]
default = upstream
[branch]
autosetuprebase = always

Några exempel från Fredriks fil med shell aliaser

# Git stuff
alias g='git'
alias gg='git grep -I --line-number --heading'
alias ga='git add -u .'
alias gaa='git add --all .'
alias gci='git commit -a -m'
alias gcm='git commit -m'
alias gcam='git commit --amend -m'
alias gst='git status -sb'
alias gcp='git cherry-pick'
alias gbr='git branch'
alias gfo='git fetch origin'
alias gfu='git fetch upstream'
alias gp='git push'
alias gpo='git push -u origin'
alias gl='git pull'
alias glu='git pull upstream'
alias glnr='git pull --no-rebase'
alias grm='git rebase origin/master'
alias gmn='git merge --no-ff'
alias gsl='git stash list'

gsa () {
git stash apply stash@{$1}
}

gss () {
git stash save "$@"
}

gra () {
git remote add $2 git@github.com:$2/$1.git
}

# tig stuff
alias t='tig'
alias tst='tig status'