Articles

Apprenez les bases de Git en moins de 10 minutes

par Gowtham Venkatesan

Oui, le titre est un clickbait. Il est impossible de comprendre les bases de la technologie git en seulement 10 minutes. Mais vous pouvez vous en rapprocher en 25 minutes environ. Et c’est le but de cet article.

Si vous voulez commencer à apprendre la technologie Git, vous êtes au bon endroit. Il s’agit d’un guide complet pour les débutants sur Git. Il existe de nombreux clients pour Git. La technologie est la même quel que soit le client. Mais dans ce guide, nous utiliserons GitHub pour comprendre Git.

Démarrons !

Qu’est-ce que le contrôle de version ?

Le contrôle de version est un système qui enregistre les modifications apportées à un fichier ou à un ensemble de fichiers au fil du temps afin de pouvoir rappeler des versions spécifiques plus tard. Idéalement, on peut donc placer n’importe quel fichier de l’ordinateur sous contrôle de version.

Umm… D’accord… Mais pourquoi donc ?

Voici pourquoi :

Un système de contrôle de version (VCS) vous permet de rétablir des fichiers dans un état antérieur, de rétablir l’ensemble du projet dans un état antérieur, de revoir les modifications apportées au fil du temps, de voir qui a modifié en dernier lieu quelque chose qui pourrait causer un problème, qui a introduit un problème et quand, et plus encore. L’utilisation d’un VCS signifie également que si vous faites des erreurs ou perdez des fichiers, vous pouvez généralement les récupérer facilement. Et parfois, vous voulez juste savoir  » qui a écrit cette merde « , et avoir accès à cette information vaut la peine…

So What is Git?

Git est un système de contrôle de version pour suivre les modifications des fichiers informatiques et coordonner le travail sur ces fichiers entre plusieurs personnes. Git est un système de contrôle de version distribué. Ainsi, Git ne s’appuie pas nécessairement sur un serveur central pour stocker toutes les versions des fichiers d’un projet. Au lieu de cela, chaque utilisateur « clone » une copie d’un référentiel (une collection de fichiers) et dispose de l’historique complet du projet sur son propre disque dur. Ce clone possède toutes les métadonnées de l’original tandis que l’original lui-même est stocké sur un serveur auto-hébergé ou un service d’hébergement tiers comme GitHub.

Git vous aide à garder la trace des modifications que vous apportez à votre code. C’est essentiellement l’onglet historique de votre éditeur de code(Sans mode incognito ?). Si à un moment donné pendant le codage, vous rencontrez une erreur fatale et ne savez pas ce qui la cause, vous pouvez toujours revenir à l’état stable. C’est donc très utile pour le débogage. Ou vous pouvez simplement voir quelles modifications vous avez apportées à votre code au fil du temps.

Un exemple simple d’historique de version d’un fichier.

Dans l’exemple ci-dessus, les trois cartes représentent différentes versions du même fichier. Nous pouvons sélectionner la version du fichier que nous voulons utiliser à tout moment. Je peux donc faire des allers-retours vers n’importe quelle version du fichier dans le continuum temporel de git.

Git vous aide également à synchroniser le code entre plusieurs personnes. Alors imaginez que vous et votre ami collaborez sur un projet. Vous travaillez tous les deux sur les mêmes fichiers du projet. Maintenant, Git prend ces changements que vous et votre ami avez fait indépendamment et les fusionne dans un seul dépôt « Master ». Ainsi, en utilisant Git, vous pouvez vous assurer que vous travaillez tous les deux sur la version la plus récente du dépôt. Vous n’avez donc pas à vous soucier d’envoyer vos fichiers à l’autre et de travailler avec un nombre ridicule de copies du fichier original. Et collaborer à distance devient aussi facile que le HTML ?.

Git Workflow:

Avant de commencer à travailler avec les commandes Git, il est nécessaire que vous compreniez ce qu’il représente.

Qu’est-ce qu’un dépôt ?

Un dépôt, alias repo, n’est rien d’autre qu’une collection de code source.

Il y a quatre éléments fondamentaux dans le Git Workflow.

Le répertoire de travail, la zone de transit, le référentiel local et le référentiel distant.

Diagramme d’un Workflow Git simple

