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 :
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Pour connaître les fichiers qui ont été modifiés et qui ne sont pas encore commit
1git status 2
Permet d'ouvir une interface graphique de l'arborescence du repo
1gitk 2
⚠️ 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
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
Pour supprimer
un ficher du repo
1git rm [nom_file] 2
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
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
Pour afficher
l'arborescence du repo
1git ls-tree HEAD 2
Moteur de recherche de Git pour rechercher un mot ou une phrase
dans tout les fichiers
1git grep "[mot_rechercher]" 2