Let's work on getting perfect codes
In: GIT
3 sept 2009Certaines 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>
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
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.
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"
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
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 ».
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 :
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.
8 Responses to Commandes de base GIT
Clément
septembre 3rd, 2009 at 12:33
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
Ads
Damien
septembre 3rd, 2009 at 12:39
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
creatix
septembre 3rd, 2009 at 13:22
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?
Damien
septembre 3rd, 2009 at 13:27
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 »).
creatix
septembre 3rd, 2009 at 13:34
D’accord merci de l’explication.
Neovov
septembre 3rd, 2009 at 17:03
Merci
.
brice
septembre 11th, 2009 at 16:02
Merci, vraiment. C’était juste ce qu’il me fallait.
Joris
septembre 20th, 2009 at 4:47
Hop, dans mes fav’