Dans le projet de travail sur notre ordinateur, first-proj-c1, nous avons créé un fichier README.md et un dossier img qui contiendra des captures d'écran.
Si on fait un git status, nous obtenons une erreur : fatal: not a git repository (or any of the parent directories): .git
Ouvrez la console et tapez :
git initUn dossier caché est créé, il se nomme .git. C'est lui qui va contenir les fichiers et l'historique de travail. ce fichier .git ne devra pas être envoyé via FTP.
Pour l'exemple, on va créer un dossier 'test' vide :
Lorsque l'on fait un git status, on constate le dossier test n'est pas reconnu. Les dossiers vides ne sont reconnus !
Ouvrez la console et tapez :
git statusLorsque le texte après un git status est en rouge, c'est que git les a détectés, mais qu'ils ne sont pas mis dans la future sauvegarde.
Nous allons utiliser git add pour ajouter les fichiers au staging :
# ajoute un seul fichier
git add lenomdunfichier.txt
# ajoute tous les fichiers
git add .Pour retirer du staging si on a pas encore celui-ci dans un commit :
git rm --cached nomdufichier
Pour retirer du staging si on a déjà du commit :
git restore --staged nomdufichier.
Lorsque nous allons refaire un git status, les fichiers qui sont prêts à être sauvegardés seront en vert, ceux qui ne seront pas sauvegardés restent en rouge
Nous allons sauvegarder un fichier en utilisant le commit :
# sauvegarde avec commentaire
git commit -m"First commit with README.md"Permet de voir
git log
Nous allons créer un repository sur github, public ou privé, sans cocher les autres options (il ne doit pas y avoir de commit sur github autres que ceux en local)
Nous devons récupérer le répertoire en SSH si nous utilisons l'échange de clef : Lier avec SSH ou en https.
Nous retournons dans la console, et nous allons lier le projet local avec le projet distant :
# on s'assure que que la branche soit `main`
git branch -M main
# On ajoute notre lien vers le répertoire `github`
git remote add origin git@github.com:WebDevCF2m2025/first-project-c1.gitOn peut vérifier le lien avec :
git remote -v Nous pouvons maintenant envoyer notre travail en ligne sur github :
# le -u n'est à mettre que la première fois
# il équivaut à git push --set-upstream origin main
git push -u origin mainNous pourrons ensuite envoyer notre travail sur origin main avec :
git push
Pour récupérer simplement un repository, on peut utiliser le clonage (la première fois !), dont on est propriétaire (ou un fork) :
git clone CLEF_SSH (ou https)
cd nom_du_repertoire
# pour aller voir le remote créé
git remote -v
Et nous pouvons travailler en local sur le projet.
### Récupération de commit
Pour récupérer les nouveaux commit ou commit non présents en local (par exemple travail sur plusieurs machines) :
```bash
# recupere le dossier .git (vérification de modification)
git fetch
# si il y a des changements, récupération du dossier .git
# Et des fichiers physiques
git pull
# on avait envoyé 4 commits en ligne
git push
# retourne sur un ancien commit
# ! disparition des commits qui suivent
git restore 0901dfac84
# on back 3 commits,
# sans modifier les fichiers physiques
# en créant un nouveau commit
git add .
git commit -m"-3 commits + save files"Si on effectue un git pushon aura une erreur car il y a une incompatibilité de la chaîne de commit,
une bifurcation.
**seule possibilité : forcer le push :
git push --force origin main
# création d'un fichier
echo "blabla"> f.txt
git add .
git commit -m"f.txt"
git push
# création d'un deuxième fichier
echo "blabla"> f2.txt
git add .
git commit -m"f2.txt"
git push
# on avait envoyé 2 commits en ligne
git push
# retourne sur un ancien commit
# ! disparition des commits qui suivent
# ! disparition des fichiers ou modifications de ceux-ci
git reset --hard 0901dfac84
# on back 3 commits,
# sans modifier les fichiers physiques
# en créant un nouveau commit
git add .
git commit -m"-3 commits + save files"Si on effectue un git pushon aura une erreur car il y a une incompatibilité de la chaîne de commit,
une bifurcation.
**seule possibilité : forcer le push :
git push --force origin main

