man git commande
(exemple : man git commit) ou
git commande --help (exemple :
git commit --help)Pour configurer vos noms et mails, une seule fois par “machine” et depuis n’importe quel répertoire :
git config --global user.name "Prénom Nom"git config --global user.email "prenom.nom@telecom-paristech.fr"git config --global core.editor "votre éditeur favoris" #(nano, vi, emacs...)Ces informations seront stockées dans le fichier
~/.gitconfig (que vous pouvez aussi éditer à la main si
vous préférez).
Pour éviter d’avoir à taper en permanence votre clef privée :
ssh-add
Le fichier .gitignore dans la racine du dépôt permet
d’ignorer certains fichiers inutiles (les *.pyc par exemple
ou les *.o, *.swp, *~, …). C’est
un fichier texte que vous pourrez (devrez) éditer pour le compléter.
git initgit clone adresse_du_dépôtL’adresse du dépôt à cloner peut être :
git@gitlab.enst.fr:4se03/2X2X/prenom-nomgit clone depot1 depot2git status. Git vous indique ce qui est modifié et pas
encore dans l’index, ce qui est dans l’index et pas encore committé, ce
qui n’est pas tracké. Pour chaque cas, il vous indique la commande à
taper pour mettre un fichier dans l’index, l’en sortir, le committer,
etc...git log
git log --onelinegitk ou
gitg
tigorigin/main (c’est une
branche distante) : git log origin/maingit diff HEADgit diffgit diff --cachedgit diff ea678 9deadb
(remplacer ea678 et 9deadb par les numéros des
commits en question. On peut aussi passer un nom de branche)git rm fichiergit rm -r repertoiregit mv ancien_chemin nouveau_cheminAttention : ne pas oublier le
git commit après !
git add fichiers. Cette commande place la “photo” dans
l’index.git commitgit commit -agit add de certains fichiers (remettre
l’index à la version du dernier
commit) :git reset -- fichiersgit checkout -- fichiersgit checkout HEAD -- fichiersgit reset --hard ou
git checkout -f
Le commit est enregistré à la suite de celui où pointe
HEAD. Puis HEAD ainsi que l’éventuelle branche
vers lequel HEAD pointait sont déplacés vers le nouveau
commit.
git commit --amend.
Attention : ne jamais le faire si on a déjà
pushé !git fetch. Cette commande met à jour la copie locale des
branches distante (origin/xxx) mais ne répercute pas ces
modifications dans vos branches locales.git merge origin/xxxgit pull (= git fetch +
git merge)A vers
la branche distante B du serveur server :
git push server A:BA et B portent le même nom, on peut
l’abréger en git push server AA est la branche courante, on peut omettre son nom :
git push serverserver est celui par défaut (origin, ou
le seul serveur configuré), on peut omettre son nom :
git push . Attention : JAMAIS de git push -f
!!!git remote -vgh :
git remote add gh git@github.com:chemin_vers_depot.gitgit checkout nom_du_commit fichiers où
nom_du_commit peut être le SHA d’un commit, un nom de tag
ou un nom de branchegit checkout nom_du_commitSi nom_du_commit est un nom de branche, cela veut dire
qu’on a changé de branche. Tout nouveau commit sera ajouté à la nouvelle
branche :
Si nom_du_commit est un numéro de commit, on se retrouve
en mode “detached HEAD” : sur une branche qui n’a pas de nom. Tout
nouveau commit sera ajouté à cette branche. Il est fortement conseillé
de nommer cette branche pour pouvoir la retrouver plus tard :
git branch nom_de_la_nouvelle_branche ou
git checkout -b nom_de_la_nouvelle_branche
Avec les versions récentes de Git, pour éviter la confusion entre
commits et branches préférez utiliser git switch pour
changer de branche:
git switch nom_de_la_branche
Notes :
HEAD~ ou HEAD^ ou HEAD~1 :
commit précédent HEAD (idem avec un nom de branche).HEAD~~ ou HEAD^^ ou HEAD~2 :
avant-dernier commit avant HEAD (idem avec un nom de branche).HEAD~~~ ou HEAD^^^ ou
HEAD~3 : avant-avant-dernier commit avant HEAD (idem avec
un nom de branche).Attention : ^ et ~
ne veulent pas dire la même chose. Si en remontant il y a eu un
merge :
~ remonte la branche du premier parent,^N représente le Nème parent.Exemple : si on a un merge, HEAD~2 représente le
grand père en suivant le premier parent, alors que HEAD^2
représente le deuxième parent. HEAD~~~ est équivalent à
HEAD^^^ et HEAD~3, mais
pas à HEAD^3.
Rappel : dans Git, une branche est juste un pointeur vers un commit particulier. Par abus de langage, on appelle parfois “branche” l’ensemble de ce commit et de ses ancêtres.
git branch nom_de_la branchegit branch nom_de_la branche numero_de_commitgit switch nom_de_la brancheTout nouveau commit est ajouté à la suite de ce vers quoi pointe
HEAD, et HEAD ainsi que le nom de la branche
actuelle sont déplacés pour pointer sur le nouveau commit.
git merge nom_de_la_branche_à_intégrer
Cette page est mise à disposition
selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale -
Partage à l’Identique 3.0 États-Unis.
Elle utilise des images issues de http://marklodato.github.io/visual-git-guide/index-fr.html.