0% ont trouvé ce document utile (0 vote)
169 vues13 pages

Guide Complet sur Git et GitHub

Ce document décrit les commandes Git et GitHub essentielles comme créer un dépôt, ajouter des fichiers, faire des commits, pousser des modifications vers un dépôt distant, récupérer des modifications d'un dépôt distant, créer et gérer des branches, et utiliser stash. Il explique également comment configurer les clés SSH et les alias.

Transféré par

Rouissi Mohamed Ahmed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
169 vues13 pages

Guide Complet sur Git et GitHub

Ce document décrit les commandes Git et GitHub essentielles comme créer un dépôt, ajouter des fichiers, faire des commits, pousser des modifications vers un dépôt distant, récupérer des modifications d'un dépôt distant, créer et gérer des branches, et utiliser stash. Il explique également comment configurer les clés SSH et les alias.

Transféré par

Rouissi Mohamed Ahmed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Git && github

1. Create Github Repository And Clone It

Git: un système de versionning

Github : un repository distant vers lequel on envoie le code, il existe d’autre (gitlab,
bitbuket…)

- Créer un dossier dans github, ensuite copier le lien http et lancer la commande clone :

Git clone [Link]

2. Add and Reset and Commit & Explain Progress


Git status / git status -s:

Affiche l’état courant et liste tous les nouveaux fichiers et les fichiers modifiés à commiter

Git diff --staged / git difftool –staged (to use a visuel tool selon le choix)

- Plus spécifique que git status qui affiche les fichiers affecté (indexé dans le staging
area), git diff --staged affiche les lignes exacte qui sont affectées (qui sont indexés
dans le staging area) et qui sont indexé et prêt à être commiter.
- Cette commande est utiliser pour un review et comparaison entre les anciennes copies
des fichiers commiter déjà et les nouvelles copies de ces fichiers indexéé dans le
staging area si on a pas un accès à un visuel tool(la bonnes pratique est d’utiliser un
outil visuel)
- Comparing what we have in the last commit with what we have in the staging area

Git diff / git difftool (to use a visuel tool selon le choix)

- Comparing what we have in the working directory with what we have in the staging
area
- mettre vscode as default tools to compare files

- git config --global [Link] vscode


- git config --global [Link] "code --wait --diff $LOCAL $REMOTE"
- git config –global –edit : pour ouvrir le fichier de config avec l editeur et vérifier les
config de vscode as a visual tool
git add [fichier]

Ajoute un instantané du fichier, c.à.d ajoute les fichier et dossier au staging area

git add [Link] : ajoute le fichier [Link]


git add –all ou git add * : ajoute toutes les fichiers et dossier

git reset head [fichier]

rénitialiser le fichier, et l’enlever de staging area : c.à.d faire


un unstage

git reset head [Link]

git commit –m ’’ message descriptif ‘’

Enregistre des instantanés de fichiers de façon permanente dans l’historique des versions.
La commande git commit permet de valider les modifications apportées au HEAD. Notez que tout
commit ne se fera pas dans le dépôt distant.

Git show idcommit

-Affiche ce qu’on a fait dans un commit en détails

- On peut afficher des objets (commit, blob (for file), tree (fir directory), tags)

3. Push Local Changes To Remote Repository


git branch

Liste toutes les branches locales dans le dépôt courant

git remote -v

Afficher le repôt distant

git push origin main

Envoie tous les commits de la branche locale vers GitHub


4 Pull Changes From Remote Repository
Pour récupérer toutes les modifications présentes sur le dépôt distant dans le répertoire de
travail local, la commande pull est utilisée, il faut récupérer toutes es modification en repot
distant en local ensuite ajouter nos propres modifications

git pull origin

git pull fait deux choses : get fecth pour récupérer les fichier en repo diastant vers le repo
local et git merge pour fusionner les modif en repos distant avec le repos local.

5 Git Configurations
git config –l
Commande qui liste les configurations existantes

git config [--local –global --system] key value

--local: s’applique sur le repo actuel seulement


