Systèmes de gestion de versions : Git
TP #6 : Soigner ses commits ; Git sans serveur central
Pour faire des commits soignés
- Sélectionner les morceaux à mettre dans un commit
$ git add -p [fichier]
- Compléter le dernier commit
$ git commit --amend
- Supprimer des commits
$ git reset --soft <commit> # ne touche pas aux fichiers, ni à l'index $ git reset --mixed <commit> # l'index est réinitialisé $ git reset --hard <commit> # les fichiers et l'index sont aussi réinitialisés
$ git reset --soft HEAD^ # supprime le dernier commit $ git reset --hard HEAD~3 # supprime les 3 derniers commits, et réinitialise les fichiers $ git reset --hard # HEAD par défaut, supprime toutes les modifications non enregistrées
- Modifier les derniers commits
$ git rebase -i origin/main
- Éviter un « merge » lors d'un git pull
$ git pull --rebase
Git pretty : un petit flowchart pour illustrer le tout... (copie sur archive.org)
Utiliser Git sans serveur central
- Initialisation d'un nouveau dépôt
$ mkdir projet $ cd projet $ git init # puis : ajout de fichiers, git add, git commit, ...
Autre exemple, avec des fichiers existant :
$ tar zxf projet.tar.gz $ cd projet $ git init $ git add . $ git commit -m "Commit initial."
- Copie d'un dépôt
$ git clone /path/to/repo # local $ git clone user@host:/path/to/repo # distant, par ssh
- Intégrer les changements d'un dépôt distant
$ git pull <url> <branche> $ git fetch <url> <branche>
Exemple :
$ git fetch user@host:/path/to/repo main
Cf. gittutorial(7), « USING GIT FOR COLLABORATION » pour un scénario d'utilisation par Alice et Bob.