GIT – Ligne de commande principale
Git est un système de contrôle de version décentralisé largement utilisé pour la gestion du code source des logiciels. Il a été développé par Linus Torvalds en 2005 pour le développement du noyau Linux, et est depuis devenu l’un des systèmes de contrôle de version les plus populaires.
Git permet aux développeurs de travailler sur le même code source de manière simultanée et d’enregistrer les modifications effectuées à chaque étape. Il permet également de fusionner les différentes branches de développement et de gérer les conflits qui peuvent survenir lors de ces opérations.
Git est souvent utilisé en conjonction avec des services d’hébergement de code source tels que GitHub, GitLab et Bitbucket, qui permettent aux développeurs de partager leur code source avec d’autres développeurs et de collaborer à des projets en ligne. Git est considéré comme un outil essentiel pour les développeurs de logiciels, car il permet de maintenir un historique clair et organisé des changements apportés au code source.
Voyons quelques commandes indispensables.
Rappel
Ne pas oublier : l’aide en ligne de commande.
git help config git help push git help pull git help branch
Configuration
# Identity Name git config --global user.name "aquelito" # Identity Email git config --global user.email "axel@aquelito.fr" # Editor Tool git config --global core.editor subl # Diff Tool git config --global merge.tool filemerge
Liste des globals
git config --list
Status des fichiers
git status
Lister les branchs
git branch -a
*
sur la branche courante.
Créer une branch
# Deux lignes: créer et basculer sur la nouvelle branch git branch nom_de_ma_branch_nouvelle git checkout nom_de_ma_branch_nouvelle # Une seule ligne: créer et basculer git checkout -b nom_de_ma_branch_nouvelle
Supprimer une branch
# Si la branch est local et n'est pas créée sur le repo distant git branch -d nom_de_ma_branch_local # Si la branch est présente sur le repo distant git push origin --delete nom_de_ma_branch_distante
Changer de branch
git checkout nom_de_ma_branch # GIT --version 2.23 git switch nom_de_ma_branch
Premier commit
git add . git commit -m "initial commit"
Commit suivant
git add chemin_vers_mon_fichier git commit -m "message du commit"
Annuler le dernier commit et modifs
git reset --hard md5_commit git push --force
Antidaté un commit.
git add . GIT_AUTHOR_DATE="2015-12-12 08:32 +100" git commit -m "Commit antidaté"
Mettre à jour le dépôt local
git pull
Mettre à jour le dépôt local d’une branch spécifique
git pull origin MA_BRANCH
Envoyer ses commits vers le dépôt distant
git push
Envoyer ses commits vers le dépôt distant sur une branch spécifique
git push origin MA_BRANCH
Supprimer un fichier du répertoire de travail et de l’index
git rm nom_du_fichier
Supprimer un fichier de l’index
git rmg --cached nom_du_fichier
Annuler commits (soft)
Seul le commit est retiré de Git ; vos fichiers, eux, restent modifiés. Vous pouvez alors à nouveau changer vos fichiers si besoin est et refaire un commit.
Annuler le dernier commit
git reset HEAD^
Pour indiquer à quel commit on souhaite revenir, il existe plusieurs notations :
- HEAD : dernier commit ;
- HEAD^ : avant-dernier commit ;
- HEAD^^ : avant-avant-dernier commit ;
- HEAD~2 : avant-avant-dernier commit (notation équivalente) ;
- d6d98923868578a7f38dea79833b56d0326fcba1 : indique un numéro de commit ;
- d6d9892 : indique un numéro de commit version courte.
Annuler commits (hard)
Si vous voulez annuler votre dernier commit et les changements effectués dans les fichiers, il faut faire un reset hard. Cela annulera sans confirmation tout votre travail !
Annuler les commits et perdre tous les changements
git reset --hard HEAD^
Annuler les modifications d’un fichier avant un commit
Si vous avez modifié plusieurs fichiers mais que vous n’avez pas encore envoyé le commit et que vous voulez restaurer un fichier tel qu’il était au dernier commit :
git checkout nom_du_fichier # GIT --version 2.23 git restore nom_de_ma_branch
Annuler/Supprimer un fichier avant un commit
Supposer que vous venez d’ajouter un fichier à Git avec git add
et que vous vous apprêtez à le « commiter ». Cependant, vous vous rendez compte que ce fichier est une mauvaise idée et vous voulez annuler votre git add
.
Il est possible de retirer un fichier qui avait été ajouté pour être « commité » en procédant comme suit :
git reset HEAD -- nom_du_fichier_a_supprimer
# Affiche la différence entre le contenu du dernier commit et celui du # répertoire de travail. Cela correspond à ce qui serait commité par git commit -a. git diff HEAD # Affiche la différence entre le contenu pointé par A et celui pointé par B. git diff A B # Diff entre un dossier présent sur deux branches git diff master..MA_BRANCH chemin/vers/mon_dossier
Modifier le message du dernier commit
git commit --amend
La commande ci-dessus charge le dernier message dans l’éditeur,
- Modifier message ;
- Enregistrer et quitter l’éditeur afin de prendre les modifs en compte.
Ajouter des fichiers au dernier commit
git add mon_fichier git commit --amend
Éditer l’historique avec rebase
# Historique des trois derniers commits git rebase -i HEAD~3
Ce qui va affichier ceci dans votre éditeur de texte.
pick 6cbdbe2 Message du commit 3 pick 0a75a2d Message du commit 2 pick da74a4e Message du commit 1 # Rebase b8d6fe1..da74a4e onto b8d6fe1 (3 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # d, drop = remove commit # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out
Chaque commit est précédé du mot pick
, utiliser tous les mots-clés possibles.
- Pour éditer, un commit changer
pick
paredit
; - Enregistrer et quitter l’éditeur afin de prendre les modifs en compte ;
- Et suivre les instructions.
Pour valider, les changements utiliser la commande :
git rebase NOM_DE_MA_BRANCH
Dans le cas, ou les commits modifier sont déjà présent sur la branch distante, il faura “forcer”
git push --force origin NOM_DE_MA_BRANCH
title | category |
---|---|
Log | Git |
# Classique git log # Affiche X derniers commits git log -n X # Affiche les commits concernant un dossier git log --oneline -- chemin/vers/mon_dossier # Affiche un ensemble de commits par date git log --since=date --until=date # Représentation de l’historique à partir de HEAD (commit / branch) git log --oneline --graph --decorate # Représentation de l’historique à partir d'un fichier (commit / branch) git log --oneline --graph --decorate nom_du_fichier
title | category |
---|---|
Créer une release | Git |
Créer une nouvelle branche release/aaaammyy_xx
$ git checkout -b release/20140707_01 dev
Modifier le numéro de version dans le fichier racine READ.md.
$ git commit -a -m "Bumped version 20140707_01"
Se mettre sur la branche dev
et :
$ git merge release/20140707_01
Pour finaliser la release, merger les corrections éventuelles sur la master
et la dev
$ git checkout master && git merge --no-ff release/20140707_01 && git push origin master $ git checkout dev && git merge --no-ff release/20140707_01 && git branch -d release/20140707_01 && git push origin dev
Marquage de la version sur la branch master
$ git tag -a 20140707_01 -m "New prod 20140707_01" master && git push origin master --tags
Retourne la liste des tags disponible
git tag # ou git tag -l git tag --list
Créer un tag
# `-m` permet d'ajouter un message associé au tag git tag -a v1.0 -m "Mon commentaire pour la version 1.0" # Ajouter un tag à partir d'un commit anterieur git tag -a v1.0 -m "Mon commentaire pour la version 1.0" md5_commit
Vérifier un tag en affichant les informations
git tag -v nom_de_l_étiquette
Pousser les tags sur la branch distante
git push origin nom_de_l_étiquette # Pousser plusieurs tags sur la branch git push origin --tags
Initialiser un projet
cd chemin/vers/mon_dossier echo "# MON_PROJET" >> README.md git init git add README.md git commit -m "Initial commit" git remote add origin ....git git push -u origin master
Récuperer le repo sur Github
git clone ....git chemin/vers/mon_dossier
Mon repo est composé d’au moins deux branch.
develop : dédié au développement et résolution de bug. master : reflète le code en production. Personne ne doit travailler directement sur cette branch.
Pour récupérer votre branch develop
git branch -a git checkout origin/develop git checkout -b develop origin/develop git branch
Developpement : Branch develop
Prod : Branch Master
# On se met sur la branche master git checkout master # On merge la branche develop git merge develop # Pour pousser les changements git push origin master # Penser à revenir sur develop git checkout develop