--global : s’applique sur tous les repos d’un user
--system : s’applique sur tous les repos de tous les users

git config --global [Link] rouissi Mohamed ahmed


git config --global [Link] mohamedahmedrouissi@[Link]
git config --global [Link] true

git config --get [Link] / git config --get [Link]

Afficher la valeur de key demander

mettre vscode as default tools to compare files

git config --global [Link] vscode


git config --global [Link] "code --wait --diff $LOCAL $REMOTE"

git config –global –edit : pour ouvrir le fichier de config avec l editeur

git config –help / git config –h

git ls : lister les fichier

git ls-files : afficher les fichier dans le staging area

git touch [Link] : créer un fichier

git echo hello > [Link] : écraser le contenue du [Link] et ecrire hello si le fichier existe si non créé le
fichier
git echo ‘’hello world’’ >> [Link] : : append (ajouter) hello world au fichier [Link] s’il existe si non
[Link] sera créer

rm [Link] / git add [Link]: si on efface un fichier de repo local, il reste dans le staging area (vérifier
avec git ls-files), il faut faire un add pour que ce fichier soit supprimer du staging area

git rm –cached [Link] : pour supprimer le fichier du l’index seuelement (staging area)

git rm [Link] : pour supprimer le fichier du repo local (workong directry) et staging area

mv [Link] [Link] / git add [Link] [Link]: si on renomme un fichier de repo local, il reste dans
le staging area avec l’ancien nom (vérifier avec git ls-fils), il faut faire un add pour que ce fichier
soit supprimer du staging area

git mv [Link] [Link] : pour renommer le fichier du repo local (workong directry) et staging area

6 Generate And Test Github Public Key


Lorsque je veux faire un clone ou remote, on utilize soit un lien http ou bien ssh

- Pour utiliser ssh, on doit procéder comme suit :

1- Générer key public en local avec cmder


ssh-keygen -t rsa

2- Entrer le password

3- Afficher le key pour le copier


cat C:\Users\DELL/.ssh/id_rsa.pub

4- Dans settings  ssh and gpg jey cliquer sur ajouter un ssh key, puis entrer le titre
pour le key et coller le key et l’ajouter.

5- Entre la commande suivante


ssh -T git@[Link]

6- Le mot de passe entrer lors de la création du key sera demander

7- Si tous va bien un hi rouissi sera afficher

7 Create Repository From Existing Project


Dans ce cas, on va créer un repos distant à partir un repo en local.

1- Créer le repos en local


mkdir repofromlocal
2- Initialiser le repos en local
cd repofromlocal / git init
la commande git init , initialise le repos, c.à.d dès maintenant on peut appliquer les
commande git sur notre repos (un repot caché nommé .git est créer)

3- Créer qlq fichiers et faire une commit


touch [Link] [Link]
git add –all
git commit -m "1-31/01/2022 first commit"
4- Créer un nouveau repository sur github nommé “testforcourse”
5- Remote

git remote add origin git@[Link]:rouissimed/[Link]

git branch -M main

git push -u origin main  ici le mot de passé de key sera demander

8 Learn Pull Request With Real Examples


- Après que j’ai fait des modifications sur mon projet dans le local, je dois informer les admin du repos
distant que j’ai des modifications à publier sur le repos distant, cela se fait avec un pull request.

9 Learn Everything About Aliases

- Les alias sont utilisé pour faire des raccourcie pour les commandes long par exp
- Dans cet exemple, on va faire un alias pour la commande git status, pour utiliser git st
- git config --global [Link] status

10 Learn Git & GitHub #12 - Learn About Branching


And Merging

Git branch

Liste toutes les branches du repos local

Git branch newbranche

Créer une nouvelle branche nommé newbranche

Git checkout newbranche

Basculer vers la nouvelle branche

git checkout -b newbranch

Créer une nouvelle branche nommé newbranch et bascule vers newbranche directement
Git branch –d newbranche

Supprimé la branche nommé newbranche, après une vérification d’existance d’un merge si non s’il
trouve des modif la srppression n’aura pas lieu