Si vous considérez un fichier dans votre répertoire de travail, il peut être dans trois états possibles.

  1. Il peut être mis en scène. Ce qui signifie que les fichiers avec les changements mis à jour sont marqués pour être livrés au référentiel local mais pas encore livrés.
  2. Il peut être modifié. Ce qui signifie que les fichiers avec les changements mis à jour ne sont pas encore stockés dans le référentiel local.
  3. Il peut être committé. Ce qui signifie que les modifications que vous avez apportées à votre fichier sont stockées en toute sécurité dans le référentiel local.
  • git add est une commande utilisée pour ajouter un fichier qui se trouve dans le répertoire de travail à la zone de transit.
  • git commit est une commande utilisée pour ajouter tous les fichiers qui sont mis en scène dans le référentiel local.
  • git push est une commande utilisée pour ajouter tous les fichiers commis dans le référentiel local au référentiel distant. Ainsi, dans le référentiel distant, tous les fichiers et les modifications seront visibles pour toute personne ayant accès au référentiel distant.
  • git fetch est une commande utilisée pour obtenir des fichiers du référentiel distant vers le référentiel local mais pas dans le répertoire de travail.
  • git merge est une commande utilisée pour obtenir les fichiers du référentiel local dans le répertoire de travail.
  • git pull est une commande utilisée pour obtenir les fichiers du référentiel distant directement dans le répertoire de travail. Elle est équivalente à une git fetch et une git merge .

Maintenant que nous savons ce qu’est Git et ses terminologies de base, voyons comment nous pouvons placer un fichier sous git. Nous allons le faire de la bonne façon et de la façon difficile. Sans aucune application GUI.

Je suppose que vous avez déjà un fichier le que vous voulez placer sous contrôle de version. Si ce n’est pas le cas, créez un dossier d’exemple nommé ‘MuskCult’ et placez-y quelques fichiers de code d’exemple.

Étape 0 : créer un compte GitHub. Duh.

Si vous n’en avez pas déjà un, vous pouvez en créer un ici.

Etape 1 : Assurez-vous que vous avez Git installé sur votre machine.

Si vous êtes sur un Mac, allumez le terminal et entrez la commande suivante :

$ git --version

Ceci vous invitera à ouvrir un installateur si vous n’avez pas déjà git. Donc, configurez-le en utilisant l’installateur. Si vous avez déjà git, il vous montrera simplement quelle version de git vous avez installée.

Si vous êtes sous Linux(deb), entrez ce qui suit dans le terminal:

$ sudo apt install git-all

Si vous êtes sous Windows :

$ get a mac

Just kidding… Relax… La quantité de personnes que j’ai déclenchées… Ouf…
Voir ce lien ou ce lien pour plus d’infos sur comment l’obtenir.

Etape 2 : Dites à Git qui vous êtes.

Introduisez-vous. Glissez-vous dans la foule. Sérieusement, mentionnez votre nom d’utilisateur Git et votre adresse e-mail, car chaque commit Git utilisera ces informations pour vous identifier comme auteur.

$ git config --global user.name "YOUR_USERNAME" 
$ git config --global user.email "[email protected]"
$ git config --global --list # To check the info you just provided

Étape 3 : Générer/vérifier sur votre machine les clés SSH existantes. (Facultatif)

Pourquoi ? En utilisant le protocole SSH, vous pouvez vous connecter et vous authentifier à des serveurs et services distants. Avec les clés SSH, vous pouvez vous connecter à GitHub sans fournir votre nom d’utilisateur ou votre mot de passe à chaque visite.

Suivez ce lien pour en savoir plus sur SSH.
Venez ici pour vérifier si vous avez une clé SSH existante.
Venez ici pour générer une clé SSH.
Venez ici pour ajouter la clé SSH à votre compte GitHub.
Et enfin allez ici pour tester sa connexion.

Si vous avez configuré SSH, chaque commande git qui a un lien, vous le remplacez par :

Instead of : https://github.com/username/reponame
You use : [email protected]/username/reponame.git
 Note : You can use both ways alternatively

Je vais utiliser le protocole SSH dans ce tutoriel.

Etape 4 : créons Git

