Apprenez les bases de Git en moins de 10 minutes

Oui, le titre est un appât. Il est impossible de comprendre les bases de la technologie git en seulement 10 minutes. Mais vous pouvez vous approcher assez près en environ 25 minutes. Et c'est le but de cet article.

Si vous souhaitez vous familiariser avec la technologie Git, vous êtes au bon endroit. Ceci est un guide complet du débutant 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.

Commençons!

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 que vous puissiez rappeler des versions spécifiques ultérieurement. Donc, idéalement, nous pouvons placer n'importe quel fichier dans l'ordinateur sur le contrôle de version.

Umm… Ok… Mais pourquoi Tho?

Voici pourquoi:

Un système de contrôle de version (VCS) vous permet de rétablir les fichiers à un état antérieur, de rétablir l'ensemble du projet à un état antérieur, de revoir les modifications apportées au fil du temps, de voir qui a modifié en dernier 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 gâchez des choses ou perdez des fichiers, vous pouvez généralement récupérer facilement. Et parfois, vous voulez juste savoir "qui a écrit cette merde" , et avoir accès à ces informations en vaut la peine?.

Alors, qu'est-ce que Git?

Git est un système de contrôle de version permettant de suivre les modifications des fichiers informatiques et de 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 contient 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 à suivre les modifications que vous apportez à votre code. Il s'agit essentiellement de l'onglet historique de votre éditeur de code (sans mode incognito?). Si, à un moment quelconque du codage, vous rencontrez une erreur fatale et que vous 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 les modifications que vous avez apportées à votre code au fil du temps.

Dans l'exemple ci-dessus, les trois cartes représentent des versions différentes du même fichier. Nous pouvons sélectionner la version du fichier que nous voulons utiliser à tout moment. Je peux donc passer à n'importe quelle version du fichier dans le continuum de temps 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 de projet. Maintenant, Git prend ces modifications que vous et votre ami avez faites indépendamment et les fusionne dans un seul référentiel « maître ». Ainsi, en utilisant Git, vous pouvez vous assurer que vous travaillez tous les deux sur la version la plus récente du référentiel. Vous n'avez donc pas à vous soucier de vous envoyer vos fichiers et de travailler avec un nombre ridicule de copies du fichier original. Et collaborer à distance devient aussi simple que HTML?.

Flux de travail Git:

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

Qu'est-ce qu'un référentiel?

Un référentiel aka repo n'est rien d'autre qu'une collection de code source.

Il existe quatre éléments fondamentaux dans le flux de travail Git.

Répertoire de travail , zone de transit , référentiel local et référentiel distant .

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 modifications mises à jour sont marqués comme étant validés dans le référentiel local mais pas encore validés.
  2. Il peut être modifié . Ce qui signifie que les fichiers avec les modifications mises à jour ne sont pas encore stockés dans le référentiel local.
  3. Cela peut être commis . Cela 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 dans la zone de préparation.
  • git commit est une commande utilisée pour ajouter tous les fichiers qui sont stockés dans le référentiel local.
  • git pushest une commande utilisée pour ajouter tous les fichiers validés du référentiel local au référentiel distant. Ainsi, dans le référentiel distant, tous les fichiers et modifications seront visibles par 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 récupérer les fichiers du référentiel local dans le répertoire de travail.
  • git pullest la commande utilisée pour obtenir des fichiers du référentiel distant directement dans le répertoire de travail. C'est équivalent à a git fetchet a 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 manière et de la manière difficile. Sans aucune application GUI.

Je suppose que vous avez déjà un fichier que vous souhaitez placer sous contrôle de version. Sinon, créez un exemple de dossier nommé «MuskCult» et placez-y des exemples de fichiers de code.

Étape 0: Créez un compte GitHub. Duh.

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

Étape 1: assurez-vous que Git est installé sur votre machine.

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

$ git --version

Cela vous demandera d'ouvrir un programme d'installation si vous n'avez pas déjà git. Alors configurez-le en utilisant le programme d'installation. Si vous avez déjà git, il vous montrera simplement quelle version de git vous avez installée.

Si vous utilisez Linux (deb), entrez ce qui suit dans le terminal:

$ sudo apt install git-all

Si vous êtes sous Windows :

$ get a mac

Je plaisante… Détendez-vous… Le nombre de personnes que j'ai déclenché… Ouf…

Accédez à ce lien ou à ce lien pour plus d'informations sur la façon de l'obtenir.

Étape 2: Dites à Git qui vous êtes.

Présentez-vous. Glissez. Sérieusement, mentionnez votre nom d'utilisateur et votre adresse e-mail Git, car chaque commit Git utilisera ces informations pour vous identifier en tant qu'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érez / vérifiez votre machine pour les clés SSH existantes. (Optionnel)

Pourquoi demandes-tu? En utilisant le protocole SSH , vous pouvez vous connecter et vous authentifier auprès de serveurs et services à distance . 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.

Allez icipour vérifier si vous disposez d'une clé SSH existante.

Allez ici pour générer une clé SSH.

Allez icipour 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 : //github.com/username/reponame
You use : [email protected]/username/reponame.git
 Note : You can use both ways alternatively

J'utiliserai le protocole SSH dans ce tutoriel.

Étape 4: Let's Git

Créez un nouveau référentiel sur GitHub. Suivez ce lien.

Maintenant, recherchez le dossier que vous souhaitez placer sous git dans votre terminal.

$ cd Desktop/MuskCult

Initialisez 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

Maintenant, allez éditer le fichier README.md pour fournir des informations sur le référentiel.

Ajoutez des fichiers à la zone de transit pour la validation:

Maintenant, pour ajouter les fichiers au référentiel 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 nous engager, voyons quels fichiers sont mis en scène:

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

