- Présentation
- Commandes de base
- Merge et rebase
- Cherry-pick
- Rebase interactif
- Push et Pull
- Gestion des conflits
- Configuration de git
- Le reflog
Documentation de git-config.
Pour éviter d'avoir à utiliser l'option --set-upstream ou -u de git push lors du tout 1er push d'une nouvelle branche:
git config --global push.autoSetupRemote true
Pour éviter d'avoir à utiliser l'option --rebase ou -r de git pull:
git config --global pull.rebase true
Si vous ne souhaitez pas travailler en "pull rebase", vous pouvez interdire à git pull la création de commits de merge avec:
git config --global pull.ff only
Si le pull ne résulte pas en un fast-forward, alors rien ne se passe et un message d'erreur apparaît:
$ git pull
fatal: Not possible to fast-forward, aborting.
Ensuite à vous de gérer 😉
Pour éviter d'avoir à utiliser l'option --prune ou -p de git pull et git fetch:
git config --global fetch.prune true
Fait le ménage dans les branches distantes une fois que celles-ci n'existent plus sur le serveur:
$ git pull
- [deleted] (none) -> origin/branche-mergee
Warning
Si vous avez travaillé sur branche-mergee, cela ne supprime pas votre branche locale.
Pour supprimer la branche locale, il faut utiliser la commande git branch -D branche-mergee
Pour éviter d'avoir à utiliser l'option --autostash de git rebase et git pull:
git config --global rebase.autoStash true
Tout travail non commité sera rangé dans la remise avant un rebase, puis ressorti une fois le rebase terminé:
$ git rebase origin/dev
Created autostash: 2c587a8b
Applied autostash.
Successfully rebased and updated refs/heads/ma-branche.
Warning
Après un rebase réussi, des conflits peuvent être rencontrés lorsque le travail non commité est sorti de la remise.
Pour éviter d'avoir à utiliser l'option --autosquash de git rebase --interactive ou git rebase -i:
git config --global rebase.autoSquash true
Lors du lancement d'un nouveau rebase interactif, les commits de squash et/ou de fixup créés précédemment seront automatiquement positionnés au bon endroit et avec la bonne commande dans le TODO généré.
Pour éviter d'avoir à utiliser l'option --update-refs de git rebase:
git config --global rebase.updateRefs true
Dans le cas où:
branche1est basée surdevbranche2est basée surbranche1
Alors si je souhaite mettre à jour branche1 et branche2 avec la dernière version de dev, je peux me positionner sur branche2 et lancer un rebase:
$ git rebase dev
Successfully rebased and updated refs/heads/branche2.
Updated the following refs with --update-refs: