Le concept¶
git est un système de contrôle (version) rapide, évolutif et distribué, initialement développé par Linus Torvalds (en savoir plus sur le noyau git]. git permet de coordonner le travail entre collaborateurs au-delà de la programmation, dans n’importe quel ensemble de fichiers. Son soutien aux flux de travail non linéaires, à la vitesse et à l’intégrité des données fait de git un outil indispensable dans de nombreuses industries et recherches. Avant de commencer à lire ce tutoriel git, regardez le fonctionnement schématique des dépôts hébergés avec git.

Le concept de vocabulaire git et de base. Le cadre REMOTE est en ligne (c’est-à-dire l’ordinateur de quelqu’un d’autre) et le cadre LOCAL est ce qui se passe sur un ordinateur personnel, qui est connecté à Internet. Les dépôts peuvent être nouvellement créés ou fourrés à distance. Les dépôts à distance peuvent être clonés localement, modifiés localement et les modifications locales peuvent être poussées vers un dépôt à distance. Les collaborateurs veulent s’assurer de tirer régulièrement les modifications d’un dépôt distant. Travailler avec et sur différentes branches devient de plus en plus important avec le nombre de développeurs (voir la section sur la collaboration et les branches ci-dessous) et pour le moment nous devons juste nous rappeler que nous commençons à travailler dans la branche principale (c.-à-d., origine en amont / HEAD = main).
Installer git¶
Les documents fournis avec ce livre électronique sont les mieux téléchargés et mis à jour en utilisant des environnements git (éviter de télécharger les documents sous forme de fichier zip).
Bien que git soit une caractéristique intégrale de la plupart des distributions Linux, les utilisateurs de Debian pourraient encore avoir besoin de l’installer. À cette fin, ouvrez Terminal et tapez :
sudo apt install gitTéléchargez et installez Git Bash et utilisez-le avec un IDE comme PyCharm’s Community Edition ou VS Code.
Les utilisateurs macOS peuvent utiliser Homebrew pour installer git, mais il existe d’autres options, comme Xcode.
Pour utiliser Homebrew pour installer git, commencez par installer Homebrew par le macOS Terminal:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"L’installation de Homebrew peut prendre un certain temps. Après l’installation, assurez-vous d’exporter la variable PATH requise (copier ligne par ligne):
echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/$USER/.zprofile
eval $(/opt/homebrew/bin/brew shellenv)Il est possible que les chemins des commandes ci-dessus doivent être adaptés aux répertoires que l’installateur Homebrew invite à la fin de son installation.
Enfin, installer git avec Homebrew :
brew install gitEn fin de compte, Homebrew fournit beaucoup d’autres paquets, qui sont essentiellement utiles pour les développeurs, comme ruby ou React (aller à la liste complète des paquets).
Read more installation instructions and about options for git on macOS at https://
Les dépôts de ce cours sont principalement hébergés sur GitHub. Il y a beaucoup d’autres fournisseurs de services git, comme GitLab, plan.io, ou BitBucket.
Créer un dépôt¶
Pour créer un dépôt git, assurez-vous d’avoir accès à un fournisseur git. La façon la plus populaire d’accéder à un serveur git-able est de s’inscrire avec un serveur sur la longue liste de fournisseurs git populaires.
Clone (Télécharger) un dépôt¶
GitHub fournit des descriptions détaillées et des procédures standard pour travailler avec leurs dépôts (read more]. Les guides « recettes » suivants sont utilisés pour la première fois dans le téléchargement de git :
Ouvrez votre ligne de commande git préférée :
Windows Options : PowerShell, Git Bash ou *Commandement
Linux: Terminal
Cloner le dépôt de cours (changer le matériel selon le cours) :
git clone https://github.com/hydro-informatics/materials(ou tout dépôt que vous voulez cloner)
C’est fait.
Tirer (Mise à jour/Re-Télécharger) un dépôt local¶
git (dans Git Bash, PyCharm ou Terminal) est la seule option pour mettre à jour de façon uniforme les copies locales d’un dépôt distant. Pour ce faire, ouvrez l’une des lignes de commande git susmentionnées et faites ce qui suit :
Go to the local directory of the repository with the
cdcommand (e.g.,materials):
cd "D:/Python/materials/"(or wherevermaterialswas cloned).git status- montre les modifications apportées.Les conflits de fusion peuvent survenir lorsque des modifications ont été apportées à la copie locale. Pour maintenir l’historique local linéaire, tapez :
git pull --rebase- si les fichiers modifiés localement ont été modifiés à distance depuis la dernière sortie, git mettra en évidence les sections problématiques (confrontantes) avec<<<<<<<,=======, et>>>>>>>marqueurs. Ouvrir manuellement les fichiers concernés, résoudre les conflits et supprimer les marqueurs de conflit invalides. Puis marquez les fichiers comme résolus avecgit add FILENAMEet finalisez avecgit rebase --continue.
C’est fait.
Mettre à jour un dépôt à distance (Modifications locales de push)¶
Après avoir édité les fichiers dans un dépôt localement, add - commit - push (dans cet ordre) vos modifications à la copie distante du dépôt avec contrôle de version. Vers add - commit - push modifications locales à un dépôt distant, assurez-vous d’être le propriétaire du dépôt distant ou un contributeur. Ouvrez ensuite un terminal git-able et tapez :
git status- cela montre les modifications apportées.If the status only lists consciously made changes, type
git add .
Alternatively, if only single files were changed, usegit add filename.pyinstead. Best practice: exclude files that should never be tracked (e.g., temporary or large binary files) with a local .gitignore file.Communiquez les changements avec
git commit -m "Leave a message"- laissez un message court significatif et précis (par exemple,"fix typos in flow calculator").git pull --rebase- si les fichiers modifiés localement ont été modifiés à distance depuis la dernière traction, git mettra en évidence les sections problématiques (conflictuelles) avec<<<<<<<,=======, et>>>>>>>marqueurs. Ouvrir manuellement les fichiers concernés, résoudre les conflits, supprimer les marqueurs de conflit invalides, puis lancergit add FILENAMEetgit rebase --continue.git push
En cas d’erreur, lisez attentivement pourquoi l’erreur s’est produite et suivez les instructions pour le dépannage (p. ex., pour configurer votre utilisateur avec git config --global user.email “email@example.com”). Vous pouvez ignorer les messages d’avertissement concernant les formats line-end (WARNING ... LF se termine ...) pour la plupart des applications présentées dans ce livre électronique.
Collaboration et branches¶
Dès que plus d’une personne travaille sur un dépôt (ou qu’une personne travaille sur plus d’une fonctionnalité), tout engager directement à la branche main devient sujet à erreur. La meilleure pratique est de garder main toujours dans un état de travail et de développer de nouvelles fonctionnalités, des corrections, ou des expériences sur les branches dédiées**. Une branche est une ligne de développement indépendante qui commence comme une copie d’une autre branche (typiquement main) et peut ensuite être fusionnée.
Créer une branche¶
Pour créer une nouvelle branche et y passer, ouvrez un terminal git dans le dépôt local et tapez :
git switch main- assurez-vous de commencer par la branchemain(anciennes versions git nécessitentgit checkout main).git pull- mettre à jour la branchemainpour éviter de brancher hors d’un état dépassé.git switch -c fix-hydraulics-chapter- créer et passer directement à une nouvelle branche (ici appeléfix-hydraulics-chapter; les anciennes versions git nécessitentgit checkout -b fix-hydraulics-chapter). Utilisez des noms descriptifs courts, commefix-typos-git-chapteroufeature-sediment-transport.
git branch liste toutes les branches locales et marque la branche actuellement active avec un *. Changer de branche avec git switch BRANCH-NAME.
Modifier (Travailler sur) une branche¶
Travailler sur une branche est exactement le même add - commit - push workflow comme décrit dans la section Mettre à jour un dépôt à distance (Modifications locales de push), avec une différence : la première poussée doit indiquer au dépôt distant la nouvelle branche. Ainsi:
Modifier les fichiers, puis
git statusetgit add .(ougit add filename.py).git commit -m "Leave a message"- engager de petites unités de travail cohérentes plutôt qu’un engagement géant à la fin.git push -u origin fix-hydraulics-chapter- le drapeau-u(en amont) relie la branche locale à la branche distante, de sorte que toutes les mises à jour ultérieures ne nécessitent qu’une simplegit push.
Pour tenir une branche de longue durée à jour avec les développements en cours à main, tapez régulièrement (avec la branche de fonctionnalité active):
git fetch origin
git merge origin/mainRésoudre les conflits possibles tels que décrits dans la section Tirer (Mise à jour/Re-Télécharger) un dépôt local (ici, conclure par git commit plutôt que par git rebase --continue).
Commentaire et examen (demandes de tirage)¶
La fusion directe d’une succursale sans aucun examen fonctionne pour des projets en solo, mais dans une équipe, la meilleure pratique est d’ouvrir une demande pull (appelée merge request sur GitLab). Une demande de tirage est une proposition de fusion d’une branche dans une autre et constitue le lieu central pour commenter le code:
Poussez la branche vers le dépôt distant (voir ci-dessus).
Sur GitHub, la page du dépôt vous suggérera Compare & pull request pour les branches récemment poussées. Alternativement, allez à l’onglet Demandes de tirage et cliquez sur Nouvelle demande de tirage, puis sélectionnez
maincomme base et la branche de fonction (par exemple,fix-hydraulics-chapter) comme comparer.Donnez à la demande de tirage un titre précis et décrivez ce que a été changé et pourquoi. Demander un avis à un ou plusieurs collaborateurs (menu droit sur GitHub).
Les évaluateurs peuvent commenter la demande de tirage dans son ensemble (onglet Conversation) ou sur des lignes de code individuelles (onglet Files changés, survoler une ligne et cliquer sur le symbole
+). Les commentaires en ligne peuvent également être regroupés dans un examen officiel avec les verdicts Commentaire, Approuver ou Demander des changements.Pour répondre aux commentaires de l’examen, il suffit d’engager et de pousser de nouveaux changements à la même branche. Les mises à jour de la demande de tirage automatiquement, et les discussions résolues peuvent être marquées comme telles avec le bouton Résoudre la conversation.
Fusionner une Direction générale du développement¶
Une fois que la demande de tirage est approuvée (et que les vérifications automatisées passent, si configurées), appliquez les nouveaux développements à main en cliquant sur le bouton de tirage Merge sur GitHub. En outre, GitHub offre Squash et fusion (combine toutes les branches commits en un seul commit, qui conserve l’historique de main rangy) et Rebase et fusion. Après fusion, supprimer la branche à distance (GitHub suggère un bouton Supprimer la branche) et localement :
git switch main
git pull
git branch -d fix-hydraulics-chapterSans interface fournisseur git (par exemple, pour un dépôt purement local), une branche peut également être fusionnée manuellement :
git switch main- passer à la branche cible.git pull- assurez-vous que la succursale localemainest à jour (skip pour les dépôts purement locaux).git merge fix-hydraulics-chapter- fusionner la branche développement enmain. Résoudre les conflits possibles (voir la section Tirer (Mise à jour/Re-Télécharger) un dépôt local), puisgit addles fichiers résolus etgit commit.git push- publier la mise à jourmainbranche.git branch -d fix-hydraulics-chapter- supprimer la branche fusionnée (git refuse à-d-delete les branches avec des changements non fusionnés, qui est un filet de sécurité utile).
C’est fait.