command-line:git
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
command-line:git [le 08/02/2013 à 16:17] – traduit staged en indexé Yosko | command-line:git [le 23/02/2015 à 16:49] – [Git] Yosko | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Git ====== | ====== Git ====== | ||
Quelques rappels de base sur l' | Quelques rappels de base sur l' | ||
+ | |||
+ | {{simplenavi>: | ||
//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 " | //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 " | ||
- | ===== Général | + | ===== En vrac ===== |
- | + | Trucs à inclures dans de futures articles et a rédiger proprement | |
- | ==== Configurer Git ==== | + | |
- | Configurer son environnement : | + | |
<code bash> | <code bash> | ||
- | # modifier la configuration pour tous les utilisateurs | + | git show --summary |
- | git config | + | |
- | # modifier la configuration pour l' | + | |
- | git config --global < | + | |
- | # modifier la configuration pour le projet courant | + | |
- | git config | + | |
- | </ | + | |
- | Lire la configuration : | + | #ignore specific files that are already in the repo and the working directory |
- | <code bash> | + | # |
- | # consulter la configuration | + | git update-index --assume-unchanged |
- | git config | + | #revert |
- | # consulter tous les éléments de configuration | + | git update-index --no-assume-unchanged < |
- | git config | + | |
</ | </ | ||
- | Configurations utiles (celles à faire avant d' | + | [[http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html|Infos sur le "assume-unchanged"]]. |
- | <code bash> | + | |
- | git config --global user.name | + | |
- | git config --global user.email | + | |
- | + | ||
- | git config --system https.proxy | + | |
- | //or | + | |
- | git config --system https.proxy http://< | + | |
- | </code> | + | |
- | + | ||
- | ==== Aide ==== | + | |
- | + | ||
- | <code bash>git help < | + | |
- | + | ||
- | ===== Projet : gestion de base ===== | + | |
- | //Note : toutes les commandes relatives à un projet doivent être effectuée après s' | + | |
- | <code bash>cd / | + | |
- | #les lecteurs " | + | |
- | cd /d/project-directory/ | + | |
- | + | ||
- | ==== Configurer un projet ==== | + | |
- | Initialiser le projet (créé un sous-dossier " | + | |
- | <code bash>git init</ | + | |
- | + | ||
- | === Nouveau projet === | + | |
- | + | ||
- | " | + | |
- | <code bash> | + | |
- | git add < | + | |
- | </ | + | |
- | Exemples : | + | |
- | <code bash> | + | |
- | git add fichier.c | + | |
- | git add *.c | + | |
- | git add * | + | |
- | </ | + | |
- | //Note : sauf erreur de ma part, ' | + | |
- | + | ||
- | === Projet existant === | + | |
- | Pour partir d'un projet déjà présent dans un dépôt (repository) git (local ou distant) : | + | |
- | <code bash> | + | |
- | git clone < | + | |
- | git clone git://< | + | |
- | git clone http(s)://< | + | |
- | </ | + | |
- | //Note : un dossier < | + | |
- | + | ||
- | ==== Informations ==== | + | |
- | + | ||
- | === Etat des fichiers === | + | |
- | + | ||
- | Pour connaître l' | + | |
- | <code bash>git status</ | + | |
- | + | ||
- | Pour avoir des informations plus détaillées : | + | |
- | <code bash> | + | |
- | git diff # | + | |
- | git diff --cached | + | |
- | git diff --staged | + | |
- | </ | + | |
- | + | ||
- | === Historique : accès aux commits === | + | |
- | Lister les commits (et leurs commentaires) | + | |
- | <code bash> | + | |
- | git log | + | |
- | git log -p # | + | |
- | git log -< | + | |
- | git log --since=2.weeks | + | |
- | git log --stat | + | |
- | git log --pretty=format:" | + | |
- | </ | + | |
- | + | ||
- | ==== Préparer un commit ==== | + | |
- | Marquer un fichier comme prêt à être commité suite à modification se fait aussi via la commande git add. Il sera alors considéré comme indexé. | + | |
- | + | ||
- | Si on "git add" plusieurs fois d' | + | |
- | + | ||
- | ==== Commit ==== | + | |
- | Une fois les modifications indexées, on peut enfin commiter, c' | + | |
- | <code bash> | + | |
- | git commit | + | |
- | git commit -v #verbose: shows the diff while you write the comment | + | |
- | git commit -m " | + | |
- | git commit -a #skips the staged area and commit directly your version | + | |
- | </ | + | |
- | Un fichier texte s' | + | |
- | <code bash>git config --global core.editor | + | |
- | ...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 l' | + | |
- | <code bash>git commit --amend</ | + | |
- | ==== 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 | + | |
- | / | + | |
- | *.doc | + | |
- | !test.doc | + | |
- | thisDirectory/ | + | |
- | #or any glob syntax, including: [aoe], [0-9], *, ? | + | |
- | </ | + | |
- | + | ||
- | ==== Retirer des fichiers ==== | + | |
- | Pour supprimer un fichier partout : | + | |
- | <code bash> | + | |
- | git rm Supprime-Moi.txt | + | |
- | git commit -m " | + | |
- | </ | + | |
- | Git rm retire le fichier du dossier de travail et de la version indexée, donc il faut ensuite effectuer un commit pour appliquer la modif au dépôt. L' | + | |
- | + | ||
- | Par contre si vous ajoutez un fichier au .gitignore un peu tard et qu'il est déjà indexé 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 | + | |
- | </ | + | |
- | + | ||
- | ==== Déplacer/ | + | |
- | Comme la commande mv de linux. Cela évite de déplacer/ | + | |
- | <code bash>git mv source.txt directory/ | + | |
- | + | ||
- | ==== Désindexer ==== | + | |
- | Si vous avez ajouté à la version indexée un fichier et voulez l'en retirer : | + | |
- | <code bash>git reset HEAD monFichier.php</ | + | |
- | + | ||
- | ==== Annuler les modifications d'un fichier ==== | + | |
- | Si vous voulez écraser un fichier pour revenir à la dernière version indexée ou commitée | + | |
- | <code bash>git checkout -- monFichier.php</ | + | |
- | Attention cependant : toute modification apportée localement sera perdue. | + | |
- | + | ||
- | ===== Dépôts distants ===== | + | |
- | Les dépôts distantssont 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, | + | |
- | + | ||
- | ==== Informations ==== | + | |
- | <code bash> | + | |
- | git remote | + | |
- | git remote -v #same list with urls | + | |
- | </ | + | |
- | Chaque dépôt distant comporte un nom librement choisi par l' | + | |
- | + | ||
- | Plus de détails sur un dépôt distant : | + | |
- | <code bash> | + | |
- | git remote show custom-name | + | |
- | </ | + | |
- | + | ||
- | ==== Ajout d'un dépôt distant ==== | + | |
- | <code bash> | + | |
- | git remote add custom-name git:// | + | |
- | git remote add custom-name https:// | + | |
- | git remote add custom-name / | + | |
- | </ | + | |
- | + | ||
- | ==== Récupérer les données d'un dépôt distant ==== | + | |
- | <code bash> | + | |
- | git fetch custom-name | + | |
- | git pull custom-name | + | |
- | </ | + | |
- | Si fetch récupère les information, | + | |
- | + | ||
- | Quand on a récupéré un projet existant via clone, le nom attribué au dépôt distant est par défaut origin. Pour le mettre à jour par la suite : | + | |
- | <code bash> | + | |
- | git fetch origin | + | |
- | </ | + | |
- | + | ||
- | ==== Transmettre des données à un dépôt distant ==== | + | |
- | Lorsqu' | + | |
- | <code bash> | + | |
- | git push <remote name> <branch name> | + | |
- | </ | + | |
- | La branche par défaut est master, tout comme le nom de dépôt distant par défaut est origin. Souvent vous n' | + | |
- | <code bash> | + | |
- | git push origin master | + | |
- | </ | + | |
- | //Note : certains serveurs ne vous seront accessible qu'en lecture : vous pourrez faire des pull, mais pas de push// | + | |
- | + | ||
- | ==== Renommer/ | + | |
- | <code bash> | + | |
- | git remote rename old-name new-name | + | |
- | git remote rm custom-name | + | |
- | </ | + | |
- | + | ||
- | ===== Tag : étiquetter ses version ===== | + | |
- | Les tags sont des étiquettes ajoutées au dépôt qui servent juste à désigner une étape importante dans le développement, | + | |
- | + | ||
- | <code bash> | + | |
- | git tag # | + | |
- | git tag -a <tag name> -m < | + | |
- | git tag -a v1.2 -m "My favorite version" | + | |
- | git show v1.2 # | + | |
- | </ | + | |
- | Comme on le voit, ces tags (" | + | |
- | + | ||
- | Par opposition, il existe aussi des tags " | + | |
- | <code bash> | + | |
- | git tag v1.3b1 | + | |
- | </ | + | |
- | Ces tags seront listé avec les autres, mais si on fait un show dessus, on retirera moins d' | + | |
- | + | ||
- | 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 " | + | |
- | </ | + | |
- | + | ||
- | ==== 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 | + | |
- | </ | + | |
- | Les tags " | + |
command-line/git.txt · Dernière modification : le 09/02/2017 à 10:40 de Yosko