Giter VIP home page Giter VIP logo

formationgit's Introduction

Formation à Git

Ce dépôt contient quelques ressources pour configurer son environnement de travail

Installer Git Bash

Ouvrir Git Bash dans un dossier

Un menu contextuel sera à présent disponible dans l'explorateur Windows :

  • Git Bash Here
  • Git GUI Here

Création d'une nouvelle clé SSH compatible avec GitLab

Lancer Git Bash et saisir cette commande

$ ssh-keygen -t rsa -C "monadressemail@masociété.com" -b 4096

Saisir ou non un mot de passe (il faudra alors le saisir à chaque ouverture de Git Bash s'il est défini)

Afficher le contenu de la clé publique

$ cat ~/.ssh/id_rsa.pub

Copier cette clé vers le presse papier

Associer cette clé publique avec le dépôt GitLab

  • Aller sur GitLab
  • Menu Settings
  • Onglet SSH Keys
  • Coller la clé dans le champ prévu à cet effet
  • Donner un titre clair à cette clé
  • Cliquer sur Add Key pour valider

Utilisation de cette clé dans les nouvelles sessions Git Bash

Editer (ou créer) le fichier %userprofile%/.bashrc

#!/bin/bash
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa

Configurer WinMerge en tant qu'outil de fusion par défaut

Télécharger WinMerge depuis http://winmerge.org/downloads/?lang=fr

L'installer dans le dossier par défaut (sinon il faudra adapter le chemin dans le code ci dessous)

Editer le fichier ~/.gitconfig

Coller cette configuration

[mergetool]
    prompt = false
    keepBackup = false
    keepTemporaries = false

[merge]
    tool = winmerge

[mergetool "winmerge"]
    name = WinMerge
    trustExitCode = true
    cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e -dl \"Local\" -dr \"Remote\" $LOCAL $REMOTE $MERGED

[diff]
    tool = winmerge

[difftool "winmerge"]
    name = WinMerge
    trustExitCode = true
    cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e $LOCAL $REMOTE

Utiliser WinMerge pour résoudre un conflit de fusion

Sous Git Bash :

$ git mergetool

Configurer son compte

Sous Git Bash :

$ git config --global user.name "Prénom NOM"
$ git config --global user.email "prénom.nom@masociété.com"

Désactiver les erreurs de certificat HTTPs

Sous Git Bash :

$ git config --global http.sslVerify false

Créer quelques alias utiles

Sous Git Bash :

# Log des commits locaux et distants au format résumé et graphique
$ git config --global alias.lg "log --graph --oneline --decorate"

# Log des commits locaux uniquement au format résumé et graphique
$ git config --global alias.llg "log --oneline --graph --branches --not --remotes"

# Commit avec message
$ git config --global alias.cm "commit -m"

# Affichage du statut
$ git config --global alias.st status

Utiliser ces alias

Sous Git Bash :

$ git lg
$ git cm "mon message de description de commit"
$ git st

Configurer l'utilisation de l'option rebase lors de l'appel à pull

Sous Git Bash :

git config --global pull.rebase preserve

Faire un rebase pour conserver un historique propre

Par exemple, pour fusionner la branche de développement avec une branche de fonctionnalité

Sous Windows :

Sur son poste local, créer un sous-dossier pour héberger les sources

Sous Git Bash :

$ git clone <url_projet> 
$ git checkout -b <source_branch> origin/<source_branch> 
$ git rebase -i origin/<target_branch>
# pick / squash / delete commits + résoudre conflits
$ git rebase --continue (ou --abort)
$ git checkout -b <target_branch> origin/<target_branch> 
$ git merge <source branch> --squash # c’est un fast forward 
$ git commit -m "descriptif du commit de synthèse"
$ git push
  • La branche source est celle dont les commits vont être rejoués (ex : branche de fonctionnalité)
  • La branche cible est celle dont le dernier commit va servir de nouveau parent à la branche source (ex : branche de développement)

Revenir en arrière sur une opération de fusion

Ceci permet d'annuler la dernière opération de type

  • rebase
  • merge
  • pull avec rebase ou merge

sans avoir à retrouver le SHA1 du commit

Sous Git Bash :

git reset --merge ORIG_HEAD

Annuler une résolution de conflit de fichier

Sous Git Bash :

git checkout -m FILE

Configurer l'affichage par défaut lors d'un conflit de fusion

Sous Git Bash :

git config --global merge.conflictstyle merge

Configurer l'affichage de l'ancêtre commun à deux branches lors d'un conflit de fusion

Sous Git Bash :

git config --global merge.conflictstyle diff3

Afficher le commit représentant l'ancêtre commun à deux branches

Sous Git Bash :

git checkout ma_branche
git log -1 $(git merge-base --fork-point autre_branche)

Afficher les fichiers modifiés dans les différents commits

Sous Git Bash :

git whatchanged

Changer l'auteur de tous les commits sans modifier la date

Sous Git Bash :

git filter-branch -f --env-filter "
    GIT_AUTHOR_NAME='Newname'
    GIT_AUTHOR_EMAIL='new@email'
    GIT_COMMITTER_NAME='Newname'
    GIT_COMMITTER_EMAIL='new@email'
  " HEAD

Utiliser l'autosquash et le fixup

Ceci permet d'amender simplement un commit de l'historique local avec un nouveau commit via la commande de rebase interactif. Le message de commit n'est pas obligatoire. Celui du commit amendé sera repris par défaut, préfixé par "fixup!"

Sous Git Bash :

git commit --fixup=SHA1duCommitAvecQuiFusionner
git rebase -i origin/BRANCHE_COURANTE --autosquash

Configurer l'autosquash par défaut

Cette option sera utilisée uniquement lors d'un rebase interactif et prendra en compte les commits typés fixup. Il n'y aura plus besoin de saisir le paramètre --autosquash dans la commande de rebase interactif

Sous Git Bash :

git config --global rebase.autosquash true

License

GNU General Public License v3.0

formationgit's People

Stargazers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.