# Git init...iation
### Toute première fois : `git config`
* Configurer le nom:
* `git config --global user.name "John Doe"`
* Configurer l'email:
* `git config --global user.email johndoe@example.com`
* Configurer l'éditeur par défaut
* `git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe'"`
* Installer une paire de clef
* `ssh-keygen -t rsa`
* transférer id_rsa.pub sur votre compte gitlab pour chacune de vos machines
### Cloner un projet git
`git clone addresseDeRepository`
### Initialiser un nouveau projet local
`git init`
### Créer / changer de branche
La branche par défaut est `master`.
`git branch maNouvelleBranche`
`git checkout maNouvelleBranche`
### Enregistrer son travail
`git commit -am "mon travail qui fait ceci #4999"`
* l'option `a` dans `-am` signifie "all": tous les fichiers trackés sont inclus dans le commit.
* l'option `m` préfixe le message de commit.
### Envoyer un travail vers le repository
`git push`
### Ajouter des nouveaux fichiers / Commiter seulement une selection de fichiers
`git add monFichier1 monFichier2 monFichier3`
`git commit -m "commit seulement monFichier1 monFichier2 monFichier3`
### Voir les modifications actuelles / Où en suis-je ?
`git status`
### Voir l'historique et l'arborescence des modifications
`gitk`
### Enregistrer par dessus/corriger le commit précédent
`git commit --amend`
* l'option -a est toujours valable.
### Ecraser la branch distante après une modification de commit
`git push --force`
### Récupérer les travaux distants lorsque mon repo est 'clean'
`git pull`
### Installer mon travail local par dessus les travaux distants
`git pull --rebase`
**Préférez cette méthode** pour éviter les historiques pleines de croisement (`merge`).
### Gérer les conflits
`git status` montre les fichiers en conflit et les commandes à appliquer pour finir la procédure. Pour un `git pull --rebase` on corrige les conflits avec n'importe quel editeur de code, on ajoute les fichiers corrigés `git add fichierCorrigé1` et on poursuit la procédure `git rebase --continue`
### Enregistrer un brouillon
`git stash` toutes les modifications trackées sont sauvegardées dans un brouillon. Le repo revient au commit précédent.
### Réinstaller le brouillon
`git stash pop` Les modifications en cours sont réinstallées sur mon travail local.