---
# System prepended metadata

title: GIT
tags: [Git, Général]

---

# 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
![](https://i.imgur.com/5kwDMbE.png)


**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.
![](https://i.imgur.com/NDreO4D.png)



# 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