Git branch –D newbranche

Forcer la suppression de la branche nommé newbranche

Pour tester le merge avec la branche main en local, ensuite push vers github

1- Créer une nouvelle branche et basculer vers cet derniere


git checkout -b newbranch
2- Faire des modif (créer file, add , commit)
Touch [Link] / git add [Link] / git commit –m ’’ descrption ’’
3- Basculer vers la branche main
git checkout main
4- Faire le merge : git merge newbranch
5- Faire le push vers github : git push origin main

Pour tester le merge avec la branche main dans github directement

1- Créer une nouvelle branche et basculer vers cet derniere


git checkout -b nouvelbranche
2- Faire des modif (créer file, add , commit)
Touch [Link] / git add [Link] / git commit –m ’’ descrption ’’
3- Rester dans la nouvelle branche
4- Faire le push vers github :
git push origin nouvelbranche
5- Aller eu remote repo github pour valider le pullrequest ou bien la refuser
Ce push à partir de la nouvelle à créer un pullrequest for 'nouvelbranche' on GitHub

- Nous avons 4 types de merge


1- Fast forwarding
o Lorsque nous avons des commit linéaires
2- Merge commit
o Lorsque nous avons des commit dérivés des branches différents, dans ce cas il faut
créer un autre commit
3- Rebase
o Rewrite history
o Caution : never rewrite history that has been shared with other
o Rebase est le faite de changer le parent d’un commit
o Avec rebase on peut récupérer un fichier créé dans la branche main dans une
branche test par exp
4- Squash
11 Mastering Stash

- Mettre en suspens des modifications non finies pour y revenir plus tard
- git stash stocke (ou stashe) temporairement les changements apportés à votre copie de travail
pour que vous puissiez effectuer d'autres tâches, puis revenir et les réappliquer par la suite. Le
stashing est pratique si vous avez besoin de changer rapidement de contexte et de travailler
sur autre chose, mais que vous êtes en plein dans un changement de code et que n'êtes pas
tout à fait prêt à commiter.
- L’une des moins connues, git stash aide à enregistrer les changements qui ne doivent pas
être commit immédiatement. C’est un commit temporaire. Usage:

- git stash
- Enregistre de manière temporaire tous les fichiers

- Rq si on fait un ls après git stash, les les fichiers staché ne seron pas affiché mais il sont
toujours enregistrer.

- git stash save ‘’ description du stash ’’


- Enregistre de manière temporaire tous les fichiers et personnalise le message

- git stash pop


- Réappliquer les changements stashés au préalable et supprime le stash
- git stash pop réapplique toujours le dernier stash (enregistrement) si on a créer
+ieurs stash
- Pour cibler un stash bien déterminer, on doit indiquer sont id

- git stash pop stash@{2}


- on peut avoir l’id avec la commande git stash list

- git stash list


- Liste toutes les stash

- git stash apply


- git stash apply stash@{2}

- Réappliquer les changements stashés au préalable et supprime le stash

- git stash drop : supprime le dernier stash


- git stash drop stash@{2}: supprime le stash num 2
- git stash clear : supprime toutes les stash

- git stash show


- git stash show stash@{2}
- afficher le contenue d’un stash
12Corrigez vos erreurs sur un dépôt local

Changé le nom de la branche que master vers main


Si votre branche principale se nomme master et non main, lancez les commandes suivantes

git branch -M main

J’ai créé une branche que je n’aurais pas dû créer


Supprimer une branche test

git branch -d test

J’ai modifié la branche avant de faire un commit


- Si vous avez modifié votre branche principale (main ou master) avant de créer votre branche
et que vous n'avez pas fait le commit, ce n’est pas bien grave. Il vous suffit de faire une
remise - ou un stash en anglais.
- La remise, ou stash, permet de mettre vos modifications de côté, les ranger, le temps
de créer votre nouvelle branche et d’appliquer cette remise sur la nouvelle branche.

1- Git stash
- Pour créer un enregistrement avant de commiter

