Afficher/cacher Sommaire
Git
Débuter avec Git
- Créer un dépôt
- Premier ajout de code
- Un commit plus complexe
- Les commits et les branches
- Fusionner des branches
- Une fusion de branches échoue
Commandes de base
Commande git | Description |
---|---|
git clone URL | Récupère un dépôt à partir d’une adresse URL |
git add fichier | Marque le fichier à consigner |
git add * | Marque tous les fichiers à consigner |
git commit -m “description” | Consigne les fichiers marqués dans le dépôt |
git status | Affiche l’état du dépôt local |
git tag étiquette | Pose une étiquette de version sur les fichiers |
git reset –hard HEAD~1 | Supprime la dernière modification consignée (avant d’avoir fait un push) |
git log | Affiche l’historique descommandes (q pour sortir) |
git config –list | Affiche la liste des paramètres de git |
git config –global user.name NomUtilisateur | Enregistre le paramètre “nom utilisateur” du dépôt |
git config –global user.email email | Enregistre l’email de l’utilisateur du dépôt |
git branch testing | Créer une nouvelle branche |
git checkout testing | Cela déplace HEAD pour le faire pointer vers la branche testing |
git checkout -b nombranche | Créer une branche et se positionner dessus |
git push origin nombranche | Pousser la nouvelle branche sur un dépôt distant |
git checkout -b nombranchelocal origin/nombranchedistante | Faire un checkout à partir d’une branche distante |
git branch -d nombranche | Supprimer une branche localement |
git push origin :nombranche | Propager la suppression sur le dépôt distant |
git tag -a v1.4 -m ‘ma version 1.4’ | Etiquette annotée |
git tag -a v1.4 | Etiquette légère |
git show v1.4 | visualiser les données de l’étiquette |
git push origin v1.5 | Il faut explicitement pousser les étiquettes après les avoir créées localement. |
git push origin –tags | pousser toutes les étiquettes |
git tag | liste des étiquettes |
Utilisation
Utilisateur sur un ordinateur local
Configuration globale ~/.gitconfig
git config --global user.name "user"
git config --global user.email "user@exemple.com"
Modifier l’éditeur de texte par défaut (vi) de git
git config --global core.editor vim # éditeur vim
git config --global core.editor nano # éditeur nano
git config --global core.editor "atom --wait" # éditeur atom
Créer un dépôt local
Création dépôt local projet_local
mkdir ~/chemin/projet_local
Initialisation d’un dépôt local
cd ~/chemin/projet_local
Copier dans le répertoire (dépôt local) fichiers et dossiers du projet
Valider les changements
git init # Création des paramètres de configuration dans le dossier .git/
git add .
#Le dossier est donc ajouté au HEAD, mais pas encore dans votre dépôt distant.
git commit -m "Initialisation"
Vos changements sont maintenant dans le HEAD de la copie de votre dépôt local.
Pour les envoyer à votre dépôt distant, exécutez la commande
git remote add origin https://gitlab.monDepotGit.com/projet_local.git # création
git push -u origin master # utilisateur et mot de passe demandés
Remplacez master par la branche dans laquelle vous souhaitez envoyer vos changements.
Connexion auto
Si on utilise un projet GIT via une connexion http(s) nécessitant une authentification, elle est demandée à chaque push , pull et commit effectués.
Se rendre dans le répertoire d’un projet
cd /chemin/projet
Pour autoriser le stockage et l’accès des informations de connexion
git config credential.helper store
Faire un premier push , utilisateur et mot de passe sont demandés et création du fichier ~/.git-credentials
git push
Cette opération va générer un fichier ~/.git-credentials contenant les paramètres de connexion
Pour les projets à suivre , il suffit d’autoriser dans le répertoire du projet l’accès aux informations de connexion (le fichier ~/.git-credentials existe)
git config credential.helper store
Création manuelle configuration gitconfig
.gitconfig
Le fichier **~/.gitconfig **:
[user]
name = monNom
email = monEmail
[credential]
helper = store
[http]
sslVerify = false
postBuffer = 524288000
- [user] contient les infos personnelles (nom, email etc etc …)
- [credential] avec la variable
helper = store
pour autoriser la connexion auto - [http] (facultatif) , la variable
sslVerify = false
permet de se connecter en https sur un dépot GIT avec un certificat non reconnu (auto-signé),postBuffer = 524288000
permet de résoudre l’erreurerror: RPC failed; result=22, HTTP code = 411
lors des commits et autorise tous les projets locaux d’envoyer jusqu’à 500 Mo de données.
Si le paramètre [credential] n’est pas ajouté manuellement , il faudra exécuter dans chaque répertoire des dépôts locaux :
git config credential.helper store
(pour autoriser la connexion auto)
.git-credentials
Le fichier ~/.git-credentials :
Ce fichier contient l’ utilisateur associé au mot de passe renseignés dans le fichier ~/.gitconfig
Ce fichier doit être lisible uniquement par l’utilisateur concerné (chmod 0600).
https://utilisateur:mot_de_passe@gitlab.monDepotGit.com
Si utilisateur et/ou le mot_de_passe contient un des caractères spécifiques à la chaine de connexion (:/@), il est obligatoire de l’écrire en hexadécimal.
@ = %40 en hexadécimal
Sinon, le simple fait de créer le fichier ~/.git-credentials et de lui attribuer le bon mode 0600, il sera automatiquement complété avec le bonne combinaison user:password@adresseHttps à la première utilisation de git pull ou git push .
Erreurs
git push –set-upstream origin master
Énumération des objets: 145, fait.
Décompte des objets: 100% (145/145), fait.
Compression par delta en utilisant jusqu'à 4 fils d'exécution
Compression des objets: 100% (143/143), fait.
Écriture des objets: 100% (145/145), 24.66 MiB | 28.34 MiB/s, fait.
Total 145 (delta 2), réutilisés 0 (delta 0)
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
fatal: L'hôte distant a fermé la connexion de manière inattendue
fatal: L'hôte distant a fermé la connexion de manière inattendue
Everything up-to-date
Erreur : error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
Solution : Ouvrir le fichier de configuration nginx nginx.conf et d’ajouter ou modifier client_max_body_size 50m ;
selon vos besoins dans le bloc http.