Table des matières

Gestion des branches

Lister les branches par ordre de date de commit:

$ git branch --sort=-committerdate

Lister les branches avec les commits:

$ git branch -vv

Nouvelle branche

$ git branch <branch>

Pousser la branche sur origin:

$ git push origin <branch>

Aussi

$ git checkout -b newbranch origin/newbranch

Changer de branche

$ git checkout <branch>

Pour obtenir une branche qui n'est pas locale, mais sur le dépôt distant:

$ git checkout -b <branch> --track origin/<branch>

Retourner à la branche précédente:

$ git checkout -

Liste des branches

git branch -a

Annuler les changements

Pour annuler les changements sans avertissement (à utiliser avec précaution, peut causer la perte de données):

git checkout -- .

Merge

Merge du master à une branche

Ayant une branche localement, on veut récupérer la branche master et la fusionner dans la branche locale. Par exemple, si la base de données a changé, ainsi que le code sur master, on veut récupérer ce changement.

  1. Commiter les changements sur la branche s'il y a lieu.
  2. Se mettre sur la branche master et mettre à jour
      $ git checkout master
      $ git pull
  3. Retourner sur la branche de développement et faire un merge:
      $ git checkout <nom_de_la_branche>
      $ git merge master
  4. Réparer les conflits s'il y a lieu.
  5. Faire un commit du merge.

Annuler un merge

$ git reset --hard HEAD
$ git merge --abort  

Source

Renommer une branche

  1. git branch -m <oldname> <newname>

Renommer une branche remote

$ git branch new-branch-name origin/old-branch-name
$ git push origin --set-upstream new-branch-name
$ git push origin :old-branch-name

Source

Renommer la branche master

$ git branch --move master main

Supprimer une branche

La branche “branche” existe localement et a été publiée. Elle a été aussi mergée au master.

  1. git branch -D <branch_name>
  2. git push origin :<branch_name>

Git Rebase

La documentation officielle : Git-Rebase

Si on a une branche develop qui a branché de master et qu'on veut inclure les changements de master plus tard dans le temps, en étant sur develop, on peut faire:

$ git rebase master
$ git rebase master develop

Outil: Rebase Editor

Squash

On veut squasher les commits :

$ git merge-base develop <nom-de-la-branche>

La commande donne le SHA du nouveau commit.

$ git rebase -i <sha-commit>

Éditer le fichier en gardant le premier pick et précéder les autres de f.

$ git push -u origin <nom-de-la-branche> --force