git:start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
git:start [2021/11/21 07:01] – felix | git:start [2021/11/29 12:52] – felix | ||
---|---|---|---|
Line 8: | Line 8: | ||
!!! | !!! | ||
Nous réservons cette fonction aux kaznautes (toujours dans le souci de localiser les données au plus proche des utilisateurs). | Nous réservons cette fonction aux kaznautes (toujours dans le souci de localiser les données au plus proche des utilisateurs). | ||
- | Si vous souhaitez avoir un compte sur notre git, envoyez nous un courriel à [[contact@kaz.bzh|]] | + | Si vous souhaitez avoir un compte sur notre git, envoyez-nous un courriel à [[contact@kaz.bzh|]] |
??? | ??? | ||
~~MULTI_PLUGIN_CLOSE~~ | ~~MULTI_PLUGIN_CLOSE~~ | ||
====== Quelques commandes utiles ====== | ====== Quelques commandes utiles ====== | ||
+ | |||
+ | Voici quelques commandes utiles. La liste n'est pas exhaustive. En particulier, | ||
+ | Ceci est très dangereux car, si un autre développeur a entre-temps fait des mises à jour les changements incrémentaux n' | ||
+ | |||
+ | ===== Principe ===== | ||
+ | |||
+ | GIT est un moyen pour les développeurs de gérer des versions de leurs sources. | ||
+ | On distingue : | ||
+ | * une base de données sur un ou des serveurs (remote) | ||
+ | * une base de données locale chez chaque développeur (local) | ||
+ | {{ : | ||
+ | |||
+ | Voici 4 familles de commande GIT suivant le sens de déplacement des données : | ||
+ | * (1) copie une branche de la BD locale vers le répertoire courant | ||
+ | < | ||
+ | * (2) copie du répertoire courant vers une branche de ta BD locale. | ||
+ | < | ||
+ | * (3) copie du serveur vers le répertoire courant | ||
+ | < | ||
+ | * (4) copie du répertoire courant vers le serveur | ||
+ | < | ||
+ | |||
+ | ===== Initialisation ===== | ||
Si vous êtes développeurs voici quelques commandes pratiques : | Si vous êtes développeurs voici quelques commandes pratiques : | ||
Line 31: | Line 54: | ||
git config user.name Mon-Nom | git config user.name Mon-Nom | ||
</ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Vous pouvez utiliser votre éditeur préféré pour écrire un message de version. | ||
+ | En plus il indique dans des lignes en commentaire les fichiers modifiés et ceux qui ne sont pas référencés. | ||
+ | <code bash> | ||
+ | export EDITOR=emacs | ||
+ | </ | ||
+ | Il faut faire la modification dans son <wrap safety> | ||
+ | </ | ||
On peut vérifier les branches existantes : | On peut vérifier les branches existantes : | ||
Line 47: | Line 79: | ||
</ | </ | ||
- | De là on peut créer | + | ===== Développement ===== |
+ | |||
+ | Pour la création d'une sous-branche | ||
<code bash> | <code bash> | ||
Line 54: | Line 88: | ||
</ | </ | ||
- | On obtiens | + | On obtient |
< | < | ||
master | master | ||
└── develop | └── develop | ||
- | └── develop-moi | + | └── develop-perso |
</ | </ | ||
- | On peut créer des répertoires et des fichiers | + | On peut créer des répertoires et des fichiers, ils ne seront pas affectés |
On peut ajouter des fichiers avec la commande suivante (la tabulation complète avec les fichiers pas encore dans le git) : | On peut ajouter des fichiers avec la commande suivante (la tabulation complète avec les fichiers pas encore dans le git) : | ||
+ | |||
<code bash> | <code bash> | ||
git add mon-fichier | git add mon-fichier | ||
</ | </ | ||
- | A tout moment, on peut synchroniser les fichiers avec la référence | + | A tout moment, on peut synchroniser les fichiers avec la référence |
<code bash> | <code bash> | ||
git commit -a | git commit -a | ||
</ | </ | ||
- | <WRAP center round tip 60%> | ||
- | Vous pouvez utiliser votre éditeur préféré pour écrire un message de version. | ||
- | En plus il indique dans des lignes en commentaire les fichiers modifiés et ceux qui ne sont pas référencés. | ||
- | <code bash> | ||
- | export EDITOR=emacs | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
On peut changer de branche à condition faire une synchronisation avant chaque changement. | On peut changer de branche à condition faire une synchronisation avant chaque changement. | ||
Une fois que le code est satisfaisant, | Une fois que le code est satisfaisant, | ||
+ | |||
<code bash> | <code bash> | ||
git push origin develop | git push origin develop | ||
Line 90: | Line 119: | ||
Avant de modifier une branche pensez à synchroniser votre branche avec la dernière version du serveur : | Avant de modifier une branche pensez à synchroniser votre branche avec la dernière version du serveur : | ||
+ | |||
<code bash> | <code bash> | ||
git fetch -a | git fetch -a | ||
- | git pull | + | git pull une-branche |
</ | </ | ||
- | pour intégrer les modification | + | <WRAP center round tip 60%> Pour ne pas à avoir à indique quel branche vous voulez charger, vous pouvez indiquer que votre branche locale suit les mis-à-jour d'une branche distante : |
+ | |||
+ | <code bash> | ||
+ | git branch --set-upstream-to=origin/ | ||
+ | git config push.default current | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> De même si vous acceptez en cas de conflit que git fasse le mélange les modifications des autres avec votre version actuelle, vous pouvez indiquer ce paramètre par défaut : | ||
+ | |||
+ | <code bash> | ||
+ | git config pull.rebase false | ||
+ | </ | ||
+ | |||
+ | Dans ce cas, il pourra identifier des conflits qui seront signalés dans les sources (ça les rend invalides tant qu'un humain n'a pas fait des corrections nécessaires). </ | ||
+ | |||
+ | pour intégrer les modifications | ||
<code bash> | <code bash> | ||
git merge une-branche-avec-de-nouvelles-fonctions | git merge une-branche-avec-de-nouvelles-fonctions | ||
</ | </ | ||
- | Pour réinitialisé | + | Pour réinitialiser |
<code bash> | <code bash> | ||
git reset --hard HEAD | git reset --hard HEAD | ||
</ | </ | ||
+ | |||
+ | Si vous êtes plusieurs développeurs, | ||
+ | |||
+ | Mais git vous le signale avec le motif suivant : | ||
+ | < | ||
+ | <<<<<<< | ||
+ | votre code | ||
+ | ======= | ||
+ | Autre code | ||
+ | >>>>>>> | ||
+ | </ | ||
+ | |||
+ | Prenons l' | ||
+ | <code c++> | ||
+ | int i; // une variable | ||
+ | </ | ||
+ | |||
+ | Vous avez modifié votre branche <wrap safety> | ||
+ | <code c++> | ||
+ | int j; // compteur de brouzouf (avant c' | ||
+ | </ | ||
+ | |||
+ | Sur le site une modification a été enregistrée | ||
+ | <code c++> | ||
+ | int j; // compteur de brouzouf (modif dans develop) | ||
+ | </ | ||
+ | |||
+ | Au moment de <wrap safety> | ||
+ | < | ||
+ | Fusion automatique de test.c | ||
+ | CONFLIT (contenu) : Conflit de fusion dans test.c | ||
+ | La fusion automatique a échoué ; réglez les conflits et validez le résultat. | ||
+ | </ | ||
+ | L' | ||
+ | {{ : | ||
+ | |||
+ | Voici quelques commandes utiles : | ||
+ | < | ||
+ | key | ||
+ | --- | ||
+ | C-c ^ n smerge-next | ||
+ | C-c ^ p smerge-prev | ||
+ | C-c ^ u smerge-keep-upper | ||
+ | C-c ^ l smerge-keep-lower | ||
+ | C-c ^ a smerge-keep-all | ||
+ | C-c ^ RET smerge-keep-current | ||
+ | C-c ^ C smerge-combine-with-next | ||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Pour rechercher les conflits faire | ||
+ | <code bash> | ||
+ | git diff --name-only --diff-filter=U | ||
+ | </ | ||
+ | ou | ||
+ | <code bash> | ||
+ | find . -type f -exec grep -q "<<<<<<<" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Fusion ===== | ||
+ | |||
+ | Vous pourrez modifier toutes vos branches, mais vous n' | ||
+ | Dans ce cas, il faut passer par une demande de fusion via le serveur. | ||
+ | Tout ce fait avec des cliques. | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | Ensuite vous remplissez le formulaire en indiquant à gauche la branche de destination et à droite la branche qui contient modifications récentes (le sens n'est pas naturel). | ||
+ | {{ : | ||
+ | |||
+ | L' | ||
+ | {{ : |
git/start.txt · Last modified: 2022/10/20 17:18 by 127.0.0.1