Alice

Paramétrage et initialisations:

alice> git config --global user.name "Alice Torvalds"
alice> git config --global user.email "alice@kernel.org"
alice> git config -l

Création d’un dossier local versionné

mkdir monprojet
cd monprojet
git init

ou directement :

git init monprojet

Ajout de contenu dans monprojet

echo "# Mon projet" > Readme.md
git add Readme.md

On commite

git commit -m "ajout Readme.md"

On vérifie l’historique

git log

ou

git log --oneline

Ajout d’un nouveau fichier par Alice

echo "# Installation" > install.md

qui crée un nouveau fichier install.md

puis git status, add et commit :

alice> git status
alice> git add install.md
alice> git commit -m "Ajout install.md"

Modification du fichier Readme.md

echo "[Installation](install.md)" >> Readme.md

on peut faire à nouveau un add de Readme.md puis un commit ou plus simplement :

git commit -am "Modif Readme.md"

qui réalise l’ajout et le commit simultanément.

git status et git show

Si vous voulez savoir où vous en êtes, n’oubliez jamais la commande magique :

alice> git status

et pour avoir des détails sur la contribution d’un commit, faire un git show sur son id (sha1, prononcez chaone, les premiers chiffres suffisent), par exemple :

git show d2ee25

Alice crée un dépot (privé) “monprojet” sur Gitlab

Les dépôts sur Gitlab peuvent être :

  • privés

  • publics

  • ou internes à gitlab

On peut aussi en créer sur :

Connexion entre le local et le gitlab

alice> git remote add origin https://gitlab.com/alice/monprojet.git

Alice pousse son master sur son remote

alice> git push -u origin master

puis ultérieurement :

alice> git push
alice> git push --follow-tags

pour envoyer aussi les tags concernés dans le push

Autres réglages git

Mémoriser les identifiants

Sous Linux

alice> git config --global credential.helper 'cache --timeout=7200'

mémorise vos identifiants pendant 2h

Sous Windows, gitbash est configuré par défaut avec le manager

alice> git config --global credential.helper manager

le manager gère dans ce cas les identifiants.

Configurer son éditeur favori

alice> git config --global core.editor emacs

ou

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

Fichier .gitconfig

Il se trouve généralement dans le HOME de l’utilisateur, à la racine, une configuration typique avec vscode :

[user]
    name = Linus Torvalds
    email = linus@git.edu
[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE
[push]
    default = simple
   followTags = true
[core]
    editor = code --wait
[color]
    ui = auto
[credential]
    helper = cache --timeout=7200
[merge]
    tool = vscode
[mergetool "vscode"]
    cmd = code --wait $MERGED

Bob collabore avec Alice

Fork

Bob va faire un fork du dépôt d’Alice sur Gitlab, puis cloner son propre fork pour obtenir une copie locale : bash   git clone https://gitlab.com/bob/monprojet.git

remotes

  • Bob possède déjà un remote : Le sien, origin. Il peut le vérifier avec la commande git remote -v

  • il peut ajouter celui d’Alice :

bob> git remote add alice https://gitlab.com/alice/monprojet.git
  • puis vérifier ses 2 remotes en tapant git remote -v

Bob pourra maintenant collaborer avec Alice.

Réalisation d’une fonctionnalité par Alice :

  • Alice prend une chose à réaliser et implémente le code nécessaire

  • Alice fait les tests et vérifie que ça marche

  • git commit -am « Message de commit »

Alice pousse son master sur son remote:

git push -u origin master

Bob travaille en collaboration avec Alice grâce à git:

Bob fait d’abord comme Alice pour paramétrer et initialiser son dépôt local. Bob et Alice vont travailler tout d’abord sur leur branche master. Cela peut sembler plus simple mais en fait on va passer rapidement à un travail dans des branches spécifiques à chaque tâche : GIT branches

Bob configure ses remotes:

Bob doit avoir 2 remotes :

  • Le sien, origin qu’il crée au besoin en faisant:

    git remote add origin https://gitlab.com/bob/monprojet.git
    
  • celui d’Alice qu’il ajoute :

    git remote add alice https://gitlab.com/alice/monprojet.git
    
  • il tape git remote -v pour vérifier ses remotes

  • Si il se trompe:
    git remote remove alice
    

Bob récupère le master d’Alice:

git fetch Alice master

Bob consulte la branche locale correspondant au master d’Alice:

git branch -av
git checkout Alice/master

puis vérifie que le code d’Alice est correct

Bob revient dans son master:

git checkout master

Bob merge le travail d’Alice et pousse les modifs dans son dépôt distant:

git merge Alice/master
git push

Puis detruit la branche locale d’Alice :

git branch -d Alice/master

Alice se met à jour:

  • ajoute le remote de Bob

  • fetche le master de Bob pour se mettre à jour:
    git fetch Bob master
    
  • Fusionne:
    git merge Bob/master
    

Corriger des erreurs Git

Défaire le dernier commit

Plusieurs solutions possibles mais la plus simple est :

git reset HEAD^

seul le commit est enlevé, le code est toujours présent.

Supprimer une révision

git revert 32ee587

supprime la révision indiquée de l’historique tout en créant un nouveau commit inversant les changements effectués auparavant