User Tools

Site Tools


apps:git

Git

logo

Présentation

Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. En 2016, il s'agit du logiciel de gestion de versions le plus populaire qui est utilisé par plus de douze millions de personnes.

Voici une vidéo très simple et explicative sur le fonctionnement de Git et Github :
Git & GitHub : Le Cours Pour Les Débutants

Editeur Git Bash

Modification du titre de la fenêtre

Pour voir le chemin courant dans le titre de la fenêtre, il faut modifier le fichier C:\Program Files\Git\etc\profile.d\git-prompt.sh :

# Original
PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
 
 
PS1="$PS1"'\n'                 # new line
PS1="$PS1"'\[\033[32m\]'       # change to green
PS1="$PS1"'\u@\h '             # user@host<space>
PS1="$PS1"'\[\033[35m\]'       # change to purple
PS1="$PS1"'$MSYSTEM '          # show MSYSTEM
PS1="$PS1"'\[\033[33m\]'       # change to brownish yellow
PS1="$PS1"'\w'                 # current working directory
# Modifié
#PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
# Ajouter la ligne ci-dessous
PS1='\[\033]0;$PWD\007\]' # set window title
PS1="$PS1"'\n'                 # new line
PS1="$PS1"'\[\033[32m\]'       # change to green
PS1="$PS1"'\u@\h '             # user@host<space>
#PS1="$PS1"'\[\033[35m\]'      # change to purple
#PS1="$PS1"'$MSYSTEM '         # show MSYSTEM
PS1="$PS1"'\[\033[33m\]'       # change to brownish yellow
PS1="$PS1"'\w'                 # current working directory

Création d'alias

Alias temporaires

Pour utiliser un alias durant une session, il suffit de taper :

alias godev='cd d:developpement/en_cours'
Alias persistants

Pour utiliser des alias sans à avoir à les initialiser à chaque session, il faut les ajouter au fichier C:\Program Files\Git\etc\profile.d\aliases.sh :

alias godev='cd d:developpement/en_cours'

Configuration

Définit le nom que vous voulez associer à toutes vos opérations de commit

$ git config --global user.name "nom"

Définit l'email que vous voulez associer à toutes vos opérations de commit

$ git config --global user.email "email"

Active la colorisation de la sortie en ligne de commande

$ git config --global color.ui auto

Utilisation

Les dépôts

🔸init🔸 création d'un dépôt

Il s'agit pour commencer de créer un nouveau dépôt (dossier), de l'ouvrir puis d'initialiser Git.

mkdir nom-du-projet
cd nom-du-projet
git init

ou

$ git init nom-du-projet

🔸.gitignore🔸 exclusion du suivi

Exclure des fichiers et chemins temporaires

*.log
build/
temp-*

Un fichier texte nommé .gitignore permet d'éviter le suivi de version accidentel pour les fichiers et chemins correspondant aux patterns spécifiés
Les fichiers ou dossiers qui ne doivent pas être insérés dans Git peuvent être ignorés via un fichier .gitignore qui sera généralement placé à la racine du dépôt et qui contiendra la liste des éléments à ignorer. Plus d'info dans l'article Exclure des fichiers de votre dépôt Git avec gitignore.

/node_modules
memo.html

Liste tous les fichiers exclus du suivi de version dans ce projet

$ git ls-files --other --ignored --exclude-standard

🔸add🔸 ajout de fichiers

Tous les fichiers qui doivent faire parti du dépôt doivent être ajoutés à l'index. Soit individuellement, soit via -A ou . qui permettent d'ajouter automatiquement tous les nouveaux fichiers.

git add <nomdufichier>
git add -A
git add .

Enleve le fichier de l'index, mais conserve son contenu

$ git reset <nomdufichier>

🔸status🔸 vérification de fichiers

La commande git status va permettre de vérifier l'état de l'ensemble des fichiers du dépôt: non indexés, modifiés ou supprimés.

git status

Montre les modifications de fichier qui ne sont pas encore indexées

$ git diff

Montre les différences de fichier entre la version indexée et la dernière version

$ git diff --staged

🔸reset --hard HEAD🔸 annulation des changements

La commande git reset -- hard HEAD va permettre de supprimer tout le changements depuis le dernier commit, dans le répertoire de travail.

git reset --hard HEAD

🔸log🔸 vérification de l'historique des versions

Suivre et inspecter l'évolution des fichiers du projet

Montre l'historique des versions pour la branche courante

$ git log

Montre l'historique des versions, y compris les actions de renommage, pour le fichier spécifié

$ git log --follow [fichier]

Les commits

🔸commit🔸 validation

La commande git commit va permettre la validation des modifications effectuées sur les fichiers du dépôt.
L'option -m permet d'associer un à la validation afin de décrire les modifications effectuées.
L'option -a permet d'ajouter automatiquement à l'index les nouveaux fichiers lors du commit.

git commit -m 'ajout nouvelle version'
git commit -a -m 'ajout nouvelle version'

🔸--amend🔸 renommage du dernier

La commande git commit … –amend permet de modifier le nom du dernier commit :

git commit -m 'ajout nouvelle super version' --amend

🔸reset🔸 réfection

Corriger des erreurs et gérer l'historique des corrections

