GIT:
Level 2Plan de travail:
GIT:
Cheat sheetVous pouvez trouver une série de tutoriels videos pour se sortir des erreurs classiques là
GIT:
BranchesVous recevez un rapport d'erreur sur la v2 alors que vous développez la v3:
git checkout v2
git add
, git commit
git checkout v3
Parce que les commits successifs créent une ligne, et quand deux personnes travaillent depuis une même version, ça crée une fourche.
Une branche n'est autre qu'une étiquette sur un commit.
master
est la branche par défaut.
GIT:
RevertVous avez fait une bétise et commit sur une branche une version qui ne devrait pas y être.
Vous voudriez supprimer un commit.
En GIT, vous pouvez faire un second commit qui inverse les changements du premier, et ça s'appelle git revert
git revert HEAD
crée un commit inversant le commit courant (celui qui arrive à l'état courant)
GIT:
RemoveSupprimer un fichier n'est pas la même chose que cesser de suivre (track) ce fichier dans GIT.
git rm file
supprime le fichier ET cesse de le suivre (après commit)
git rm --cached file
cesse de suivre le fichier dans git (après commit) sans le supprimer du dossier courant. Il apparaitra comme "untracked", sauf s'il est mentionné dans .gitignore
GIT:
AmendVous venez de faire commit, et vous vous rendez compte que vous avez oublié une ou deux modifications. Vous les faites, puis
git add modifs
puis
git commit --amend
pour ajouter les modifs au commit précédent.
Bien sûr, il ne faut pas faire celà si vous avez déjà fait un push. Si vous avez déjà fait un push, alors faites un autre commit. Il n'y a pas de commit trop petit.
GIT:
Checkout --Vous avez effacé un fichier Main.java par erreur, ou vous l'avez modifié malencontreusement.
git checkout -- Main.java
(il y a un espace avant et après le --)
Et votre fichier Main.java est restoré à son état antérieur.
GIT:
FetchVous voulez voir ce qu'ont fait les autres, mais vous n'avez pas encore le courage de faire un gros merge. Alors plutôt que de faire git pull
, faites git fetch
pour faire l'équivalent du pull sans le merge.
GIT:
TagVous voudriez l'équivalent d'une branche mais qui ne suit pas les commits, une étiquette qui reste sur le commit où elle a été placée. Par exemple, vous voulez mettre l'étiquette: 'versionPan3QuiMarche'
Ca s'appelle un tag: vous faites checkout de la version à tagger et
git tag versionPan3QuiMarche
GIT:
ResetVous avez fait git add
sur tous les fichiers modifiés, puis vous vous rappelez qu'un fichier Main.java n'est pas prêt pour le commit. Les autres modifications sont demandées en urgence.
git reset Main.java
fait sortir Main.java du stage
, donc fait l'inverse de git add
. Main.java ne fait plus partie du prochain commit.
git shortlog -s -n --all
: nombre de commit par auteurgit log --all --decorate --oneline --graph
: présente une version texte d'une vue des branchesUn fast-forward est un merge trivial.
Pour un merge, il y a la version courante et la version à fusionner. Si la version à fusionner est sur une autre branche, la fusion n'est pas triviale.
Par contre, vous êtes sur master, vous venez de faire un git fetch et plusieurs nouveaux commits sont apparus sur master, origin/master est "devant" master. A ce moment, git merge origin/master
est un fast-forward.
Une ressource de référence très complète et en anglais: git-scm.org
Si vous avez des problèmes, regardez cette page d'aide qui recense toutes les questions difficiles sur git posées en TP INF103
Les autres cours de cette série sont:
Ce cours a été conçu par Jean-Claude Dufourd, et mis à disposition en Creative Commons 3, BY-NC-SA (attribution, non commercial, partage à l'identique)