Créons un nouveau dépôt sur GitHub. Suivez ce lien.
Maintenant, localisez au dossier que vous voulez placer sous git dans votre terminal.

$ cd Desktop/MuskCult

Initialiser Git:

Et pour le placer sous git, entrez :

$ touch README.md # To create a README file for the repository$ git init # Initiates an empty git repository

Allez maintenant éditer le fichier README.md pour fournir des informations sur le référentiel.

Ajouter les fichiers à la Staging Area pour le commit:

Maintenant pour ajouter les fichiers au dépôt git pour le commit:

$ git add . # Adds all the files in the local repository and stages them for commit
OR if you want to add a specific file
$ git add README.md # To add a specific file

Avant de commiter, voyons quels sont les fichiers mis en scène :

$ git status # Lists all new or modified files to be committed

Commit les modifications que vous avez apportées à votre repo Git:

Maintenant pour commiter les fichiers que vous avez ajoutés à votre repo git :

$ git commit -m "First commit"# The message in the " " is given so that the other users can read the message and see what changes you made

Uncommit les modifications que vous venez d’apporter à votre Git Repo:

Supposons maintenant que vous venez de faire une erreur dans votre code ou de placer un fichier indésirable à l’intérieur du dépôt, vous pouvez déstocker les fichiers que vous venez d’ajouter en utilisant :

$ git reset HEAD~1# Remove the most recent commit# Commit again!

Ajouter une origine distante et Push:

Maintenant chaque fois que vous faites des changements dans vos fichiers et que vous les sauvegardez, ils ne seront pas automatiquement mis à jour sur GitHub. Toutes les modifications que nous avons faites dans le fichier sont mises à jour dans le dépôt local. Maintenant, pour mettre à jour les changements dans le master:

$ git remote add origin remote_repository_URL# sets the new remote

La commande git remote vous permet de créer, d’afficher et de supprimer des connexions à d’autres dépôts.

$ git remote -v# List the remote connections you have to other repositories.

La commande git remote -v liste les URL des connexions distantes que vous avez à d’autres dépôts.

$ git push -u origin master # pushes changes to origin

Maintenant, la commande git push pousse les modifications de votre dépôt local vers le dépôt distant que vous avez spécifié comme origine.

Et maintenant si nous allons vérifier notre page de dépôt sur GitHub, elle devrait ressembler à quelque chose comme ceci :

Et c’est tout. Vous venez d’ajouter les fichiers au dépôt que vous venez de créer sur GitHub.

Voir les modifications que vous avez apportées à votre fichier :

Une fois que vous commencez à faire des modifications sur vos fichiers et que vous les enregistrez, le fichier ne correspondra pas à la dernière version qui a été commise sur git. Pour voir les modifications que vous venez d’effectuer:

$ git diff # To show the files changes not yet staged

Retourner à la dernière version commise dans le Repo Git :

Maintenant, vous pouvez choisir de revenir à la dernière version commise en entrant :

$ git checkout .
OR for a specific file
$ git checkout -- <filename>

Voir l’historique des engagements :

Vous pouvez utiliser la commande git log pour consulter l’historique des commit que vous avez effectués sur vos fichiers :

$ git log

Chaque fois que vous effectuez des modifications que vous souhaitez voir reflétées sur GitHub, voici le flux de commandes le plus courant :

$ git add .$ git status # Lists all new or modified files to be committed$ git commit -m "Second commit"$ git push -u origin master

Maintenant, si nous allons voir notre repo, nous pouvons identifier si le commit a réussi en regardant le message de commit pour chaque fichier.

Étape 5 : Tout cela est bien beau… Mais comment télécharger et travailler sur d’autres dépôts sur GitHub ?

Clonage d’un repo Git:

Localisez-vous dans le répertoire où vous souhaitez cloner le repo. Copiez le lien du dépôt que vous voulez et entrez ce qui suit:

$ git clone remote_repository_URL

Ne vous gênez pas pour aller de l’avant et cloner le repo que j’ai créé ci-dessus en utilisant : https://github.com/Gothamv/MuskCult

Pousser les changements vers le repo Git:

