Drupalsnack

Drupalsnack 18: Git init/clone


Listen Later

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
  • Watch Git For Ages 4 And Up | Open Source Developers Conference Episodes
  • Introduction to Git with Scott Chacon of GitHub - YouTube
  • http://git-scm.com/book
  • http://gitref.org/
  • http://gitready.com/
  • http://think-like-a-git.net/
  • http://randyfay.com/topics/git
  • http://mislav.uniqpath.com/2010/07/git-tips/
  • http://pcottle.github.io/learnGitBranching/
  • Git verktyg
    • Tower - Git client for Mac
    • Git+Hg Client SmartGit/Hg
    • Tortoisegit - Windows Shell Interface to Git
    • SourceTree: Free Mercurial and Git Client for Windows and Mac
    • Tig: text-mode interface for Git (ncurses-based)
    • Aquire achievements while using git
    • Webbtjänster för Git
      • https://bitbucket.org/
      • https://github.com/
      • (Mer Git grejor längre ned.)

        Nya webbplatser med Drupal
        • http://www.mkse.com/2013/10/21/fler-drupal-webbar-fran-miemi
        • http://www.mkse.com/2013/10/22/ihm-se-relanserad-pa-drupal
        • http://www.mkse.com/2013/10/22/pfizer-bygger-enorm-global-drupal-7-plattform
        • Modultipset
          • Views Autocomplete Filters http://webwash.net/tutorials/how-add-autocomplete-functionality-text-filters-views
          • Genomgång av olika fält moduler http://wizzlern.nl/drupal/unwrap-your-field-content
          • Feature 2.0 http://www.systemseed.com/blog/features-20-released
          • Open Atrium 2 http://www.phase2technology.com/blog/collaboration-software-needs-a-better-open-source-alternative-and-its-here
          • Nyheter
            • SEO risker http://brath.se/farlig-sokmotoroptimering-betygsatt/
            • Drush Staging Workflow | Jackson River
            • Tjänst hos Kodamera https://groups.drupal.org/node/354768
            • 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
                  [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 [email protected]:$2/$1.git
                  }
                  # tig stuff
                  alias t='tig'
                  alias tst='tig status'
                  ...more
                  View all episodesView all episodes
                  Download on the App Store

                  DrupalsnackBy Drupalsnack.se