Aller au contenu

Git

Git logo

Branching illustration

Installation

Git dans PowerShell

Télécharger et installer la dernière version officielle de Git sur Git - Downloads.

Un paquetage appelé Posh-Git fournit un système de complétion automatique, ainsi qu’une invite améliorée pour vous aider à rester informé de l’état de votre dépôt et s'installe comme suit :

> Install-PackageProvider -Name NuGet -Scope CurrentUser -Force
> Install-Module posh-git -Scope CurrentUser -Force
> Add-PoshGitToProfile -AllHosts

Ressources

Configurer Git

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
git config --global core.editor "vi"
git config --global pull.rebase false

Ressources

Configurer Visual Studio Code comme éditeur

git config --global core.editor "code --wait"

Configuration spécifique à Windows

Lorsqu'on utilise git dans différents environnement (Windows, Linux, etc.) et pour éviter les problèmes de fin de ligne, on désactive le mécanisme de conversion automatique de fin de ligne :

git config --global core.autocrlf false

Ainsi, les caractères de fin de ligne sont identiques sur le dépôt local et le dépôt distant.

Note

Il faut s'assurer néanmoins que l'éditeur de code utilise bien le caractère de fin de ligne de style UNIX (LF et non CR+LF).

Dans le fichier de configuration de Visual Studio Code (settings.json), il suffit de remplacer :

{
    ...
    "files.eol": "\r\n", // Windows style line break (CR+LF)
    ...
}

par :

{
    ...
    "files.eol": "\n", // UNIX style line break (LF)
    ...
}

Note

Il est possible de forcer la prise en charge des caractères de fin de ligne pour l'ensemble des utilisateurs d'un dépôt en ajoutant un fichier .gitattributes à la racine de celui-ci.

# Set the default behavior, in case people don't have core.autocrlf set.
* text eol=lf

Voir cet exemple de configuration pour un projet Python.

Ressources

Multiples configurations

Dans cet exemple, on souhaite surcharger certains paramètres de la configuration principale (située dans ~/.gitconfig) lorsqu'on travaille sur des dépôts git situés dans le dossier ~/dev/github :

# ~/.gitconfig
[includeIf "~/dev/github"]
    path = ~/dev/github/.gitconfig
# ~/dev/github/.gitconfig
[user]
    email = johndoe@example.com

Ressources

Configurer Git Bash

# .bash_aliases
alias python='winpty /c/Users/<user>/AppData/Local/Programs/Python/Python38/python.exe'
alias python3='winpty /c/Users/<user>/AppData/Local/Programs/Python/Python38/python.exe'
alias python3.8='winpty /c/Users/<user>/AppData/Local/Programs/Python/Python38/python.exe'

Configuration Git Bash dans Visual Studio Code

Ajouter dans settings.json :

    "terminal.integrated.profiles.windows": {
        "Git Bash": {
            "source": "Git Bash"
        }
    },
    "terminal.integrated.defaultProfile.windows": "Git Bash",

Git en détail

git fetch vs git pull

git pull == git fetch + git merge

sequenceDiagram
    participant Remote as Remote<br>Repository
    participant Local as Local<br>Repository
    participant Working as Working<br>Repository

    Remote ->> Working: git pull
    Remote ->> Local: git fetch
    Local ->> Working: git merge

Ressources

Commandes utiles

Afficher l'adresse du dépôt distant

git remote show origin

Ressources

Consulter l'historique des actions dans git

git reflog

Ressources

Remiser les modifications d’un répertoire de travail

Enregistre vos modifications locales et rétablit le répertoire de travail pour qu’il corresponde au commit HEAD :

git stash

Les modifications remisées par cette commande peuvent être listées avec :

git stash list

Supprimer un seul remisage de la liste des remisages et l’appliquer par dessus l’état de l’arbre de travail actuel :

git stash pop

Ressources

Récupérer les commits de la branche main

Depuis une branche qui dérive de main :

git rebase main

Squasher les commits

Squasher des commits signifie regrouper plusieurs commits en un seul.

Ressources

Supprimer le dernier commit

git reset --hard HEAD^

Réécrire l'historique

git commit --amend

Ressources

Fusionner plusieurs commit en un seul

Exemple, fusionner les trois derniers commits :

git rebase -i HEAD~3

S'affiche alor dans l'éditeur :

pick fbde9fd Add Readme.md
pick 70aaed5 Update Readme
pick ccf2779 Update Readme again

On conserve pick sur le premier commit et on remplace par squash pour les suivants :

pick fbde9fd Add Readme.md
squash 70aaed5 Update Readme
squash ccf2779 Update Readme again

Autre solution en créant un tout nouveau commit from scratch :

git reset --soft HEAD~3
git commit

Ressources