Validez les modifications que vous avez apportées à votre dépôt Git:

Maintenant, pour valider les fichiers que vous avez ajoutés à votre dépôt 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

Annuler les modifications que vous venez d'apporter à votre dépôt Git:

Supposons maintenant que vous venez de faire une erreur dans votre code ou d'avoir placé un fichier indésirable dans le référentiel, vous pouvez désinstaller 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 pousser:

Désormais, chaque fois que vous apportez des modifications à vos fichiers et que vous les enregistrez, ils ne seront pas automatiquement mis à jour sur GitHub. Toutes les modifications que nous avons apportées au fichier sont mises à jour dans le référentiel local. Maintenant, pour mettre à jour les modifications apportées au maître:

$ git remote add origin remote_repository_URL# sets the new remote

La commande git remote vous permet de créer, afficher et supprimer des connexions à d'autres référentiels.

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

La commande git remote -v répertorie les URL des connexions distantes que vous avez avec d'autres référentiels.

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

Maintenant, la commande git push pousse les modifications dans votre référentiel local jusqu'au référentiel distant que vous avez spécifié comme origine.

Et maintenant, si nous allons vérifier notre page de référentiel sur GitHub, cela devrait ressembler à ceci:

Et c'est tout. Vous venez d'ajouter les fichiers au référentiel que vous venez de créer sur GitHub.

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

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

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

Revenez à la dernière version validée de Git Repo:

Vous pouvez maintenant choisir de revenir à la dernière version validée en entrant:

$ git checkout .
OR for a specific file
$ git checkout -- 

Afficher l'historique des validations:

Vous pouvez utiliser la commande git log pour voir l'historique des validations que vous avez effectuées sur vos fichiers:

$ git log

Chaque fois que vous apportez 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 dépôt, nous pouvons identifier si la validation a réussi en regardant le message de validation pour chaque fichier.

Étape 5: C'est bien beau… Mais comment télécharger et travailler sur d'autres référentiels sur GitHub?

Cloner un dépôt Git:

Recherchez le répertoire dans lequel vous souhaitez cloner le dépôt. Copiez le lien du référentiel souhaité et saisissez ce qui suit:

$ git clone remote_repository_URL

N'hésitez pas à cloner le repo que j'ai créé ci-dessus en utilisant: //github.com/Gothamv/MuskCult

Pousser les modifications dans le dépôt Git:

Vous pouvez désormais travailler sur les fichiers de votre choix et valider les modifications localement. Si vous souhaitez appliquer des modifications à ce référentiel, vous devez soit être ajouté en tant que collaborateur du référentiel, soit créer quelque chose appelé pull request. Allez voir comment en faire un ici et donnez-moi une pull request avec votre fichier de code.

Collaborer:

Alors imaginez que vous et votre ami collaborez sur un projet. Vous travaillez tous les deux sur les mêmes fichiers de projet. Chaque fois que vous apportez des modifications et que vous les insérez dans le référentiel principal, votre ami doit extraire les modifications que vous avez introduites dans le référentiel git. Cela signifie que vous travaillez sur la dernière version du référentiel git à chaque fois que vous commencez à travailler, une commande git pull est la solution.

Voici maintenant un exemple de projet sur lequel mon ami et moi collaborons:

Donc, pour vous assurer que ces modifications sont reflétées sur ma copie locale du dépôt:

$ git pull origin master

Voici deux autres commandes git utiles:

$ git fetch AND$ git merge

Dans les termes les plus simples, git fetchsuivi d'un git merge égal à a git pull. Mais alors pourquoi existent-ils?

Lorsque vous utilisez git pull, Git essaie de faire automatiquement votre travail pour vous. Il est sensible au contexte , donc Git fusionnera tous les commits extraits dans la branche dans laquelle vous travaillez actuellement. git pullFusionne automatiquement les commits sans vous permettre de les examiner 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 référentiel local . Cependant, il ne les fusionne pas avec votre branche actuelle . Ceci est particulièrement utile si vous avez besoin de maintenir votre référentiel à 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 principale, vous utilisez git merge.

Encore une chose:

.gitignore

Alors c'est quoi?

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

Ainsi, 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. Ce n'est pas utile pour les autres collaborateurs. Nous pouvons donc dire à git de les ignorer en ajoutant un .gitignorefichier.

Utilisez la commande tactile pour créer le .gitignorefichier:

$ touch .gitignore

Et vous pouvez ajouter les modèles suivants pour dire à git d'ignorer ces 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é l'article, n'oubliez pas de casser ce bouton Clap et assurez-vous de me suivre pour la partie 2.

Peace Out ✌️

Références :

Ajouter un projet existant à GitHub à l'aide de la ligne de commande - Documentation utilisateur

Mettre votre travail existant sur GitHub peut vous permettre de partager et de collaborer de nombreuses façons. Si vous migrez votre… help.github.com Comment annuler (presque) tout avec Git

L'une des fonctionnalités les plus utiles de tout système de contrôle de version est la possibilité «d'annuler» vos erreurs. Dans Git, "annuler"… blog.github.com Git en ligne de commande - N'ayez pas peur de valider la documentation 0.3

Il existe d'autres moyens d'installer Git; vous pouvez même obtenir une application graphique Git, qui inclura la ligne de commande… dont-be-afraid-to-commit.readthedocs.io Commencez à utiliser Git sur la ligne de commande | GitLab

Documentation pour GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab et GitLab Runner. docs.gitlab.com Quelle est la différence entre «git pull» et «git fetch»?

Note du modérateur: Étant donné que cette question a déjà reçu soixante-sept réponses (certaines d'entre elles ont été supprimées)… stackoverflow.com