|
|
Installer git sur vos machines (si besoin... a priori git est déjà installé)
|
|
|
* wget/curl https://github.com/git/git/archive/master.zip
|
|
|
* unzip dans ~/myopt/git => make
|
|
|
* mettez à jour le PATH dans .bash_profile pour pointer vers ~/myopt/git
|
|
|
|
|
|
Tout d'abord, créer un dossier (odeva_git) où vous allez stocker tous les projets de la séance GIT.
|
|
|
|
|
|
Les premières expérimentations seront réalisées en local
|
|
|
|
|
|
## Renseigner votre identité
|
|
|
- Dans tout système de gestion de version il faut décliner sans ambiguïté son identité
|
|
|
- git config --global user.name "Your Name"
|
|
|
- git config --global user.email you@example.com
|
|
|
- cela générera un fichier .gitconfig à la racine de votre dossier personnel
|
|
|
|
|
|
## Création d'un entrepôt
|
|
|
|
|
|
- Tapez la commande "git init NOM_PROJET"
|
|
|
- Regarder le contenu du répertoire NOM_PROJET (ls -al)
|
|
|
|
|
|
-----
|
|
|
|
|
|
## Ajout des fichiers
|
|
|
|
|
|
- Dans le répertoire INITIAL, créez un fichier texte VOTRE_NOM.txt
|
|
|
- Fait-il déjà parti de l'entrepôt? Comment peut-on le savoir? Inspirez-vous en exécutant la commande suivante "git help"
|
|
|
- Si besoin, ajoutez le fichier à l'entrepôt? Est-ce que le fichier à bien été ajouté à l'entrepôt?
|
|
|
|
|
|
-----
|
|
|
|
|
|
## Cloner un entrepôt
|
|
|
|
|
|
- Pour vous convaincre que le fichier à bien été ajouté, vous aller faire une clone de votre INITIAL.
|
|
|
- Replacez-vous dans le répertoire odeva_git et tapez la commande suivante "git clone NOM_PROJET NOUVELLE_COPIE"
|
|
|
- Réalisez deux types de clones
|
|
|
- normal avec git clone COPIE (n'acceptant pas les pushs, avec répertoire de travail)
|
|
|
- bare avec git clone COPIE_symb --bare (acceptant les pushs, sans répertoire de travail)
|
|
|
- Est-ce que la COPIE_symb contient le fichier VOTRE_NOM.txt ? Si non, peut être vous avez oublié de faire un "commit" lors de l'étape précédente. Mais rien, n'est perdu...
|
|
|
|
|
|
-------
|
|
|
|
|
|
## Transmettre des mises à jour (sur entrepôts symboliques/bare uniquement)
|
|
|
- Revenez dans le répertoire NOM_PROJET et créez un deuxième fichier VOTRE_NOM.html
|
|
|
- Ajoutez-le à la version courante de l'entrepôt en réalisant également un "commit".
|
|
|
- Vous pouvez ensuite transmettre à d'autres entrepôts bare (comme par exemple COPIE_bare) cette nouvelle version.
|
|
|
- Pour anticiper les modifications que cela engendra sur l'entrepôt destination vous pouvez utiliser la commande "git push --dry-run ENTREPOT BRANCHE_LOCALE:BRANCHE_DISTANTE" pour la documentation.
|
|
|
- Si vous êtes satisfait de la réponse reçue vous pouvez utiliser la commande "git push" pour mettre à jour l'entrepôt destination - "git help push" pour la documentation
|
|
|
|
|
|
-------
|
|
|
|
|
|
## Rechercher / Accepter des mises à jour
|
|
|
- Lorsqu'un autre entrepôt a évolué et les développeurs ont peut être apportées une solution à un problème qui vous intéressent particulièrement vous pouvez faire une demande de "fetch".
|
|
|
- des informations sur les objets et les tags de l'entrepôt cible sont récupérés et assigner à une "branche" temporaire/fictive FETCH_HEAD qui restent inaccessible en édition.
|
|
|
- il est possible d'observer les différences par rapport à la branche courant avec git diff FETCH_HEAD.
|
|
|
- il est possible de consulter l'historique de cette branche avec git log FETCH_HEAD (évaluer sa crédibilité)
|
|
|
- ensuite il est possible de répercuter les modifications en réalisant un git merge FETCH_HEAD (entre branche courante et FETCH_HEAD)
|
|
|
- L'ensemble de ces opérations peut être réalisé par un git pull qui rapatrie la branche distante en locale, réalise le merge avec la branche courante et met à jour le répertoire de travail.
|
|
|
|
|
|
------
|
|
|
## Résolution de conflits
|
|
|
|
|
|
- Modifiez une nouvelle fois le fichier VOTRE_NOM.html dans le répertoire INITIAL et effectuez un commit de suite.
|
|
|
- Modifiez une nouvelle fois le fichier VOTRE_NOM.html dans le répertoire COPIE et effectuez un commit de suite.
|
|
|
- Depuis le répertoire COPIE lancez une opération PULL sur l'entrepôt INITIAL
|
|
|
|
|
|
- A la différence de HG, le merge est réalisé de manière automatique. Si la même portion du fichier a été modifié, le merge n'est pas capable de résoudre les conflits par lui même.
|
|
|
- vous éditez le fichier en conflit (VOTRE_NOM.html) afin qu'ils correspondent à vos souhaits/aux besoins de l'application etc.
|
|
|
- vous marquez toujours avec la commande "git add" les fichiers n'ayant plus de conflit.
|
|
|
- une fois tous les conflits résolus, vous refaites un commit |
|
|
\ No newline at end of file |