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. wikipedia 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 cloner un repo (double window CLI / FS_Browser)

Etape 1 : "naviguer"

git clone git@github.com:mxbossard/mass.git
git branch
git branch -r
git switch develop
git branch
git status
git log
git log --pretty=oneline --abbrev-commit --graph --decorate
git diff
git diff HEAD
git diff HEAD^

Etape 2 : "modifier"

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

  • 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

Decentralisé

pas besoin de repo central tous l'historique en local peut commiter en local reconciliation peut être compliqué si plusieurs personnes modifie le meme fichier

Commit Hash (sha1)

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

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 2 travailler avec git

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

Creer un repo sur une forge et plugger le repo remote sur notre repo local 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

Forges git

Public

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

A déployer

TODO

Interets

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

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.1711005351.txt.gz · Dernière modification : 2024/03/21 07:15 de bigMax