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 init
git clone adresse_du_dépôt
L’adresse du dépôt à cloner peut être :
git@gitlab.enst.fr:SE203/2X2X/prenom-nom
git clone depot1 depot2
git 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 --oneline
gitk
ou
gitg
tig
origin/main
(c’est une
branche distante) : git log origin/main
git diff HEAD
git diff
git diff --cached
git 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 fichier
git rm -r repertoire
git mv ancien_chemin nouveau_chemin
Attention : ne pas oublier le
git commit
après !
git add fichiers
. Cette commande place la “photo” dans
l’index.git commit
git commit -a
git add
de certains fichiers (remettre
l’index à la version du dernier
commit) :git reset -- fichiers
git checkout -- fichiers
git checkout HEAD -- fichiers
git 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/xxx
git pull
(= git fetch
+
git merge
)A
vers
la branche distante B
du serveur server
:
git push server A:B
A
et B
portent le même nom, on peut
l’abréger en git push server A
A
est la branche courante, on peut omettre son nom :
git push server
server
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 -v
gh
:
git remote add gh git@github.com:chemin_vers_depot.git
git 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_commit
Si 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 branche
git branch nom_de_la branche numero_de_commit
git switch nom_de_la branche
Tout 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.