CSC 4509 – Algorithmique et communications des applications réparties

Portail informatique

  • Je vérifie que je suis bien sur la branche en question avec la commande git branch.
    • Si j'ai des modifications non validées, je les valident. Si je ne sais pas que faire de ces modifications, je peux préferer repartir dans un nouveau répertoire et cloner dans un nouveau dépôt local.
  • Je charge les dernières modifications poussées sur le dépôt d'origine/de référence avec la commande git fetch.
  • Je vérifie l'état de ma branche par rapport avec ces dernières mises à jour avec l'outil gitk --all.
  • Si je suis d'accord pour avancer jusqu'à la dernière image de la branche, j'avance pour me mettre à jour avec la commande git pull.
  • Si je préfère partir sur une autre branche, je crée la branche et commence à travailler dessus avec la commande git checkout -b ma_nouvelle_branche.

« En cas de panique » :

  • on clone à nouveau le dépôt et continue dans la branche sprint1 :
    • mv repertoire-projet-a-probleme repertoire-projet-a-probleme-old # garder une copie au cas où du contenu n'ait pas été poussé
      git clone url_votre_projet
      git checkout XXX # on se replace dans la branche de travail courante

  • Je construis un nouvel instantané contenant les dernières modifications que je souhaite rendre accessibles. J'utilise les commandes git status, git add... et git commit.
  • Je vérifie que la branche de mon dépôt local est à jour par rapport à la même branche du dépôt GitLab, qui est le dépôt de référence, avec la commande git fetch, et au besoin, je mets à jour mon dépôt local avec la commande git pull origin. Je peux avoir à résoudre des conflits (cf. la question « Je fusionne (merge) deux branches »).
  • Je pousse mes instantanés sur le dépôt GitLab avec la commande git push origin....

  • Avant de changer de branche (pour aller sur la branche main), au besoin, je construis un nouvel instantané avec git status, git add... et git commit.
  • Je me déplace sur la branche main avec la commande git checkout main.
  • Je vérifie que la branche main de mon dépôt local est à jour par rapport à la même branche du dépôt GitLab, qui est le dépôt de référence, avec la commande git fetch, et au besoin, je mets à jour mon dépôt local avec la commande git pull origin.... Je peux avoir à résoudre des conflits (cf. la question « Je fusionne (merge) deux branches »).
  • Je fusionne avec la commande git merge --no-ff mabranche. Il est alors possible que des conflits apparaissent (cf. à nouveau la question « Je fusionne (merge) deux branches »).

  • J'utilise la commande git tag -a monEtiquette.

  • Je liste les répertoires et les fichiers non suivi (untracked) avec la commande git status.
  • Je liste les répertoires et les fichiers qui seraient supprimés avec la commande git clean -nd
  • Si je suis sûr que toutes les entrées sont à supprimer, j'utilise la commande git clean -fd
  • Je liste les outils avec la commande git mergetool --tool-help.
  • Je liste ces outils avec la commande git mergetool --tool-help.
  • Je vérifie ma configuration avec la commande git config --global merge.tool.
  • Je configure mon dépôt pour utiliser, par exemple meld, avec la commande git config --global merge.tool meld.
  • Je vérifie que le répertoire de travail est « propre », c'est-à-dire qu'il n'y a ni contenu non suivi (untracked) ni contenu modifié non validé (commit), avec la commande git status.
  • Au besoin, je valide les dernières modifications avec les commandes git add... et git commit.
  • Je me déplace dans la branche d'arrivée avec la commande git checkout....
  • Je fusionne de façon à voir un instantané qui montre la fusion, avec la commande git merge --no-ff : par exemple git merge --no-ff branche_feature_a_fusionner.
  • Si des conflits sont détectés, j'exécute la commande git mergetool pour utiliser un outil aidant à la résolution du conflit : par exemple git mergetool -t meld
    • Chaque outil possède son propre mode de fonctionnement. Pour aller plus loin, nous vous conseillons de consulter la page suivante : ici
  • Je liste les étiquettes existantes avec la commande git tag -l ou l'outil gitk --all.
  • J'ajoute une étiquette avec la commande git tag -a : par exemple git tag -a....
  • Je pousse l'étiquette sur le dépôt d'origine/de référence avec la commande git push : par exemple git push origin....
    • Vous pouvez pousser toutes les étiquettes avec la commande git push origin --tags, mais avec le risque de pousser des étiquettes que vous ne souhaitiez pas pousser.
  • Je liste les étiquettes existantes avec la commande git tag -l ou l'outil gitk --all.
  • Je supprime l'étiquette distante avec la commande git push --delete origin tag_to_remove ou la commande git push origin :tag_to_remove.
  • Au besoin, je supprime l'étiquette locale avec la commande git tag -d tag_to_remove.
  • Je vérifie que je n'ai pas de modifications en cours dans la branche courante ; si j'ai des fichiers en cours de modifications, je peux :
    1. (le plus simple) terminer ces modifications, les ajouter à la zone de transit (staging area) avec la commande git add... et les valider avec la commande git commit, ou
    2. (pour ceux qui veulent aller plus loin) mettre de côté ces modifications avec la commande git stash.
  • Je change de branche avec la commande git checkout....
  • Je ne veux pas faire de fusion de branche par exemple car il y aurait trop de changements. Je souhaite récupérer la dernière version, c'est-à-dire le fichier du dernier instantané (snapshot).
    • Il est possible de récupérer d'un autre instantané en indiquant dans la suite l'identifiant (SHA1) en lieu et place du nom de la branche.
  • Je peux récupérer uniquement un fichier, par exemple chemin_vers_fichier/fichier_a_recuperer, d'une branche, par exemple autre_branche, avec la commande git checkout autre_branche chemin_vers_fichier/fichier_a_recuperer.
  • Comme cette récupération n'est pas visible dans l'arbre des instantanés, je valide ce changement en mettant un message approprié avec la commande git commit -m "fichier_a_recuperer en provenance de la branche autre_branche".
  • Je mets à jour mon dépôt local avec l'option -p (pour prune) de la commande git fetch, ce qui donne la commande git fetch -p.
    • Les anciennes branches qui n'existent plus sur le dépôt distant ont disparu.
  • Je me mets sur une autre branche avec la commande git checkout autre_branche.
  • Je supprime la branche sur le dépôt distant avec la commande git push origin :branche_a_supprimer (notez le caractère « : »).
  • Au besoin, je supprime aussi la branche locale avec la commande git branch -d branche_a_supprimer, voire avec la commande git branch -D branche_a_supprimer même si je perds du contenu (des instantanés) par exemple parce que la branche n'a pas été fusionnée.
  • La suppression de branches peut laisser des parties de graphes non incluses dans une branche : c'est du contenu « mort ». Je peux nettoyer mon dépôt avec la commande git gc.
  • Vous pouvez lire ici.
  • Essayez les options -s et --porcelain.
  • Avec la commande git status --ignored.
  • Essayez la commande git log --graph puis git log --graph --oneline.

 

 

 


$Date: 2017-05-17 13:01:17 +0200 (mer. 17 mai 2017) $