Annule tous les commits après `[commit]`, en conservant les modifications localement

$ git reset [commit]

Supprime tout l'historique et les modifications effectuées après le commit spécifié

$ git reset --hard [commit]

🔸show🔸 comparaison

Montre les modifications de métadonnées et de contenu inclues dans le commit spécifié

$ git show [commit]

🔸checkout🔸 retour à un précédent commit

Pour revenir à un commit précédent il faut utiliser checkout avec le hash du commit souhaité :

git checkout 80b9e902362a18ced418a924c5fa7d24540c57d2

Les branches

🔸branch🔸 création, suppression et liste

Pour lister les branches :

git branch

Pour créer une nouvelle branche :

git branch nouvelle_branche

Pour supprimer une branche, il est nécessaire d'utiliser l'option -d :

git branch -d nouvelle_branche

🔸checkout🔸 gestion

La commande git checkout permet de naviguer entre les branches existantes ou d'en créer une nouvelle. Dans l'exemple, nous créons une nouvelle branche et passons dessus, nous envoyons la nouvelle branche sur le dépôt distant, puis nous revenons à la branche principale.

git checkout -b nouvelle_branche
git push origin nouvelle_branche
git checkout master

🔸merge🔸 fusion

Utilisez la fonction git merge pour fusionner une branche avec la branche courante. Dans l'exemple suivant, on se positionne dans la branche master, puis on la fusionne avec la branche nouvelle_branche.

git checkout master
git merge nouvelle_branche

🔸rebase🔸 fusion bis

git rebase a le même objectif que git merge. Ces deux commandes permettent de transférer les changements d'une branche à une autre. Seule la manière de procéder va différer. Le rebase dispose de puissantes fonctionnalités de réécriture de l'historique. Il existe deux types de rebase : le rebase manuel et le rebase interactif. Au niveau du contenu, le rebase consiste à changer la base de votre branche d'un commit vers un autre, donnant l'illusion que vous avez créé votre branche à partir d'un commit différent. Git va prendre vos modifications d'une branche et les transposer sur une autre branche.
Rebaser est une méthode courante pour intégrer les changements en amont dans votre répertoire local. L'intégration des changements en amont avec Git merge génère un commit de merge superflu dès que vous voulez voir comment le projet a évolué.

Attention ! Vous ne devez jamais rebaser des commits pushés sur le dépôt public ! Cela remplacerait les anciens commits du dépôt public, et cela serait comme si votre historique avait brusquement disparu !

La commande git rebase standard appliquera les commits à votre branche courante puis à la pointe de la branche transférée.

🔸diff🔸 comparaison

Montre les différences de contenu entre deux branches

$ git diff [premiere-branche]...[deuxieme-branche]

Les dépôts distants

🔸clone🔸 clonage

Le clonage est l'opération consistant à récupérer la totalité des éléments du dépôt. La syntaxe de la commande va changer en fonction du protocole de transfert que vous souhaitez utiliser.

git clone /chemin/du/depot/projet
git clone https://github.com/depot/projet.git

🔸push🔸 envoi de modifications

La commande git push permet d'envoyer sur le dépôt distant la totalité des modifications apportées en local. Si besoin, remplacez master par la branche désirée.

git push origin master

🔸fetch🔸 récupération de modifications

La commande git fetch' récupère tout l'historique du dépôt nommé :

$ git fetch [nom-de-depot]

🔸pull🔸 récupération de modifications et fusion

La commande git pull va permettre de récupérer les modifications disponibles sur le dépôt distant et les fusion au dépôt local.

git pull

Synchroniser les changements

Récupère tout l'historique du dépôt nommé

$ git fetch [nom-de-depot]

Fusionne la branche du dépôt dans la branche locale courante

$ git merge [nom-de-depot]/[branche]

Envoie tous les commits de la branche locale vers GitHub

$ git push [alias] [branche]

Récupère tout l'historique du dépôt nommé et incorpore les modifications

$ git pull

🔸stash🔸 Enregistrement des fragments

Cela permet de mettre en suspens des modifications non finies pour y revenir plus tard

Enregistre de manière temporaire tous les fichiers sous suivi de version qui ont été modifiés (“remiser son travail”)

$ git stash

Applique une remise et la supprime immédiatement

$ git stash pop

Liste toutes les remises

$ git stash list

Supprime la remise la plus récente

$ git stash drop

GitHub

logo Github

GitHub est un service web d'hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de versions Git.

GitHub est centré vers l'aspect social du développement. En plus d'offrir l'hébergement de projets avec Git, le site offre de nombreuses fonctionnalités habituellement retrouvées sur les réseaux sociaux comme les flux, la possibilité de suivre des personnes ou des projets ainsi que des graphes de réseaux pour les dépôts (en anglais repository). GitHub offre aussi la possibilité de créer un wiki et une page web pour chaque dépôt. Le site offre aussi un logiciel de suivi de problèmes (de l'anglais issue tracking system). GitHub propose aussi l'intégration d'un grand nombre de services externes, tels que l'intégration continue, la gestion de versions, badges, chat basés sur les projets, etc.
Les documentations des projets sont écrites en langage Markdown (fichiers .md).

Aller sur GitHub

apps/git.txt · Last modified: 2020/09/19 01:22 (external edit)