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