2- Git checkout –b test


- Créez et basculer sur votre nouvelle branche. Test

3- Git stash apply

- récupérer les modifications que vous avez rangées dans le stash


- Appliquer ces modifications sur votre nouvelle branche test

J’ai modifié la branche après avoir fait un commit


- Dans ce cas j’ai fait des commit sur la branche main, ce qui n’est pas conseiller de le
faire, on doit toujours créer une branche test et faire mes modifications sur cet
branche, donc si par erreur j’ai fait mes commit directement sur la branche main, on
procède comme suit pour enlever la dernière commit et la déplacer vers la nouvelle
branche test créer

4- Git log / git log –oneline –graph / git log 2


- Pour afficher l’historique des commit et prendre le hach (identifiant de commit)

5- git reset --hard HEAD^


- Cette ligne de commande va supprimer de la branche principale votre dernier commit. Le
HEAD^ indique que c'est bien le dernier commit que nous voulons supprimer. L’historique
sera changé, les fichiers seront supprimés.
6- Git checkout –b test
- Créez et basculer sur votre nouvelle branche. Test

7- git reset --hard b0f43b6b


- Renouvelez la commande git reset, qui va appliquer ce commit sur votre nouvelle
branche !
- Il n'est pas nécessaire d'écrire l'identifiant en entier. Seuls les 8 premiers caractères sont
nécessaires.

Le message de mon commit est erroné

--Amend : commande qui permet de modifier le dernier commit

--Amend -m : commande qui permet de modifier le message (-m) de dernier commit

git commit --amend -m "3- 3/2/22 : 3eme commit pour le fichier [Link]"

- Changer le message de dernier commit

git commit --amend --no-edit

- Cette commande permet d’ajouter un fichier qu’on a oublié de l’ajouter dans le dernier
commit, (il faut ajouter ce fichier au staging area avec git add [Link] avant)

Rendre un fichier unstaged


git restore --staged [Link]

- La commande restore permet de rendre le fichier [Link] unstaged c.àd annule la


commande add

Supprimer un fichier unstaged


git clean -n

- La commande git clean -n permet de lister toutes les fichiers à supprimer, pour vérifier si on a
besoin de garder un fichier, si c’est le cas on doit ajouter cette fichier au staging area avec la
commande add

git clean –f

- La commande git clean -f permet de confirmer la suppression


13 Corrigez vos erreurs sur un dépôt distant
git revert head

Pour annuler des changements apportés à une branche publique

git reset

pour annuler des changements apportés à une branche privé

git reset va revenir à l'état précédent sans créer un nouveau commit, alors
que git revert va créer un nouveau commit.

14 Utiliser git reset

Imaginez que votre client vous demande une nouvelle fonctionnalité ; vous travaillez dessus
toute la journée et le lendemain, finalement, il change d'avis. Catastrophe !

Vous avez perdu une journée à développer une fonctionnalité pour rien, mais en plus il faut
que vous trouviez le moyen de revenir en arrière ! Heureusement, notre ami Git arrive à
notre rescousse avec la commande git reset !

Le HEAD est un pointeur, une référence sur votre position actuelle dans votre répertoire de
travail Git.

Il existe trois types de réinitialisation de Git

La commande git reset est un outil complexe et polyvalent pour annuler les
changements. Elle peut être appelée de trois façons différentes, qui correspondent
aux arguments de ligne de commande --soft, --mixed et --hard.

git reset notreCommitCible --hard

Cette commande permet de revenir à n'importe quel commit mais en oubliant absolument
tout ce qu'il s'est passé après ! Quand je dis tout, c'est TOUT ! Que vous ayez fait des
modifications après ou d'autres commits, tout sera effacé ! C'est pourquoi il est extrêmement
important de revérifier plusieurs fois avant de la lancer, vous pourriez perdre toutes vos
modifications si elle est mal faite.

git reset notreCommitCible --mixed


