Installation et configuration de Git
Installation et configuration de git pour github.
On ne montrera pas ici comment utiliser git en ligne de commande.
Installation
Git
Sous mac
Sous mac
On utilise brew :
brew install git
Windows
Windows
Le package https://gitforwindows.org/ est très bien.
Gardez les paramètres par défaut lors de l'installation à part pour le choix de l'éditeur par défaut. Remplacez vim par notepad++ par exemple (si vous n'avez pas notepad++, installez le) et surtout pour le choix des bibliothèques ssh à utiliser : choisissez use external openssh :
Github cli
Vous pouvez aussi télécharger l'utilitaire de github pour la ligne de commande : github CLI.
CLI signifie Command Line Interface.
Nous ne l'utiliserons pas ici, mais je vous invite à lire sa documentation, il permet d'interagir avec github uniquement à la ligne de commande sans cliquer sur aucun bouton, ce qui est plus rapide.
Configuration
Vous allez travailler sur vos projets git à plusieurs. Il faut pouvoir à tout moment savoir qui a fait quoi sur le projet. Il est donc impératif que vos données personnelles soient à jour.
Info personnelles
Renseigner ces infos de façon globale pour tout projet (vous pourrez changer ces infos pour chaque projet, mais mettez des infos corrects par défaut) :
Dans un terminal, tapez les commandes
git config --global user.name "Your name here"
git config --global user.email "your_email@example.com"
Rebase comme fusion
On définie tout de suite la stratégie de fusion.
Dans un terminal, tapez la commande
git config --global pull.rebase merges
Ceci nous permettra par défaut :
- de faire un rebase de l'origin sur votre branche locale
- de préserver les merge (fusion) de branches déjà présentes (et qui donc, si elles existent, ont une fonction sémantique dans votre projet)
Vous pourrez ensuite faire des git pull
tout seul et ils seront rebasés par défaut et préserveront les merges existant. Le meilleur des deux monde en somme.
Branche par défaut
Pour être cohérent avec github, on va dire que tout nouveau projet commence avec la branche main
.
Par défaut c'est master
(et ça fait des histoires).
Dans un terminal, tapez la commande
git config --global init.defaultBranch "main"
Éditeur de messages
On va mettre vim comme éditeur par défaut pour renseigner les commits.
Dans un terminal, tapez la commande
git config --global core.editor vim
Vous n'utiliserez que très peu l'éditeur par défaut une fois que vous ferez vos commit avec l'option -m
.
Vous pouvez également mettre votre éditeur favori bien sur, mais vim
sera toujours présent quelque soit l'endroit où au aurez besoin de faire un commit (genre un serveur distant). Il est donc bien d'avoir quelque notions de vim et de les utiliser de temps en temps, d'où cette configuration.
Configurations optionnelles
On met de la couleur dans le terminal par défaut.
Dans un terminal, tapez la commande
git config --global color.ui true
Pour éviter d'avoir un pager lors des git log
.
Dans un terminal, tapez la commande
git config --global pager.log false
Si l'on ne met pas cette option, les logs seront automatiquement passé à more
par défaut pour paginer les résultats.
On obtiendrait le même résultat sans utiliser la config ci-dessus en utilisant l'argument de git --no-pager
, par exemple :git --no-pager log
. Notez que --no-pager
est un argument de git, pas de sa commande log
, il est donc placé avant celle-ci.
Initialiser un projet pour github
Documentation
Cloner un projet existant
Documentation
le projet existe déjà sur github et je le clone chez moi C'est dans le menu déroulant clone
sur la page github du projet. Par exemple pour le projet animaux :
cloner un projet
Il existe plusieurs façon de procéder :
- https
- ssh
- github CLI
La différence entre ces trois modes est le moyen d’authentification entre votre ordinateur et github.
Après chaque clonage vous aurez un dossier du nom de votre projet contenant :
- tous les fichiers de l'état du projet actuel
- un dossier caché
.git
contenant :- l'historique complet du projet
- la configuration de
git
du projet
Lorsque je regarde tous les fichiers du dossier contenant le projet animaux
j'obtiens par exemple :
fbrucker@so-high git-projets/animaux ±main » ls -la
total 32
drwxr-xr-x 7 fbrucker staff 224 29 aoû 08:57 .
drwxr-xr-x 3 fbrucker staff 96 29 aoû 08:57 ..
drwxr-xr-x 12 fbrucker staff 384 29 aoû 08:57 .git
-rw-r--r-- 1 fbrucker staff 66 29 aoû 08:57 .gitattributes
-rw-r--r-- 1 fbrucker staff 18 29 aoû 08:57 mammifères.txt
-rw-r--r-- 1 fbrucker staff 49 29 aoû 08:57 oiseaux.txt
-rw-r--r-- 1 fbrucker staff 23 29 aoû 08:57 poissons.txt
J'ai utilisé le terminal pour le faire, mais vous pouvez très bien utiliser l'explorateur de fichier, à condition d'avoir activé la vue des fichiers cachés
Selon la méthode de clonage utilisé, seule la méthode d'authentification dans le fichier de configuration changera.
A moins que vous n'ayez une clé ssh, utilisez le clonage utilisant le protocole https
.
Clonage https
- dans un terminal, placez vous dans un dossier où seront rangés vos projets github. Pour mon mac, j'ai choisi
~/Documents/git-projets/
- tapez la commande :
git clone [le nom du projet]
. Dans mon cas, le menu déroulant "clone" m'indique qu'il faut taper la commande :git clone https://github.com/Test-cours-ecm/animaux.git
- j'ai maintenant un dossier animaux contenant la branche
main
du projet :
Le dossier .git
contient l'entièreté du projet, en particulier son fichier de configuration .git/config
fbrucker@so-high git-projets/animaux ±main » cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/Test-cours-ecm/animaux.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main
La seule chose à retenir ici est :
- github est identifié comme la branche
origin
et son protocole de communication esthttps://
- la branche
main
est disponible sur l'origin.
Clonage github CLI
Il faut d'abord s'identifier (gh auth login
) avant de pouvoir cloner le repo : gh repo clone Test-cours-ecm/animaux
.
Ensuite, tout se passe comme précédemment. L'intérêt d'utiliser le github CLI
est de pouvoir gérer directement les spécificités de github comme les pull request par exemple.
Clonage ssh
C'est la méthode à privilégier si vous êtes informaticien. C'est à dire que vous allez faire des commits tous les jours et jongler avec les repos de votre projet.
Sinon, vous pouvez ne pas utiliser cette méthode.
MOntrons juste les différences de configuration entre les méthodes précédentes et celle-ci :
-
Commande de clonage :
git clone git@github.com:Test-cours-ecm/animaux.git
-
Fichier de configuration :
fbrucker@so-high git-projets/animaux ±main » cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = git@github.com:Test-cours-ecm/animaux.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "main"] remote = origin merge = refs/heads/main
On voit que le protocole d’authentification n'est pas https://
, il faut avoir lié une clé ssh à son compte github.
TBD : lien vers cours spécial avec ssh en prérequis
Créer un nouveau projet et l'envoyer sur github
Le projet existe en dehors de github et je veux le mettre sur github. Par exemple :
- un dossier
planètes
contenant un fichiersolaire.txt
:
fbrucker@so-high git-projets » ls -la planètes
total 8
drwxr-xr-x 3 fbrucker staff 96 29 aoû 09:44 .
drwxr-xr-x 4 fbrucker staff 128 29 aoû 09:45 ..
-rw-r--r-- 1 fbrucker staff 57 29 aoû 09:44 solaire.txt
- on se place dans le dossier du projet
cd planètes
- on met en place le repo git avec la commande
git init --initial-branch="main"
- on fait le premier commit pour initialiser le projet :
git add solaire.txt
(on ajoute tous les fichiers au stage, ici il n'y a en a qu'un)git commit -am"initial commit"
(on effectue le premier commit)
Si l'on regarde le fichier de configuration de git :
fbrucker@so-high git-projets/planètes ±main » cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
Il manque la partie remote et branch. On pourrait très bien juste recopier ces parties dans le fichier de configuration, mais faisons le avec des commandes git :
Ajout de github :
- Créer un projet github qui va contenir notre projet git. Sur github, allez dans le menu utilisateur (à droite) puis choisissez "your repositories". Cliquez ensuite sur new pour créer un nouveau projet. Ne créez pas de fichiers
readme
ou.gitignore
, il faut que ce projet soit vierge pour accueillir sans merge notre projet. - sur notre ordinateur, on ajoute l'origin (suivez la doc). Dans mon cas :
git remote add origin https://github.com/Test-cours-ecm/planetes.git
- on envoie notre projet git sur github et on lui associe la branche main :
git push --set-upstream origin main
.
L'item 3 permet que la commande git push
soit équivalente à la commande git push origin main
.
A la fin, le fichier de config du projet ressemble à ca :
fbrucker@so-high git-projets/planètes ±main » cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/Test-cours-ecm/plan-tes.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main