[bglug] Ultime dal corso su git

Flavio Castelli flavio@castelli.name
Gio 21 Gen 2010 10:32:17 CET


Come promesso ieri sera al termine del corso...

Istruzioni da aggiungere al proprio ~/.gitconfig
  [core]
    pager = less -FRSX

  [color]
    status = auto
    diff   = auto
    branch = auto

  [alias]
    co = checkout
    st = status
    ci = commit
  [branch]
        autosetuprebase = remote
  [push]
        default = current

Istruzioni da aggiungere a ~/.bashrc

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
function proml {
  PS1="\u@\h:\w\[\033[0;32m\]$(parse_git_branch)\[\033[0;0m\]> "
  PS2='> '
  PS4='+ '
}
PROMPT_COMMAND=proml



Ieri sera mi si sono dimenticato di parlarvi di un altro comando utile.

Supponiamo che abbiate risolto un bug dentro il branch 'fix_bug'. Per 
risolverlo avete fatto una serie di commit all'intero di questo branch.
Andate in master e invece di fare un semplice merge o un rebase digitate fare:
git merge --squash fix_bug

In questo modo viene fatto il diff tra il branch fix_bug e master. Le 
differenze tra i due branch vengono applicate al codice in master ma NON 
vengono committate.
Se date un git status noterete che avete una serie di file modificati aggiunti 
direttamente nell'area di staging.
A questo punto digitate 'git commit' e vedrete che git genera automaticamente 
un messaggio per il vostro commit. Questo messaggio include tutte le meta-info 
dei commit eseguiti nel branch fix. Date la conferma all'operazione di commit 
e digitate git log. Noterete che invece di avere gli n commit eseguiti nel 
branch fix_bug vi ritroverete con un singolo commit.

Vantaggi:
- per applicare il fix in un altro branch dovete fare il cherry-pick di un 
solo commit invece che di n
- in caso di ipotetico revert dovete annulare solo 1 commit invece che n

Svantaggi:
- si perdono informazioni: n commit vengono condensati in un unico commit


Altra cosa: per installare la gemma git_remote_branch:
  sudo zypper/apt-get install rubygems
  sudo gem install git_remote_branch

Come detto alla fine del corso se avete problemi con git/dubbi/altro 
contattatemi pure.


Ciao
Flavio


Maggiori informazioni sulla lista bglug