# Travailler avec des repos GitHub via la console Git
###### tags: `Git` `memo`
### Installer Git
Tuto sur GitHub
https://docs.github.com/en/get-started/getting-started-with-git/set-up-git
Installer [homebrew](https://brew.sh/fr/) pour Mac si pas existant
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
Si pas installé, peut être nécessaire d'installer xCode (mise à jour Mac notamment). Ensuite la command line tools [peut être appelée depuis la ligne de commande](https://docs.brew.sh/Installation).
```
xcode-select --install
```
Puis on lance l'install de homebrew (suivre les instructions dans le terminal)
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
Puis on [lance l'install de git](https://git-scm.com/download/mac) à proprement parler
```
$ brew install git
```
On peut vérifier que l'installation est bien faite en lançant une commande telle que `$ git init`. Si le message d'erreur correspond aux règles de git, c'est que c'est ok.
### Initialiser les options sur une machine
A faire une seule fois, process [expliqué ici](https://help.github.com/en/github/using-git/getting-started-with-git-and-github). Bon tuto [ici également](https://rogerdudler.github.io/git-guide/index.fr.html)
NB : copier dans Git Bash : `ctrl + Ins`, coller dans Git Bash : `shift + Ins`
Définir le **nom d'utilisateur** affiché dans les commits
`$ git config --global user.name "<Nom>"`
Définir l'**adresse mail** (la même que le compte GitHub, ou bien une version `noreply` via GitHub pour la cacher)
`$ git config --global user.email "<Mail>"`
On peut vérifier avec `$ git config --global user.name` et `$ git config --global user.email`
On peut créer ces infos **pour un seul repo** en enlevant le paramètre `--global`
### Utiliser une clé SSH
Pour éviter d'avoir à renseigner son mot de passe à chaque fois depuis un ordinateur de confiance, on peut créer une clé SSH. [Détails ici](https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
```
#Générer la clé
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
#Puis entrée pour valider l'emplacement par défaut
#Vérifier que la clé fonctionne
$ eval $(ssh-agent -s)
#Ajouter la clé au ssh-agent
$ ssh-add ~/.ssh/id_rsa
```
Il faut ensuite ajouter la clé au compte GitHub
```
#Copier la clé
$ clip < ~/.ssh/id_rsa.pub
#La coller dans le compte GitHub
```
Puis vérifier que tout s'est bien déroulé et a été pris en compte : `$ ssh -T git@github.com`
S'il y a un souci de connexion potentiellement lié à la clé ssh, vérifier si la clé existe en local (pbcopy < ~/.ssh/id_ed25519.pub pour la copier ou vérifier le dossier ~/.ssh) car elle peut juste manquer sur GitHub.
### Récupérer un repo depuis la machine
Indiquer de répertoire de travail (comme invite Windows)
`$ cd /d/User/Documents/etc`
Initialiser GIT
`$ git init`
Pointer vers le depot
`$ git remote add <nomdufichier> <url>`
Cloner le depot
`$git clone <url>`
Créer une branche
`$ git branch <nom>`
Changer de branche
`$ git checkout <nom>`
### Envoyer de nouveaux fichiers dans un repo
Ajouter fichiers ou dossier au stage (ou index) pour le prochain commit. ==Cette étape est essentielle, à ne pas oublier, quand on veut pusher un dossier par exemple==
`$git add <fichier>` ou `$git add *`
Faire le commit (l'ajouter au HEAD)
`$git commit`
Pour intégrer le message de validation dans la commande : `$ git commit -m "Message de validation"`
Envoyer sur GitHub
`$git push <nom>`
(il faut avoir pointé vers le repo avant)
Parfois message d'erreur qui donne les bonnes options à entrer, notamment pour indiquer la branche. Par défaut, master : `git push origin master`