Git : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Documentation)
(Pour débuter)
 
(11 révisions intermédiaires par 6 utilisateurs non affichées)
Ligne 16 : Ligne 16 :
 
== Présentation ==
 
== Présentation ==
  
[http://fr.wikipedia.org/wiki/Git Git] est gestionnaire de versions, au même titre que [[Subversion]], développé à l'origine par Linus Torvalds pour faciliter sa gestion du développement de [[Linux]].
+
[http://fr.wikipedia.org/wiki/Git Git] est devenu en quelques années la référence des gestionnaires de versions. Il a été développé à l'origine par Linus Torvalds pour faciliter sa gestion du développement de [[Linux]].
 
+
Git présente un certain nombre d'avantages techniques par rapport à Subversion, la différence fondamentale étant que Git fait partie de la famille des gestionnaires de versions décentralisés (voir explications ci-dessous). Dans la même catégorie que Git, un autre très bon gestionnaire de versions est [[Mercurial]].
+
 
+
== Passage de SVN/CVS à Git ==
+
 
+
Il y a de nombreuses différences entre SVN et Git (Git est plus rapide, a un format de stockage beaucoup plus compact, ... voir par exemple http://whygitisbetterthanx.com/ pour une comparaison peu objective mais argumentée). On détaille ici la différence principale.
+
 
+
En "SVN" (et "CVS"), il y a un "dépôt unique" surlequel se synchronisent des "répertoires de travail". Au contraire en "Git", chaque "répertoire de travail" est en fait aussi un "dépôt" (dont l'historique se trouve dans le "<code>.git/</code>"). La supériorité de "Git" vient justement du fait qu'on peut synchroniser efficacement plusieurs dépôts entre eux.
+
 
+
En particulier, il y a en Git une notion de "dépôt nu" ("bare repository"), répertoire avec par convention une extension "<code>*.git</code>", et qui correspond à un cas particulier de dépôt: un dépôt sans répertoire de travail associé. Ce type de dépôt sert typiquement de "dépôt public" qu'on peut alimenter via son répertoire de travail (e.g. "dépôt privé") tout en profitant d'un mécanisme de gestion de versions propre à son "dépôt privé".
+
 
+
 
+
Les habitués de SVN voient la façon de faire de Git un peu comme [http://i.imgur.com/VQcG7bP.gif ça]. Le mieux pour passer de "SVN" à "Git" est en fait d'oublier "SVN" et de suivre un des tutoriels ci-dessous.
+
  
 
== À l'Ensimag ==
 
== À l'Ensimag ==
  
Git est installé sur les machines de l'Ensimag. Manifestez-vous par exemple auprès du service info ou de Matthieu.Moy@imag.fr si vous souhaitez une installation d'une version plus récente sur une de ces machines.
+
Git est installé sur les machines de l'Ensimag. Si vous souhaitez utiliser Git pour vos travaux collaboratifs (TP, projets), le plus simple est de créer un projet [[GitLab]] sur le serveur de l'école.
 
+
Si vous souhaitez utiliser Git pour vos travaux collaboratifs (TP, projets), vous trouverez cela sans doute commode de l'accompagner d'[[ACL]], histoire que seul votre binôme ait accès au dépôt.
+
  
 
== Installation chez vous ==
 
== Installation chez vous ==
Ligne 49 : Ligne 34 :
 
* [http://pcottle.github.io/learnGitBranching/ Learn Git Branching] : encore un site avec manipulations pratiques en ligne, pour comprendre comment Git fonctionne.
 
* [http://pcottle.github.io/learnGitBranching/ Learn Git Branching] : encore un site avec manipulations pratiques en ligne, pour comprendre comment Git fonctionne.
 
* [http://ndpsoftware.com/git-cheatsheet.html#loc=local_repo; Git CheatSheet] : résumé en une page des commandes principales (il y en a [http://help.github.com/git-cheat-sheets/ plein d'autres sur le web])
 
* [http://ndpsoftware.com/git-cheatsheet.html#loc=local_repo; Git CheatSheet] : résumé en une page des commandes principales (il y en a [http://help.github.com/git-cheat-sheets/ plein d'autres sur le web])
* [http://spheredev.org/wiki/Git_for_the_lazy Git for the lazy] : pour le moindre effort
+
* [https://wiki.spheredev.org/index.php/Git_for_the_lazy Git for the lazy] : pour le moindre effort
* Les [[Introduction au langage C#tutogit|supports de cours sur Git données en 1A Ensimag]].
+
* La [http://systemes.pages.ensimag.fr/www-unix/avance/ séance 1 sur Git du stage "Unix avancé" de 1A] (tuto, modèle, branches, historique)
 +
* Les [[Introduction au langage C#tutogit|anciens supports de cours de Projet C sur Git donnés en 1A Ensimag]].
 
* Un tuto est disponible sur le Wiki : [[TutoGIT]].
 
* Un tuto est disponible sur le Wiki : [[TutoGIT]].
 +
* Le [https://fr.wikibooks.org/wiki/Git wikibook sur Git en fançais]
  
 
=== Documentations plus complètes ===
 
=== Documentations plus complètes ===
Ligne 60 : Ligne 47 :
 
* La référence reste les [http://www.kernel.org/pub/software/scm/git/docs/ pages de  man], pour chaque commande, <code>man git-commande</code> (par exemple, [http://www.kernel.org/pub/software/scm/git/docs/git-commit.html man git-commit])
 
* La référence reste les [http://www.kernel.org/pub/software/scm/git/docs/ pages de  man], pour chaque commande, <code>man git-commande</code> (par exemple, [http://www.kernel.org/pub/software/scm/git/docs/git-commit.html man git-commit])
 
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Gitmagic]: un tutorial long et détaillé.
 
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Gitmagic]: un tutorial long et détaillé.
 +
* [https://learngitbranching.js.org/ Learn Git Branching.JS]: un tutorial relativement court sur les grands concepts autour des branches. Attention, il est tout en web. Il masque et raccourcie le superflu donc il est un peu trompeur pour un débutant (aucune édition de message de commit par exemple))
  
 
=== Pour comprendre comment marche Git ===
 
=== Pour comprendre comment marche Git ===
  
* [http://gitolite.com/gcs/ Git concepts simplified]
+
* [http://gitolite.com/gcs.html Git concepts simplified]
 +
 
 +
=== Documentations sur EnsiWiki, écrites pour vous ===
 +
 
 +
* [[Maintenir un historique propre avec Git]]
 +
* [[Gérer des branches avec Git]]
 +
* [[Écrire de bons messages de commit avec Git]]
 +
* [[Travailler avec plusieurs dépôts distants sur GitHub]]
 +
* [[Supprimer des fichiers binaires de l historique de commit avec Git]]
  
 
== Exemples d'organisation de projet à l'Ensimag avec Git ==
 
== Exemples d'organisation de projet à l'Ensimag avec Git ==

Version actuelle en date du 16 juillet 2020 à 15:14

Git

Environnement Windows, MacOS, Linux

Type Gestionnaire de versions
Licence GPLv2

Site Web http://git-scm.com/

Tux.png  Linux Apple.png  MacOS X Windows.png  Windows 

Présentation

Git est devenu en quelques années la référence des gestionnaires de versions. Il a été développé à l'origine par Linus Torvalds pour faciliter sa gestion du développement de Linux.

À l'Ensimag

Git est installé sur les machines de l'Ensimag. Si vous souhaitez utiliser Git pour vos travaux collaboratifs (TP, projets), le plus simple est de créer un projet GitLab sur le serveur de l'école.

Installation chez vous

L'installation est tout ce qu'il y a de plus classique. Si vous utilisez une distribution Linux ou un autre système doté d'un gestionnaire de paquets, installez simplement git (paquet "git-core" sous Ubuntu ou Debian, "dev-util/git" sous Gentoo, et généralement juste "git" ailleurs). Sinon, rendez vous sur la page de téléchargements du site officiel.

Documentation

Pour débuter

Documentations plus complètes

  • La documentation officielle est assez technique, mais un livre assez complet, assez convivial et même traduit en français est disponible : Pro Git (version française de Pro Git)
  • Vous pouvez également lire le tutorial officiel.
  • Ou directement vous attaquer au manuel utilisateur officiel (plus complet, pour ceux qui n'aiment pas connaître leurs outils trop superficiellement).
  • La référence reste les pages de man, pour chaque commande, man git-commande (par exemple, man git-commit)
  • Gitmagic: un tutorial long et détaillé.
  • Learn Git Branching.JS: un tutorial relativement court sur les grands concepts autour des branches. Attention, il est tout en web. Il masque et raccourcie le superflu donc il est un peu trompeur pour un débutant (aucune édition de message de commit par exemple))

Pour comprendre comment marche Git

Documentations sur EnsiWiki, écrites pour vous

Exemples d'organisation de projet à l'Ensimag avec Git

Quelques trucs à faire ou ne pas faire

  • Lorsque vous copiez pour la première fois les fichiers fournis par les profs dans votre dossier de travail, pensez à faire un commit, histoire d'avoir une version initiale canonique à laquelle vous référer, en cas de besoin, ou juste pour voir le travail accompli.
  • Il faut donner à vos collègues de projet les droits suffisants pour lire (et traverser) les fichiers et dossiers contenant le dépôt (inclus le dépôt lui-même). Pour cela, la meilleure solution, sur les serveurs élèves de l'Ensimag, est d'utiliser les ACL.
  • Si votre umask est trop restrictif, vous risquez d'avoir des problèmes, car git push ne rendra pas les fichiers du dépôt lisibles par ceux à qui ils sont destinés : vos collègues. Pas de panique, Git a prévu ce cas, il suffit de configurer le dépôt avec la commande suivante (à lancer dans le repository, cf. man git-config pour les détails) :
git config core.sharedRepository group
  • Git utilisera les programmes configurés dans vos variables d'environnement, en particulier PAGER, pour afficher le résultat de ses commandes et EDITOR, pour vous permettre d'éditer vos messages de commit. Par défaut, EDITOR vous donne vi(1), ce qui peut être déconcertant pour les débutants (ce message s'adresse en particulier aux gens qui voudraient faire travailler leur binôme moins geek qu'eux avec Git). PAGER vaut less(1), ce qui est bien pour les man pages, moins pour afficher trois lignes de statut ; aussi, vous pourriez avoir envie de le remplacer par more(1) ou bien de positionner LESS (la variable d'environnement contenant les options par défaut pour less(1)) à quelque chose comme "-FRSX", ce que Git fait par défaut quand LESS n'est pas positionné (les deux switches intéressants dans le tas sont -F et -X).