Ceci est une ancienne révision du document !
Git
“JE VAIS VOUS LE DIRE FRANCHEMENT : Git est exaspérant.
Attendez ! Ne partez pas tout de suite. Oui, Git est insupportable. Mais il est également indispensable”1)
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2.
Une très intéressante contribution du journaliste scientifique Clay Shirky, Comment internet transformera un jour le gouvernement?, qui évoque git et la possibilité (toute théorique) de l'utiliser comme outil législatif et budgétaire: https://www.ted.com/talks/clay_shirky_how_the_internet_will_one_day_transform_government
Install
sudo apt-get install git-core gitk
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
git config --global user.name "PSEUDO"
git config --global user.email EMAIL
vi ~/.gitconfig
[color]
diff = auto
status = auto
branch = auto
[user]
name = johndoe
email = johndoe@coincoin.org
[alias]
ci = commit
co = checkout
st = status
br = branch
Gérer ses fichiers de config avec git
Mémoriser la connexion
Mettre les clés ssh nécessaires puis sur chaque client:
git config --global user.name "<username goes here>"
Forcer le push
sur le serveur avec le dépôt
git config receive.denyCurrentBranch ignore
Basics
Les commandes de base
fork then
git remote add origin git@github.com:USER/PROJECT.git
git pull git@github.com:USER/PROJECT.git git st git add... hg commit -m "comment" git push git@github.com:USER/PROJECT.git https://github.com/zpartakov/vamosAcomer git log #details d'un commit git show 0943dce3be9c4a0f21c397f62ea18f78a4bcea26
Branch
lister les branches:
git branch
ensuite changer de branche avec:
git checkout <existing_branch>
Rollback
Revenir en arrière d'un commit
git reset --hard HEAD^
Revenir en arrière sur un commit spécifique
git reset --hard 13e8d052383d96c1cdfef188ede3dd4fdffd53ad
ou 13e8d052383d96c1cdfef188ede3dd4fdffd53ad est le numéro du commit
cherry-pick (cloner un commit d'une branche à une autre)
git cherry-pick db6f662 (remplacer db6f662 par le bon commit!)
https://dev.to/aurelievache/git-par-lexemple-cherie-ca-va-cherry-picker--37c8
Chercher / search function
git log --patch | less +/searching_string
chercher les revisions d'un auteur “Jon”
git log --author=Jon git grep [motifDeRecherche]
si on veut chercher ds ttes les versions
git log -p grep ...
Branch: "forker" en créant une branche
Clone project:
git clone git@example.com:project-name.git
Create branch with your feature:
git checkout -b $feature_name
Write code. Commit changes:
git commit -am "My feature is ready"
Push your branch to Git:
git push origin $feature_name
doc gitlab: https://docs.gitlab.com/ee/gitlab-basics/feature_branch_workflow.html#feature-branch-workflow
Cloner une branche spécifique
git clone -b my-branch https://git@github.com/username/myproject.git
exemple, cloner la branche stable de limesurvey et la mettre à jour
git clone -b 2.06lts git@github.com:LimeSurvey/LimeSurvey.git git pull git@github.com:LimeSurvey/LimeSurvey.git 2.06lts
Renommer la branche master de votre dépôt Git en main
Si vous avez un peu suivi le débat en informatique on a plus le droit de dire master et slave paske c'est mal. Donc maintenant faut dire main et… en fait je sais pas: soumis? Je crois c'est secondary
En tout cas, certains providers git exigent maintenant qu'on appelle la branche principale master.
Comment changer: https://andycostanza.gitlab.io/blog/fr/posts/2022/renommer_master_en_main_avec_git/
Thks, Andy C.!
Supprimer un fichier sensible
git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \ --prune-empty --tag-name-filter cat -- --all
git commit git push origin --force --all
Sous-modules
Pour avoir tous les sous-modules d'un repository git
git submodule update --init --recursive
Sécurité
sécuriser répertoire .git
How to use "git clone" with a custom SSH key
Sometimes you need to clone a Git repo with a different SSH key.: https://ralphjsmit.com/git-custom-ssh-key
Versions (tag)
Versions paquet zip/tarball to download with source code
git tag -a v1.0 #changer pour la bonne version git push --tags [optional git repo]]
Tutoriels
- http://raspbian-france.fr/introduction-versioning-git/ (excellent tuto avec reveal.js, voir au bas de la page ou direct http://raspbian-france.fr/cours/slides-git.html)
- https://ohshitgit.com/fr Et merde, Git!?!
Bouquins
git GUI
des clients graphiques pour git
Gitcraken / git GUI
gitcraken, un client graphique simple à configurer pour voir vos projets git
source: http://www.gitkraken.com/
qgit
qgit version graphique
GitLab
Version web libre de git qui est, lui, dans la prison CroSoft. Je n'en reviens toujours pas du nombre de librisite qui ne sont pas passés de gitHub à gitLab mais c'est comme ça
Github
Github -> gitlab
Github a été racheté par MS. C'est donc mal. On peut facilement migrer ses dépôts sur gitlab, qui est libre et opensource: Switching from GitHub to GitLab.
Et si vous voulez qu'on vous voie toujours sur windaube, ben suffit de laisser votre repo ouvert et de pointer depuis sur vos repos ouverts.
Flux RSS de github
GitHub provides some official RSS feeds officially:
Repo releases: https://github.com/:owner/:repo/releases.atom Repo commits: https://github.com/:owner/:repo/commits.atom User activities: https://github.com/:user.atom Private feed: https://github.com/:user.private.atom?token=:secret (You can find Subscribe to your news feed in dashboard page after login)
Credits: https://stackoverflow.com/questions/7353538/setting-up-a-github-commit-rss-feed#7353586
Voir aussi
- Clay Shirky : Comment internet transformera un jour le gouvernement (Git et la démocratie) une vidéo assez drôle sur la possible (l'impossible) utilisation de gitlab auprès des politicien·nes et des citoyen·nes.