git reset notreCommitCible --soft
Cette commande permet de se placer sur un commit spécifique afin de voir le code à un
instant donné, ou de créer une branche partant d'un ancien commit. Elle ne supprime aucun
fichier, aucun commit, et ne crée pas de HEAD détaché.
1- Sur le repo local, on affiche le log pour prendre l’identifiant du dernier commit à
garder, c.à.d la commit que le head doit pointer vers maintenant
Git log
2- Faire un git reset --hard 0879f934 pour pointer le head vers la nouvel commit cible et
supprimer les derniers commit
git reset --hard 0879f934

3- Le changement de head est maintenant appliquer sur le repo local, et on doit faire un
push pour mettre à jour le repo distant (cela peut effacer des fichier en repo distants
ou bien modifier leurs contenue)

git push origin master --force

15 Corrigez un commit raté


-Voilà des semaines que vous développez vos projets et tout se déroule comme sur
des roulettes. Sauf qu’un beau matin, votre chef de projet vous demande de revenir à
une version précédente du projet. Il a aussi besoin de savoir qui a fait quel commit ! !
-Heureusement, les techniques de journalisation de Git ont été prévues pour
répondre à ce genre de situation.

L'objectif d'un gestionnaire de versions est d'enregistrer les changements apportés à


votre code. Il vous permet de consulter l'historique de votre projet pour :

 savoir qui a contribué à quoi ;


 déterminer où des bugs ont été introduits ;
 annuler les changements problématiques.

Le SHA ou Secure Hash Algorithm est un identifiant. C'est ce grand code incompréhensible
qui nous permettra de revenir en arrière si besoin, à un commit exact.

Git log

énumère en ordre chronologique inversé les commits réalisés. Cela signifie que les
commits les plus récents apparaissent en premier. Cette commande affiche chaque commit
avec son identifiant SHA, l'auteur du commit, la date et le message du commit.
Git reflog

Git dispose d'un outil encore plus puissant, poussant le journal de logs à l’extrême.

git reflog va loguer les commits ainsi que toutes les autres actions que vous avez pu
faire en local : vos modificati
modifications
ons de messages, vos merges, vos resets, enfin tout, quoi .
Comme git log , git reflog affiche un identifiant SHA-1 1 pour chaque action. Il est
donc très facile de revenir à une action donnée grâce au SHA. Cette commande, c'est votre
joker, elle assure
ssure votre survie en cas d'erreur. Pour revenir à une action donnée, on prend les
8 premiers caractères de son SHA et on fait

git checkout 3e924b2

- git checkout fonctionne en mode detached head, c.à.d le pointeur head sera pointé vers
la commit cible, ici on ne peut pas faire des modifs directement sur la commit mais on
peut créer une autre branche de cet commit et appliqué ces modifs

git blame [Link]

git blame va afficher pour chaque ligne modifiée :


 son ID ;
 l'auteur ;
 l'horodatage ;
 le numéro de la ligne ;
 le contenu de la ligne.

git cherry-pick
pick d356940 de966d4

- cherry-pick
pick permet de merger des commits d’une autre bracnhe avec la branche main et pas
un merge d’une branche totale
- Ici, nous prenons les deux commits ayant pour SHA d356940 et de9 de966d4,
66d4, et nous les
ajoutons à la branche principale sans pour autant les enlever de votre branche actuelle. Nous
les dupliquons !

16 Tagging And Releasing Part 1

Git tag

- Afficher les tags créés

Git tag -l ’’v1.*’’

- Afficher les tags créés conte


contenant v1.
Git tag v1.0

- Créer le tag v1.0


- Ici le tag a pris son message from the commit message, on l’appelle lightweight tag

Ou bien

Git tag -a v2.0 -m ’’ Second version’’

- Ici on a crée le tag v2.0 et nous avons personnaliser son message, on l’appelle annotating
tag

Git tag –d v1.0

- Supprimer tag v1.0

Git tag push origin --delete v1.0

- Supprimer tag v1.0 en remote repo

Git push origin v1.0

- Pusher le tag créé

Vous aimerez peut-être aussi