# GIT
git clone git@gitlab.com:nizukameha/first-git .
Le . permet de cloner sans créer de dossier
**git status**
Permet de voir les nouveaux fichiers et les fichiers modifiés. Ceux qui sont en attente de commit et ceux qui n'ont pas été ajouté
**git add**
Les fichiers qui ont été "add" sont en attente de commit
**git commit -m** « Commentaire concernant le changement »
**git log** :
Pour voir les derniers commit
**git checkout e202e6b281c36588fa391985a95591f696343a01** (numero du commit) : Pour revenir a un précédent commit
**git checkout main** :
Pour revenir au dernier commit
# DANS LE CAS OU ON EST OBLIGÉ DE CRÉER UN DEPOT LOCAL AVANT DE LE LIER À UN DEPOT DISTANT
**git init** :
Initialise un dépot local
**git remote add origin lienDuDépotDistant** :
Permet d’ajouter un dépot distant a un dépot local
**git pull origin main —rebase** :
Permet de push un dépot local vers un dépot distant qui possede déja des fichiers
# EN CAS DE CONFLIT
**git checkout —ours fichier** :
On regle le conflit en remplaçant le fichier distant par le notre
**git checkout —theirs fichier** :
On regle le conflit en remplaçant notre fichier par le fichier distant
**git merge abort** :
On annule le pull qui pose probleme
# BRANCH
**git branch nomDeLaBranche** :
Créer une nouvelle branche
**git checkout nomDeLaBranche** :
Permet de se positionner sur une autre branche
**git merge branch1 branch2** :
Permet de fusionner deux branches. branch2 viendra a la suite de branch1
/!\ En suivant les branches on aura une trace des merges

**git rebase branch1 branch2** :
Permet de fusionner deux branches en ajoutant de façon séquentiel les commit de la 2eme dans la 1ere. Apres le rebase on aura l’impression qu’il n’y a toujours eu qu’une seule branche.
/!\ L'historique des commit sera modifié et peut-etre moins clair.

# HEAD
C’est le nom symbolique qui fait référence au commit le plus récent
**git checkout numeroDuCommit** :
On détache le HEAD de la branche pour le fixer a un commit
**git checkout main^** :
Permet de déplacer le HEAD au commit précédent de la branche main
**git checkout main^^** :
Permet de déplacer le HEAD 2 commit en arrière de la branche main
**git checkout HEAD^** :
Permet de déplace le HEAD au commit précedent de la branche main. Il faut avant avoir détaché le HEAD de sa branche avec git checkout numeroDuCommit
**git checkout HEAD~4** :
Permet de remonter 4 commit en arrière
**git branch -f main HEAD~3** :
Déplace une branche 3 commit en arrière
# ANNULER DES CHANGEMENTS
**git reset HEAD~1** :
Permet de revenir 1 commit en arrière (ne fonctionne que en local)
**git revert nomDeLaBranche** :
Comme reset mais pour les dépôts distants
# REMOTE (Dépot distant)
**git fetch** :
Télécharge les commit du dépôt distant qui ne sont pas dans le dépôt local & Met à jour les branches du dépôt distant
/!\ Git fetch ne change rien au dépot local
**git pull** :
En réalité c'est 2 commandes en une !
Il s'agit de git fetch & git merge. La commande va donc télécharger les commit du dépôt distant et mettre à jour notre dépot local
###### tags: `Général` `Git`
**Changer le dépot distant :**
git remote set-url origin *lienDuNouveauDépotDistant*
git commit/add/push
un git rebase peut-etre neccéssaire avant de push (dans le cas ou on aurait déja un commit)
**OU**
git pull --allow-unrelated-histories
**PUIS**
git push