[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