Certaines personnes, notamment Clément (et d’autres) m’ont demandé il y a quelques semaines de cela de rédiger un article sur les commandes GIT de base pour une utilisation console.
Déjà, sachez qu’il existe de multiples interfaces graphiques pour Windows et Mac.
Il en existe également pour Linux. Mais je n’ai rien trouvé qui ne convienne à mes exigences. Donc je fais tout en ligne de commande et j’utilise gitk pour visualiser les commits faits et en cours.
Je n’aborde ici que les commandes de base, pour le développement de tous les jours. Pas de notion de branches ou de tags donc.
A chacune des commandes ci-dessous, il faut précéder l’exécutable « git ». Nous aurons donc : git <nom de commande>
-
add
Permet d’ajouter des fichiers au prochain commit. Cette commande prends comme paramètre le nom du fichier ou du répertoire à ajouter.
Exemples :git add app/models/mon_model.rb
Ajoutera le fichier app/models/mon_model.rb à la liste des fichiers à committer.
git add app/models
Ajoutera tous les fichiers présents dans le dossier app/models dans la liste des fichiers à committer
git add .
Ajoutera tous les fichiers du projet à committer.
Evidemment seuls les nouveaux fichiers ou ceux modifiés seront ajoutés. C’est le principe même d’un SCM
-
rm
Vous l’aurez peut-être deviné, cette commande est l’inverse de add. Elle vous permet de supprimer un fichier du repository.
En effet un fichier supprimé physiquement n’est pas supprimé dans le repository. Il faut donc le faire via ce rm.
Note : si vous supprimer un fichier existant avec cette méthode, il sera supprimé physiquement.Exemples :
git rm app/models/mon_model.rb
Supprimera le fichier app/models/mon_model.rb
git rm -r app/models
Supprimera tous les modèles du projet.
Notez le -r qui force la récursivité car vous supprimez un répertoire. -
commit
Après avoir ajouté et supprimé tout plein de fichiers à notre prochain commit, il faut faire celui-ci !
La commande commit permet donc de valider les changements faits. Tant que vous n’avez pas committé, vous pouvez revenir en arrière (même après en fait. Mais on verra pas cela dans cet article).Exemple :
git commit -m "Un super message de description"
-
reset
Comme je disais, tant que vous n’avez pas committé, vous pouvez annuler des changements particulièrement simplement avec git reset.
Cette commande réinitialise tous les fichiers dans votre repository à leur état lors du dernier commit. Vous annulez donc tous les changements non committés et revenez sur une base propre.Exemple :
git reset --hard HEAD
-
push
Après avoir committé vos changements, il vous faut probablement pousser ceux-ci sur le repository distant afin de pouvoir partager vos modifications avec les autres développeurs du projet.
Ou bien tout simplement de pouvoir récupérer ces changements sur une autre machine (celle de test ou de production par exemple).Exemples :
git push
Poussera la branche courante sur le repository distant nommé « origin »
git push backup
Poussera la branche courante sur le repository distant nommé « backup »
git push backup V2
Poussera la branche nommée « V2″ sur le repository distant nommé « backup ».
-
pull
Pousser c’est bien. Mais il faut récupérer les données qui ont été poussées par vous sur une autre machine ou par un autre développeur.
Cette commande fonctionne avec exactement les même arguments que la précédente mais pour récupérer les données de votre repository.
Voila. Avec tout cela, vous pouvez :
- Ajouter, supprimer des fichiers et les committer
- Annuler une modification non committée
- Envoyer et récupérer les données sur un repository distant
Ce qui est, au final, les commandes GIT de tous les jours (dans l’utilisation que j’en fais du moins).
Peut-être ferais-je d’autres articles plus avancés au niveau de la gestion des branches ou de l’annulation d’un commit. Mais cela viendra dans un prochain article.





Merci à toi !! C’est super comme article !
Et maintenant : comment on fait pour ignorer un repertoire au commit ou supprimer un dossier/fichier présent sur le repository distant
?
Clément
Pas de problème
Pour ignorer un répertoire dans un seul commit, il suffit de ne pas faire de add dessus.
Pour l’ignorer complètement par GIT, il faut voir le .gitignore (pas précisé dans l’article car ce n’est pas une chose à laquelle on touche tous les jours).
http://www.kernel.org/pub/software/scm/git/docs/gitignore.html
Et pour supprimer un dossier/fichier présent sur le repository distant :
git pull
git rm -r dossier/a/supprimer
git push
C’est dans l’article ça
Sympa l’article mais une petite question, j’ai vu qu’il existe des rubriques « patch queue » dans les repertory. Comment fonctionne les patch? C’est une personne tiers qui fait des modifs et la propose?
En fait les patch queue, c’est une fonctionnalité de GitHub. Pas native à GIT.
GitHub ne fait que proposer de l’hébergement de repositories GIT.
Le fonctionnement du « patch queue » est le suivant : tu forke le repository afin de pouvoir committer sur une copie présente dans ton répertoire personnel.
Et le propriétaire du repository originel voit que tu a fait une modification et peut l’appliquer via l’interface graphique de GitHub à son propre projet.
Si on ne passe pas par GitHub, il faudrait que tu transmette ton commit (au format .diff grâce à la commande « git format-patch »).
D’accord merci de l’explication.
Merci
.
Merci, vraiment. C’était juste ce qu’il me fallait.
Hop, dans mes fav’