Ce dépôt contient quelques ressources pour configurer son environnement de travail
- Télécharger l'installeur depuis https://gitforwindows.org/
- Exécuter cet installeur sur son poste
Un menu contextuel sera à présent disponible dans l'explorateur Windows :
- Git Bash Here
- Git GUI Here
$ 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)
$ cat ~/.ssh/id_rsa.pub
Copier cette clé vers le presse papier
- 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
#!/bin/bash
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa
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)
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
$ git mergetool
$ git config --global user.name "Prénom NOM"
$ git config --global user.email "prénom.nom@masociété.com"
$ git config --global http.sslVerify false
# 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
$ git lg
$ git cm "mon message de description de commit"
$ git st
git config --global pull.rebase preserve
Par exemple, pour fusionner la branche de développement
avec une branche de fonctionnalité
Sur son poste local, créer un sous-dossier pour héberger les sources
$ 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
)
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
git reset --merge ORIG_HEAD
git checkout -m FILE
git config --global merge.conflictstyle merge
git config --global merge.conflictstyle diff3
git checkout ma_branche
git log -1 $(git merge-base --fork-point autre_branche)
git whatchanged
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
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!"
git commit --fixup=SHA1duCommitAvecQuiFusionner
git rebase -i origin/BRANCHE_COURANTE --autosquash
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
git config --global rebase.autosquash true
GNU General Public License v3.0