Outils pour utilisateurs

Outils du site


workshop_git

Ceci est une ancienne révision du document !


Workshop Git : initiation

git sur wikipedia

Presentation

L' outil de gestion de versions le plus populaire au monde.

Il est décentralisé : on a pas besoin d'un serveur pour l'utiliser.

Usages

  • Historiser des modifications de fichiers
  • Comparer des versions (principallement des fichiers textes)
  • Collaborer

Disclaimer

  • Plusieurs manières différentes de faire certaines actions
  • Lire les indication donnés par git qui sont très très très très utiles
  • Votre moteur de recherche préféré + stackoverflow sont vos amis pour trouver quoi faire en toute situation

help

  • git help
  • man git
  • tldr git ?

Tuto 1 : débuter en clonant un dépôt git existant (double window CLI / FS_Browser)

git clone git@github.com:mxbossard/mass.git
git branch
git branch -r
git switch develop
git branch
git log
git log --pretty=oneline --abbrev-commit --graph --decorate
git hist ORIG_HEAD.. --stat --no-merges

Tuto 2 : modifier des fichiers comparer et commit les modifications

git status
git diff
git diff HEAD
git diff HEAD^
echo foo > bar
echo baz >> README.md
git status
git diff
git add .
git status
git diff
git diff --staged
git commit -m "ma modif"
git log
git diff
git diff HEAD
git diff HEAD^

Mot clés

  • repo : repository ou dépôt en français : espace de stockage git (peut être local ou distant)
  • commit : collections de fichiers & dossiers représentés par un hash (sha1)
  • worktree / working tree / working directory : repertoire de travail qui reflete le contenu d'un commit
  • index / staging area : zone tampon qui stoque des modification en attente de commit
  • HEAD : pointeur vers le commit du working tree
  • tag: pointeur vers un commit
  • branch : pointeur "mouvant" vers un commit

Fonctionnement

Décentralisé

  • Pas besoin de repo central
  • Tout l'historique en local
  • On peut commit dans son repo local
  • La réconciliation peut être compliqué si plusieurs personnes modifie le même fichier simultanément (classique, ce n'est pas magique)

Commit Hash (sha1)

Hash des données et méta-données contenu dans le commit. Une représentation du commit réputé unique dans un repo.

  • exemple de hash : f8f3f58c67b5be45cc4595d0dace0728f5c9c9bf
  • exemple de short hash : f8f3f58

Index

zone tampon qui permet de construire un nouveau commit

diff comme patch

les git diff permette de produire des fichiers patch qui peuvent être appliqués à la main

Tuto 3 : Initialiser son propre dépôt git et travailler dessus

git init myrepo
cd myrepo
touch myfile
git commit -a -m message
echo foo > myfile
git commit -a -m foo
echo bar > baz
git checkout -b develop
git commit -a -m baz
echo bar >> baz
git status
git stash
git status
git stash list
git switch master
git status
git switch develop
git stash apply
git commit -m -a "baz2"
git tag 0.0.1
git tag
git checkout HEAD^
git checkout HEAD^^
git checkout 0.0.1
git switch develop

Forges git

Public

  • framagit.org
  • gitlab.com
  • github.com

A déployer

TODO

Intérêts

  • Des outils graphiques en plus (diff, ...)
  • Un repo central souvent plus pratique pour callaborer
  • Fork & Pull Request organisé
  • Pipelines
  • Pages
  • ...

Tuto 4 : Creer et suivre (track) un remote repo (dépôt distant) sur une forge git

TODO git remote git push

Quoi commit ?

.gitignore file

A commit

  • des sources
  • des test
  • des configurations applicatives

A ne pas commit

  • des binaires
  • des fichiers temporaires
  • la configuration de son IDE

Travail collaboratif

  • Lorsqu'on travail à plusieurs, Il est important de synchroniser sont repo local le plus souvent possible pour éviter de trop grosses divergences.

  • A plusieurs, il est toujours compliqué de travailler simultanément sur les même fichiers. Lorsque c'est possible, il vaut mieux s'attribuer à chacun une compétence sur des fichiers différents

Git flows

TODO

  • Pour travailler seul et surtout a plusieurs nécéssaire de se mettre d'accord sur un procéssus
  • Expliqué une propal de git flow
  • Linker d'autres git flows

Reset, Restore, Revert

TODO

Merge vs Rebase ?

TODO

Trucs utiles

git config

Alias tiptop

git config --global alias.s status
git config --global alias.who shortlog -sne
git config --global alias.changes diff --name-status
git config --global alias.dic diff --cached
git config --global alias.d diff --stat
git config --global alias.hist log --pretty=oneline --abbrev-commit --graph --decorate
git config --global alias.lc !git hist ORIG_HEAD.. --stat --no-merges
git config --global alias.amend commit --amend
git config --global alias.undo git reset --soft HEAD^
git config --global alias.spull !__git_spull() { git pull "$@" && git submodule sync --recursive && git submodule update --init --recursive --remote; }; __git_spullgit config --global alias.spush push --recurse-submodules=on-demand

authent avec ssh

ssh keygen ?

git init --bare

TODO

workshop_git.1711006928.txt.gz · Dernière modification : 2024/03/21 07:42 de bigMax