Maintenant vous pouvez travailler sur les fichiers que vous voulez et commiter les changements localement. Si vous voulez pousser des changements vers ce dépôt, vous devez soit être ajouté comme collaborateur pour le dépôt, soit créer quelque chose connu sous le nom de pull request. Allez voir comment en faire une ici et donnez-moi une pull request avec votre fichier de code.

Collaboration:

Imaginez que vous et votre ami collaborez sur un projet. Vous travaillez tous les deux sur les mêmes fichiers du projet. Chaque fois que vous apportez des modifications et que vous les poussez dans le repo master, votre ami doit tirer les modifications que vous avez poussées dans le repo git. Ce qui signifie que pour s’assurer que vous travaillez sur la dernière version du repo git chaque fois que vous commencez à travailler, une commande git pull est la voie à suivre.

Vous trouverez ci-dessous un exemple de projet sur lequel mon ami et moi collaborons :

Il vient d’y avoir un commit sur le repo

Pour m’assurer que ces changements sont reflétés sur ma copie locale du repo :

$ git pull origin master

Voici deux autres commandes git utiles :

$ git fetch AND$ git merge

En termes les plus simples, git fetch suivi d’un git merge équivaut à un git pull. Mais alors pourquoi existent-ils ?

Lorsque vous utilisez git pull, Git essaie de faire automatiquement votre travail à votre place. Il est sensible au contexte, donc Git fusionnera tous les commits tirés dans la branche dans laquelle vous travaillez actuellement. git pull fusionne automatiquement les commits sans vous laisser les réviser au préalable.

Lorsque vous git fetch, Git rassemble tous les commits de la branche cible qui n’existent pas dans votre branche actuelle et les stocke dans votre dépôt local. Cependant, il ne les fusionne pas avec votre branche actuelle. Ceci est particulièrement utile si vous avez besoin de garder votre dépôt à jour, mais que vous travaillez sur quelque chose qui pourrait se casser si vous mettez à jour vos fichiers. Pour intégrer les commits dans votre branche master, vous utilisez git merge.

Un autre truc:

.gitignore

So what is it?

.gitignore indique à git quels fichiers (ou motifs) il doit ignorer. Il est généralement utilisé pour éviter de commettre des fichiers transitoires de votre répertoire de travail qui ne sont pas utiles aux autres collaborateurs, comme les produits de compilation, les fichiers temporaires créés par les IDE, etc.

Donc, dans l’exemple ci-dessus, des fichiers comme __pycache__, .DS_Store sont utilisés par le système pour stocker des informations pour un accès plus rapide. Cela n’est pas utile pour les autres collaborateurs. Nous pouvons donc indiquer à git de les ignorer en ajoutant un fichier .gitignore.

Utiliser la commande touch pour créer le fichier .gitignore:

$ touch .gitignore

Et vous pouvez ajouter les motifs suivants pour indiquer à git d’ignorer de tels fichiers.

/*.cmake/*.DS_Store/.user/buildetc. depending upon the files you want git to untrack

Et c’est à peu près tout pour les bases. Restez à l’écoute pour la partie 2 qui se concentrera sur Branch, Merge, Stash, Rebase etc.

Si vous avez apprécié cet article, n’oubliez pas de frapper ce bouton Clap et assurez-vous de me suivre pour la partie 2.

Références :

Ajouter un projet existant à GitHub à l’aide de la ligne de commande – Documentation utilisateur
Poser votre travail existant sur GitHub peut vous permettre de partager et de collaborer de nombreuses façons formidables. Si vous migrez votre…help.github.comComment défaire (presque) tout avec Git
L’une des fonctionnalités les plus utiles de tout système de contrôle de version est la possibilité de « défaire » vos erreurs. Dans Git, « défaire »…blog.github.comGit en ligne de commande – N’ayez pas peur de commettre 0.3 documentation
Il existe d’autres façons d’installer Git ; vous pouvez même obtenir une application Git graphique, qui inclura la ligne de commande…dont-be-afraid-to-commit.readthedocs.ioCommencer à utiliser Git en ligne de commande | GitLab
Documentation pour GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, et GitLab Runner.docs.gitlab.comQuelle est la différence entre ‘git pull’ et ‘git fetch’?
Note du modérateur : Étant donné que cette question a déjà eu soixante-sept réponses postées (dont certaines ont été supprimées)…stackoverflow.com

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *