$ git init # Lit et assigne quelques variables (globales) de configuration de base $ git config --global user.email "monEmail@foo.com" $ git config --global user.name "Mon nom" # Vérifie rapidement les commandes disponibles $ git help # Vérifie toutes les commandes disponibles $ git help -a # Aide pour une commande spécifique - manuel utilisateur # git help $ git help add $ git help commit $ git help init # ou git --help $ git add --help $ git commit --help $ git init --help $ echo "temp/" >> .gitignore $ echo "cle_privee" >> .gitignore # Affiche la branche, les fichiers non suivis, les changements et autres différences $ git status # Pour en apprendre plus sur git status $ git help status # rajoute un fichier dans votre répertoire de travail actuel $ git add HelloWorld.java # rajoute un fichier dans un répertoire imbriqué $ git add /path/to/file/HelloWorld.c # Gestion des expressions régulières ! $ git add ./*.java # Liste les branches existantes et distantes $ git branch -a # Créé une nouvelle branche $ git branch maNouvelleBranche # Supprime une branche $ git branch -d maBranche # Renomme une branche # git branch -m $ git branch -m nomDeMaBranche nouveauNomDeMaBranche # Edite la description d'une branche $ git branch nomDeMaBranche --edit-description # Liste les étiquettes $ git tag # Créé une étiquette annotée # L'option -m spécifie un message qui sera stockée dans l'étiquette. # Si vous ne spécifiez pas de message pour une étiquette annotée, # Git lance votre éditeur pour que vous puissiez le saisir. $ git tag -a v2.0 -m 'ma version 2.0' # Affiche des informations à propos de l'étiquette # comprenant des informations sur l'auteur, la date du commit correspondant, # et le message d'annotation avant d'afficher les informations du commit. $ git show v2.0 # Pousse une seule étiquette dans le dépôt distant $ git push origin v2.0 # Pousse beaucoup d'étiquettes dans le dépôt distant $ git push origin --tags # Obtenir une copie de travail du dépôt - par défaut on prend la branche master $ git checkout # Bascule vers une branche spéficiée $ git checkout nomDeLaBranche # Créé une nouvelle branche et bascule sur celle-ci # Revient à faire "git branch ; git checkout " $ git checkout -b nouvelleBranche # Clone learnxinyminutes-docs $ git clone https://github.com/adambard/learnxinyminutes-docs.git # Clone superficiel ("shallow clone") - clone plus rapide qui récupère seulement le dernier instantané ("snapshot") $ git clone --depth 1 https://github.com/adambard/learnxinyminutes-docs.git # Clone seulement une branche spécifique $ git clone -b master-cn https://github.com/adambard/learnxinyminutes-docs.git --single-branch # Commit avec un message $ git commit -m "Ajout de la fonction multiplierNombres() dans HelloWorld.c" # Rajoute automatiquement dans l'index les fichiers modifiés ou supprimés, # à l'exception des nouveaux fichiers, puis commit $ git commit -a -m "Modification de foo.php et suppression de bar.php" # Change le dernier commit (ceci supprime le commit précédent avec un # nouveau commit) $ git commit --amend -m "Message corrigé" # Affiche les différences entre votre répertoire de travail et l'index $ git diff # Affiche les différences entre l'index et le plus récent commit. $ git diff --cached # Affiche les différences entre votre répertoire de travail et le plus récent # commit $ git diff HEAD # Merci à Travis Jeffery pour ce qui suit # Affiche les numéros des lignes dans les résultats de la recherche grep $ git config --global grep.lineNumber true # Rend les résultats de recherche plus lisibles, en incluant les groupements $ git config --global alias.g "grep --break --heading --line-number" # Recherche de "nomDeVariable" dans tous les fichiers java $ git grep 'nomDeVariable' -- '*.java' # Recherche une ligne contenant "nomDeTableau", et "rajouter" ou "enlever" $ git grep -e 'nomDeTableau' --and \( -e rajouter -e enlever \) # Montre tous les commits $ git log # Montre seulement les messages de commits et leur référence $ git log --oneline # Montre seulement les commits commits des merges (fusions) $ git log --merges # Fusionne la branche spécifiée dans la branche courante. $ git merge nomDeBranche # Génère toujours un commit quand on fusionne $ git merge --no-ff branchName # Renomme un fichier $ git mv HelloWorld.c HelloNewWorld.c # Déplace un fichier $ git mv HelloWorld.c ./new/path/HelloWorld.c # Force le renommage ou le déplacement # Si "fichierExistant" existe déjà dans le répertoire, il sera écrasé $ git mv -f monFichier fichierExistant # Met à jour votre dépôt local en y intégrant les changements # depuis la branche "master" du dépôt distant "origin". # git pull $ git pull origin master # Par défaut, git pull mettra à jour votre branche actuelle # en y intégrant les nouveaux changements venant de sa branche distante suivie $ git pull # Intègre les changements de la branche distante et "rebase" # les commits de la branche dans votre dépôt local, comme ceci: #"git pull , git rebase " $ git pull origin master --rebase # Pousse et fusionne les changements d'un dépôt local vers la branche # appelée "master" du dépôt distant "master". # git push $ git push origin master # Par défaut, git push poussera et fusionnera les changements de la branche # courante vers sa branche distante suivie. $ git push # Pour faire le lien entre la branche locale courante et sa branche distante, # rajouter l'option -u : $ git push -u origin master # Dorénavant, à chaque fois que vous voulez pousser depuis cette même branche # locale, utilisez ce raccourci : $ git push $ git stash Saved working directory and index state \ "WIP on master: 049d078 added the index file" HEAD is now at 049d078 added the index file (To restore them type "git stash apply") git pull $ git status # On branch master nothing to commit, working directory clean $ git stash list stash@{0}: WIP on master: 049d078 rajout du fichier index stash@{1}: WIP on master: c264051 annulation de "rajout de la taille_fichier" stash@{2}: WIP on master: 21d80a5 ajout des chiffres aux logs $ git stash pop # On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # # modified: index.html # modified: lib/simplegit.rb # # Expérimentation d'un rebase dans la branche "master" # git rebase $ git rebase master brancheExperience # Réinitialise la zone d'index afin de correspondre au dernier commit (laisse # le répertoire inchangé). $ git reset # Réinitialise la zone d'index afin de correspondre au dernier commit et # réécrit le répertoire de travail. $ git reset --hard # Déplace le pointeur de la branche courante au commit spécifié (laisse # le répertoire inchangé). Tous les changements existents toujours dans # le répertoire. $ git reset 31f2bb1 # Déplace le pointeur de la branche courante en arrière, au commit spécifié # et fait correspondre le répertoire de travail (supprime les changements # non commités et tous les commits après le commit spécifié). $ git reset --hard 31f2bb1 # Supprime HelloWorld.c $ git rm HelloWorld.c # Enlève un fichier d'un répertoire imbriqué. $ git rm /chemin/vers/le/fichier/HelloWorld.c