Menu

Git Commandes

Git Commandes

La gestion de cette outil est très importante car GitHub est avant tout un outil collaboratif donc un bon historique est primordial pour que :

  • tout les utilisateurs puissent s'y retrouver facilement
  • que la maintenence soit simple
  • que la lecture soit agréable pour tous

Renommer un les commit

Cette commande permet de changer les auteurs des commit en fonction la config global

1git -c rebase.instructionFormat='%s%nexec GIT_COMMITTER_DATE="%cD" GIT_AUTHOR_DATE="%aD" git commit --amend --no-edit --reset-author' rebase -f --root 2# possibiliter de changer --root par le sha ou HEAD~n 3

Pour git rebase -i HEAD~100

1git config --global core.editor "code --wait" 2

Pour intaller les var d'environnement de vsc

cdm + shift + p => Shell Command: Install 'code' command in PATH

Mise en place

Git config

Pour mettre en place une liaison entre Git et GitHub, la première étape est de configurer son environnement en liant Git à l'adresse mail du profil GitHub pour que les actions realisées soient associées aux profils :

1git config --global user.email [valid-email] 2# git config --global user.email totoDu33@toto.fr 3

Dans un même temps mettre en place le nom de l'utilisateur

1git config --global user.name "[firstname lastname]" 2# git config --global user.name "Toto Du33” 3

On peut en plus définir des fichiers que Git ignorera automatiquement

⚠️ Toujours penser au .gitignore pour les autres utilisateurs

1git config --global core.excludesfile '[file]' 2# git config --global core.excludesfile '~/.gitignore' 3

Git init

Pour relier un nouveau projet à Git ce qui créera un dossier masqué .git qut contiendra toutes les informations (commit, branch, historique, ...)

1git init 2

Commande de gestion de projet

Git clone

Pour recuperer un repo GitHub sur la machine local, je copie le chemin jusqu'à la racine du repo

1git clone [url ou SSH] 2# git clone git@github.com:Toto/Toto-projet.git 3

Git add

Cette commande permet d'ajouter des fichier au repo GitHub

Pour ajouter tout les fichiers :

1git add . 2

Pour ajouter un/des fichier(s) spécifique(s)

1git add [my_file] 2git add [my_file1] [my_file2] [...] 3

Git commit

Apres avoir ajouté un ou plusieurs fichier(s) le commit permet de créer un paquet de ses fichier et d'ajouter un message de description

Plus il y a de commit mieux c'est : l'historique GitHub est maintenu a jour

1git commit –m "Description du commit" 2# ou 3git commit [my_file1] -m "Description du commit" 4

Git push

Cette commande permet d'envoyer toute les modifications locales sur le repo GitHub

habitude classique :

  • git add .
  • git commit -m "blabla"
  • git push
1# pour créer une branche existante en local et envoyer son contenu sur un repo GitHub 2git push --set-upstream [remote] [branch] 3 4# pour envoyer le contenu sur une branche spécifique 5git push [remote] [branch] 6 7# une fois que les branches locales et GitHub sont reliés, un simple push suffit 8git push 9

Git pull

Pour mettre à jour son repo local avec toutes les modifications qui ont eu lieu sur GitHub

Cette commande met à jour toutes les branches et remote disponibles

  • branch A et B en local
  • branch C sur GitHub
  • git pull
    • branch A, B et C disponibles en local

Cette opération est à faire tres fréquemment quand on travaille en groupe sur un même repo pour ne pas avoir des differences d'historique (à combiner avec une bonne utilisation des branches)

1git pull 2 3# ou vers un autre remote 4git pull [remote] 5

Git branch

Les branches permettent de séparer le travail effectué et donc mieux s'oganiser

  • branch A je fais des truc
  • je crée une branche B depuis la brancheA
  • je casse tout sur la branche B
    • je me replace sur la branche A
    • et je supprime la branche B
  • la branche A est restée intacte

Pour voir toutes les branches

1# Les branches en local 2git branch 3 4# Toutes les branches et remotes reliées 5git branch -a 6

Pour créer une nouvelle branche à partir de la branche actuelle

1git branch [nom_branche] 2# Donc à l'initiation branch A === branch B 3

Pour supprimer une branche

1git branch –d [nom_branche] 2 3# -D pour la supprimer de force 4git branch -D [nom_branche] 5

Git checkout

