Skip to content

1024pix/bootcamp-git

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

🥾 Bootcamp git avancé

Plan

  1. Présentation
  2. Commandes de base
  3. Merge et rebase
  4. Cherry-pick
  5. Rebase interactif
  6. Push et Pull
  7. Gestion des conflits
  8. Configuration de git
  9. Le reflog

Configurer git

Documentation de git-config.

push et pull (et fetch)

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

rebase

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ù:

  • branche1 est basée sur dev
  • branche2 est basée sur branche1

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:

Ressources

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors