Drupalsnack 18: Git init/clone
Drupalsnack28 Loka 2013

Drupalsnack 18: Git init/clone

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 init
  • git status
  • git add
  • git commit
  • git diff
  • git branch
  • git checkout
  • git clone
  • git fetch
  • git merge
  • git pull
  • git push
  • git merge –no-ff
  • git rebase
  • git stash
  • git gc
  • git bisect
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.

  • core / trustctime fungerar inte alltid så bra i OS X och kan ge falska besked om att en fil är ändrad när den inte är det.
  • push / default gör att git inte försöker köra push på alla brancher när man kör “git push” utan bara aktuell branch till aktuell remote branch med samma namn. Varför detta inte är det förvalda beteendet i git har jag inte sett några svar på.
  • branch / autosetuprebase är för de som gillar ett rebase baserat arbetsflöde som standard.

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'

Tämä jakso on lisätty Podme-palveluun avoimen RSS-syötteen kautta eikä se ole Podmen omaa tuotantoa. Siksi jakso saattaa sisältää mainontaa.

Jaksot(107)

Drupalsnack 91: Eftersnack

Drupalsnack 91: Eftersnack

Eftersnacket den här gången tar upp ämnen som Game of Thrones och hur den sista säsongen avslutades, EuroVision och tv-serier som blockas i Alabama för att de visas ett gay-bröllop. Samt The Cone of S...

24 Elo 201934min

Drupalsnack 91: Multi-site

Drupalsnack 91: Multi-site

Drupal är ett otroligt kraftfullt verktyg, och en av dess styrkor är att kunna styra flera webbplatser från en installation. Det finns lite olika sätt att göra detta på och Kristoffer och Adam radar u...

24 Elo 201927min

Drupalsnack 90: Tid, tid, tid

Drupalsnack 90: Tid, tid, tid

När det gäller tid så finns det mycket att diskutera. Adam och Kristoffer zoomar in på några av aspekterna som är aktuella när man jobbar - tidsregistrering, tidsuppskattning, tidsleverans. Detta po...

22 Touko 201944min

Drupalsnack 90: Eftersnack

Drupalsnack 90: Eftersnack

Eftersnacket behandlar aktuella ämnen som Avengers: Endgame, Bäst i test på SVT och Game of Thrones. Detta poddavsnitt sponsras av Websystem Det här poddavsnittet sponsras av Websystem. Länkar til...

22 Touko 201937min

Drupalsnack 89: Drupal 9

Drupalsnack 89: Drupal 9

Det känns som igår när Drupal 8 släpptes, men det planeras redan inför Drupal 9 och det är en rigorös planering som gjorts. Adam och Kristoffer går igenom vad som ligger framför oss och vad som använd...

30 Huhti 201926min

Drupalsnack 89: Eftersnack

Drupalsnack 89: Eftersnack

När det är dags för eftersnack tar vi det lite lugnare, pratar om det som faller oss in och i det här avsnittet så pendlar det från Pokémon GO till 3D-utskrifter, från Tesla till sommartid och kronbry...

30 Huhti 201928min

Drupalsnack 88: Säkerhet

Drupalsnack 88: Säkerhet

Med tanke på senaste tidens säkerhetsuppdateringar som släppts till Drupal, tar Adam och Kristoffer en titt på säkerheten i Drupal. Vilka moduler kan användas för att säkra upp sin Drupal-installation...

29 Maalis 201937min

Drupalsnack 88: Eftersnack

Drupalsnack 88: Eftersnack

När säkerhetssnacket från avsnitt 88 ebbar ut så tar Adam och Kristoffer upp några andra ämnen. I just detta eftersnacket blev det mycket prat om julfirande, dataspel och brädspel. Många sköna tips oc...

29 Maalis 201932min