Comme la commande git branch cette commande permet une gestion des branches légèrement différente

Pour cree une nouvelle branche

1git checkout [nom_branche] 2 3

Pour cree une nouvelle branche et se placer dessus directement

1git checkout -b [nom_branche] 2

Recap des branches Git

Personnelement j'ai pour habitude de séparer les commandes en fonction de ce que je veux faire

1# voir toutes les branches et remotes 2git branch -a 3 4# crée et se placer sur une nouvelle branche 5git checkout -b [nom_branch] 6 7# changer de branche 8git switch [nom_branch] 9 10# supprimer une branche 11git branch -d [nom_branch] 12 13# merge sur GitHub directement 14

Git merge

Cette opération permet de fusionner une branche sur une branche active

⚠️ Cette opération à réaliser de préférence sur GitHub directement pour des raisons de lisibilité et d'historique plus clair

branch B est à merge sur branch A

  • placement sur branch A
  • git merge branch B

branch A === branch A + branch B

1git merge [branch] 2

Git remote

Commande permettant d'ajouter une connexion a un repo distant

Voir toutes les connexions

1git remote –v 2

Ajouter une nouvelle connexion

1git remote add [nom_remote] [url] 2# git remote add MON_REPO git@github.com:Toto/Toto-projet.git 3

Supprimer une connexion

1git remote rm [nom_remote] 2

Commande précise

Git diff

Cette commande permet de voir les différents conflits sur une branche ou entre plusieurs

Elle met en surbrillance les différences dans le terminal

Les options VSC permettent de les visualiser directement dans l'éditeur de texte

GitHub permet de voir l'historique des commit directement sur le repo et donne accès a des options supplementaires

Pour voir tout les conflits du projet

1git diff 2

Pour voir les conflits d'un fichier précis

1git diff --base [nom_file] 2

Pour voir les conflits de deux branches avant de les merge

1git diff [branch_A] [branch_B] 2

Pour voir les conflits pas encore commit

1git diff --staged 2

Git log

Cette commande permet de connaître l'historique des commit d'un repo

Pour voir tous les commit d'une branche et d'obtenir les informatiosn liées (qui, où et quand)

GitHub propose la même option en plus détaillée

1git log 2

Pour voir les commit differents entre deux branches

1git log [branch_B] [branch_A] 2

Pour voir les commit qui ont concerné un fichier précis

1git log --follow [mon_file] 2

Pour avoir TOUTES les informations des commit

1git log --stat -M 2

Git status

Pour connaître les fichiers qui ont été modifiés et qui ne sont pas encore commit

1git status 2

Gitk

Permet d'ouvir une interface graphique de l'arborescence du repo

1gitk 2

Git reset

⚠️ ATTENTION COMMANDE TRES RISQUEE ET IRREVERSIBLE

il est préferable d'utiliser l'onglet "Source Control" de VSC

Cette commande permet de revenir à l'état initial à partir d'un commit ou du dernier commit

Pour réinitialiser toute l'arborescence à partir du dernier commit

1git reset --hard HEAD 2

Pour réinitialiser un fichier à partir du dernier commit

1git reset [nom_file] 2

Pour réinitialiser toute l'arborescence à partir d'un commit précis

1git reset --hard [num_commit] 2

Moins important

Git tag

Cette commande permet de gérer les tag

Pour voir tout les tag

1git tag 2

Pour ajouter un tag

1git tag -a [v1.4] -m "Description du tag" 2

Pour afficher les informations liées à un tag

1git show [v1.4] 2

Pour supprimer un tag

1git tag -d [v1.4] 2

Git rm

Pour supprimer un ficher du repo

1git rm [nom_file] 2

Git stash

Cette commande permet d'enregistrer les fichiers localement sans les commit (pour garder un historique propre)

Pour enregistrer les changements

1git stash 2

Pour voir la liste des changements

1git stash 2

Pour ecraser les changements

1git stash pop 2

Pour supprimer les changements avant de commit

1git stash drop 2

Git show

Pour afficher toutes les informations liées au fichier du repo

1git show 2

Pour voir les informations d'un commit précis de façon lisible

1git show [num_commit] 2

Git ls-tree

Pour afficher l'arborescence du repo

1git ls-tree HEAD 2

Git grep

Moteur de recherche de Git pour rechercher un mot ou une phrase dans tout les fichiers

1git grep "[mot_rechercher]" 2