Mes tous premiers pas avec git
.
Configuration
Après avoir installé git
sur la machine, il faut configurer un utilisateur :
$ git config --global user.name "nom ou pseudo"
$ git config --global user.email "identifiant@email.com"
Seules les deux propriétés ci-dessus sont obligatoires, mais on peut aussi configurer plein d’autres choses.
Si on veut avoir une configuration différente pour un dépôt, par exemple pour un projet sur GitHub, on peut faire :
$ cd mon_projet
$ git config user.email "username@users.noreply.github.com"
$ git config user.name "username"
Pour vérifier qu’on a bien l’identité que l’on souhaite avant de lancer des commandes, on peut faire par exemple :
$ git config user.email
On peut aussi voir toute la configuration avec :
$ git config --list
Créer un nouveau projet
On crée ici un projet local. On verra plus loin comment utiliser un dépôt central.
$ mkdir MonProjet
$ cd MonProjet
$ git init
Le répertoire est maintenant prêt à recevoir les fichiers du projet.
Commandes de base
On crée maintenant quelques fichiers dans le projet, et on lance :
$ git status
On voit qu’on a une liste de Fichiers non suivis
car ils sont encore inconnus de git
.
Pour qu’ils soient connus de git
, on fait :
$ git add f1 f2
On voit avec git status
que les fichiers sont maintenant dans l’index.
Pour les enregistrer dans l’historique, on fait :
$ git commit -m "mon message"
Il faut prendre soin d’avoir des messages clairs pour s’y retrouver.
Par la suite, on peut directement faire un commit sur les fichiers
connus de git
avec l’option -a
.
$ git commit -a -m "mon message"
ou plus simplement :
$ git commit -am "mon message"
On peut aussi ajouter les fichiers connus dans l’index avec :
$ git add -u .
Cela permet entre-autre de n’ajouter qu’une partie des fichiers contrairement à l’option -a
de commit
.
Si certains fichiers ne doivent pas être enregistrés dans git,
il faut les ajouter dans le fichier .gitignore
.
Se déplacer dans l’historique
Pour se déplacer sur un commit, il faut récupérer sa clé dans le log, et faire :
$ git checkout xxxxxxxxxxxxxxxx
Avec git log
on voit bien qu’on est remonté,
et on peut observer que les fichiers sont revenu dans leur état antérieur.
Pour revenir au dernier commit, on fait :
$ git checkout master
Cela permet de se balader facilement dans l’historique.
Partage
Quand on travaille à plusieurs, il est utile d’avoir un dépôt central partagé, autrement appelé remote.
Pour récupérer un projet existant :
$ git clone <url>
L’URL est fourni sur l’interface web du dépôt.
Pour créer un projet partagé (sur GitHub par exemple),
le plus simple est de le créer sur le dépôt central
(sur GitHub : New Repository en indiquant que l’on veut créer le fichier
README).
On peut ensuite le récupérer (avec git clone
).
Après avoir bien travaillé et fait des commit locaux comme on l’a vu plus haut, il faut transférer tout ça sur le dépôt avec :
$ git push origin master
origin
est le nom générique pour le dépôt central. On pourrait très bien avec plusieurs dépôts avec des noms différents.master
est le nom de la branche principale sur laquelle on a travaillé jusqu’ici.
Si quelqu’un d’autre a fait des modifications dans le dépôt, on les récupère avec :
$ git pull origin master
Explorer qui a fait quoi
Pour savoir qui a écrit une certaine ligne, on utilise :
$ git blame un_fichier
On voit alors pour chaque ligne, les informations du dernier commit qui y a été effectué.
On peut aussi faire :
$ git show xxxxxx
Ici, xxxxxx
est le début de clé indiqué par blame
,
et le résultat de la commande montre ce qu’il s’est passé dans ce commit.
Mettre de côté
Si on a besoin de faire rapidement une modification, mais qu’on n’a pas fini ce qu’on était en train de faire, on n’a pas envie de faire un commit qui n’aurait pas grand sens. La commande suivante permet de mettre temporairement de côté ce qu’on était en train de faire :
$ git stash
On peut maintenant faire la modification urgente, faire le commit, puis reprendre le travail en cours en faisant:
$ git stash pop
On peut aussi avoir besoin de stash
si on a besoin de changer de branche :
$ git stash
$ git checkout master
...
$ git commit -am ...
$ git checkout ma_branche
$ git stash pop
Attention :
Proposer une modification
L’action s’appelle pull-request
.
Pour commencer, s’il s’agit d’un projet externe,
il faut commencer par faire un fork
: c’est-à-dire faire une copie du projet
dans son propre compte.
Ensuite, il faut créer une branche, y faire les modifications,
et la transférer sur le dépôt. Depuis l’interface web,
on peut ensuite faire une pull-request
.
Il faut alors écrire un message à la personne qui doit faire la validation
pour expliquer la modification proposée.
Documentation
- la doc officielle ;
- le cours OpenClassroom ;
- l’aide GitHub : très bien faite ;
- antisèche interactive pour retrouver les commandes ;
- une bonne présentation des concepts de base de git ;
Voir aussi :
- Git : déménagement d'un dépôt
- Git rebase : pour diviser un commit
- Git submodule
- Git : pour extraire de l'information
- Git bisect : pour trouver l'origine d'une régression
- Git tag : pour nommer des versions
- Git archive : exporter du contenu
- Git subtree : créer un nouveau dépôt à partir du répertoire d'un autre dépôt
- Git : au sujet des pull requests
- Git : les branches
- Git : comment corriger des erreurs
- Git diff : voir les différences
- Git clean : grand nettoyage
- Mercurial : encore un gestionnaire de version
- SVN : gestion de version
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit