Outils pour utilisateurs

Outils du site


command-line:git

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
command-line:git [le 08/02/2013 à 16:08] – Ajout git tag Yoskocommand-line:git [le 09/02/2017 à 10:40] (Version actuelle) Yosko
Ligne 1: Ligne 1:
 ====== Git ====== ====== Git ======
 Quelques rappels de base sur l'utilisation du gestionnaire de version [[http://fr.wikipedia.org/wiki/Git|Git]]. Quelques rappels de base sur l'utilisation du gestionnaire de version [[http://fr.wikipedia.org/wiki/Git|Git]].
 +
 +{{simplenavi>:command-line:git}}
  
 //Note : les principaux éléments indiqués ici sont déstinés à une utilisation sous Windows avec le shell msysGit. Cela signifie que les lignes de commande seront "linux-style", mais que les chemin et logiciels utilisés seront "windows-style".// //Note : les principaux éléments indiqués ici sont déstinés à une utilisation sous Windows avec le shell msysGit. Cela signifie que les lignes de commande seront "linux-style", mais que les chemin et logiciels utilisés seront "windows-style".//
  
-===== Général =====+Lien utile : [[https://www.cloudways.com/blog/git-cheat-sheet/]]
  
-==== Configurer Git ==== +===== En vrac ===== 
-Configurer son environnement :+Trucs à inclures dans de futures articles et a rédiger proprement
 <code bash> <code bash>
-# modifier la configuration pour tous les utilisateurs +git show --summary #summary of last commit
-git config --system <clé> <valeur> +
-modifier la configuration pour l'utilisateur connecté +
-git config --global <clé> <valeur> +
-# modifier la configuration pour le projet courant +
-git config          <clé> <valeur> +
-</code>+
  
-Lire la configuration : +#ignore specific files that are already in the repo and the working directory 
-<code bash> + useful for debug purpose modifications 
-consulter la configuration +git update-index --assume-unchanged <file
-git config          <clé+#revert 
-consulter tous les éléments de configuration +git update-index --no-assume-unchanged <file>
-git config --list+
 </code> </code>
  
-Configurations utiles (celles à faire avant d'utiliser git) : +[[http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html|Infos sur le "assume-unchanged"]].
-<code bash> +
-git config --global user.name   "Name" +
-git config --global user.email  name@domain.com +
- +
-git config --system https.proxy http://<proxy-url>:<proxy-port> +
-//or +
-git config --system https.proxy http://<login>:<password>@<proxy-url>:<proxy-port> +
-</code> +
- +
-==== Aide ==== +
- +
-<code bash>git help <command></code> +
- +
-===== Projet : gestion de base ===== +
-//Note : toutes les commandes relatives à un projet doivent être effectuée après s'être placé dans le dossier du projet// +
-<code bash>cd /to/the/source/directory +
-#les lecteurs "windows" sont indiqués par /d/ au lieu de D:\ dans le bash de git +
-cd /d/project-directory/source-directory</code> +
- +
-==== Configurer un projet ==== +
-Initialiser le projet (créé un sous-dossier ".git") : +
-<code bash>git init</code> +
- +
-=== Nouveau projet === +
- +
-"Ajouter" chaque fichier source qu'on veut versionner à git : +
-<code bash> +
-git add <filepattern> +
-</code> +
-Exemples : +
-<code bash> +
-git add fichier.c +
-git add *.c +
-git add * +
-</code> +
-//Note : sauf erreur de ma part, '*' ne prend pas en compte les sous-répertoires et leurs contenus.// +
- +
-=== Projet existant === +
-Pour partir d'un projet déjà présent dans un repository git (local ou distant) : +
-<code bash> +
-git clone <local-path>/<project>.git +
-git clone git://<git-url>/<project>.git +
-git clone http(s)://<url>/<project>.git +
-</code> +
-//Note : un dossier <project> sera créé. Il faut donc se placer dans le dossier parent de celui où on voudra placer les sources.// +
- +
-==== Informations ==== +
- +
-=== Etat des fichiers === +
- +
-Pour connaître l'état d'un fichier (untracked, modified, staged, etc...) : +
-<code bash>git status</code> +
- +
-Pour avoir des informations plus détaillées : +
-<code bash> +
-git diff           #compare your version with your staged version +
-git diff --cached  #compare your staged version and the last commited version +
-git diff --staged  #same as --cached +
-</code> +
- +
-=== Historique : accès aux commits === +
-Lister les commits (et leurs commentaires) +
-<code bash> +
-git log +
-git log -p         #shows the diff introduced in each commit +
-git log -<number>  #shows only the last <number> commits +
-git log --since=2.weeks  #shows only commits for the past 2 weeks +
-git log --stat     #gives a few stats (nb of files changed, lines added or removed) +
-git log --pretty=format:"%h %s" --graph  #shows a view of branches and merges +
-</code> +
- +
-==== Préparer un commit ==== +
-Marquer un fichier comme prêt à être commité suite à modification se fait aussi via la commande git addIl sera alors considéré comme "staged"+
- +
-Si on "git add" plusieurs fois d'affilé un même fichier (suite à des modifs), seule la dernière version est conservée, tandis que si on effectue un commit à chaque fois, alors toutes les versions seront dans le repository. +
- +
-==== Commit ==== +
-Une fois les modifications "staged", on peut enfin commiter, c'est-à-dire transmettre cette version "staged" au repository (qu'il soit local ou distant). +
-<code bash> +
-git commit +
-git commit -v              #verbose: shows the diff while you write the comment +
-git commit -m "Message..." #to write the commit comment directly in command-line +
-git commit -a              #skips the staged area and commit directly your version +
-</code> +
-Un fichier texte s'ouvre dans l'éditeur de texte défini par défaut dans la config de git, pour permettre la saisie du commentaire du commit. +
-<code bash>git config --global core.editor "'C:\Program Files\Sublime Text 2\sublime_text.exe' -w"</code> +
-...pour définir Sublime Text 2 comme éditeur par défaut. +
- +
-Si vous commettez un erreur lors de votre dernière commit, il est toujours possible de la rattraper. Après avoir apporté la modification en local puis à la version "staged"+
-<code bash>git commit --amend</code> +
-==== Ignorer des fichiers ==== +
-Pour exclure certains fichiers ou types de fichiers de nos commit, il faut créer un fichier .gitignore et y lister les éléments à exclure. +
-<code bash> +
-file.ext +
-/README         #ignore the root README, but not ones in subdirectories +
-*.doc +
-!test.doc       #exception for rules listed above : test.doc will NOT be ignored +
-thisDirectory/  #...and everything in it +
-#or any glob syntax, including: [aoe], [0-9], *, ? +
-</code> +
- +
-==== Retirer des fichiers ==== +
-Pour supprimer un fichier partout : +
-<code bash> +
-git rm Supprime-Moi.txt +
-git commit -m "Suppression de fichier inutile" +
-</code> +
-Git rm retire le fichier du dossier de travail et de la version "staged", donc il faut ensuite effectuer un commit pour appliquer la modif au repository. L'historique du fichier reste dans le repository. +
- +
-Par contre si vous ajoutez un fichier au .gitignore un peu tard et qu'il est déjà "staged" ou commité, il faut ajouter --cached à la commande. Le comportement sera identique sauf que le fichier ne sera pas supprimé du dossier de travail. +
-<code bash> +
-git rm --cached Supprime-Moi.txt +
-</code> +
- +
-==== Déplacer/Renommer un fichier ==== +
-Comme la commande mv de linux. Cela évite de déplacer/renommer le fichier à la main, puis de supprimer l'ancien des fichiers "staged" et d'y ajouter le nouveau. +
-<code bash>git mv source.txt directory/destination.txt</code> +
- +
-==== "Unstaged" ==== +
-Si vous avez ajouté à la version "staged" un fichier et voulez l'en retirer : +
-<code bash>git reset HEAD monFichier.php</code> +
- +
-==== Annuler les modifications d'un fichier ==== +
-Si vous voulez écraser un fichier pour revenir à la dernière version "staged" ou commitée +
-<code bash>git checkout -- monFichier.php</code> +
-Attention cependant : toute modification apportée localement sera perdue. +
- +
-===== Remote repositories ===== +
-Les remotes sont des répertoires hébergeant les versions d'un projet généralement à distance (internet, réseau). Cela permet d'y conserver toutes les sauvegardes, d'y travailler à plusieurs, etc... +
- +
-==== Informations ==== +
-<code bash> +
-git remote          #lists all remotes configured for the current project +
-git remote -v       #same list with urls +
-</code> +
-Chaque remote comporte un nom librement choisi par l'utilisateur +
- +
-Plus de détails sur un remote : +
-<code bash> +
-git remote show custom-name +
-</code> +
- +
-==== Ajout d'un remote ==== +
-<code bash> +
-git remote add custom-name git://git@domain.com/path/project.git +
-git remote add custom-name https://domain.com/path/project.git +
-git remote add custom-name /d/path/to/local/remote/project.git +
-</code> +
- +
-==== Récupérer les données d'un remote ==== +
-<code bash> +
-git fetch custom-name +
-git pull custom-name +
-</code> +
-Si fetch récupère les information, il ne les fusionne pas avec les versions locales, contrairement à pull. +
- +
-Quand on a récupéré un projet existant via clone, le nom attribué au remote est par défaut origin. Pour le mettre à jour par la suite : +
-<code bash> +
-git fetch origin +
-</code> +
- +
-==== Transmettre des données à un remote ==== +
-Lorsqu'on commit, la version est stockée dans le repository local (sous-répertoire .git de notre projet). Pour transmettre ces données au remote repository : +
-<code bash> +
-git push <remote name> <branch name> +
-</code> +
-La branche par défaut est master, tout comme le nom de remote par défaut est origin. Souvent vous n'aurez qu'à faire : +
-<code bash> +
-git push origin master +
-</code> +
-//Note : certains serveurs ne vous seront accessible qu'en lecture : vous pourrez faire des pull, mais pas de push// +
- +
-==== Renommer/Retirer un remote ==== +
-<code bash> +
-git remote rename old-name new-name  #rename remote +
-git remote rm custom-name            #remove remote +
-</code> +
- +
-===== Tag : étiquetter ses version ===== +
-Les tags sont des étiquettes ajoutées au repository qui servent juste à désigner une étape importante dans le développement, comme par exemple un numéro de version. +
- +
-<code bash> +
-git tag                             #lists existing tags +
-git tag -a <tag name> -m <message>  #adds a tag +
-git tag -a v1.2 -m "My favorite version" +
-git show v1.2                       #shows information about this tag +
-</code> +
-Comme on le voit, ces tags ("annotated tags") sont en quelque sorte des commits qui n'apporteraient aucun changement au code. +
- +
-Par opposition, il existe aussi des tags "léger" ("lightweight"), en quelque sorte temporaires. Pour cela, on n'ajoute pas d'option à la commande, sauf le nom du tag : +
-<code bash> +
-git tag v1.3b1 +
-</code> +
-Ces tags seront listé avec les autres, mais si on fait un show dessus, on retirera moins d'informations. +
- +
-Si on souhaite ajouter les tags après coup, alors qu'on a fait des commits depuis, on peut préciser après quel commit insérer le tag en ajouter le début de son checksum en fin de commande : +
-<code bash> +
-git tag -a v1.1 -m "J'avais oublié celui-là" 305bdd6 +
-</code> +
- +
-==== Partager les tags ==== +
-Par défaut, ces tags ne sont pas transmis par push, à moins de le préciser : +
-<code bash> +
-git push origin --tags +
-</code> +
-Les tags "légers" seront aussi transmis.+
command-line/git.1360339705.txt.gz · Dernière modification : le 08/02/2013 à 16:08 de Yosko