GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel :qu'est-ce que Git et Github ? Comment puis-je l'utiliser et pourquoi devrais-je m'en soucier?

Git a été créé par Linus Torvalds en 2005, à l'origine en tant que logiciel de contrôle de version pour mieux permettre aux contributeurs de télécharger du code sur le noyau Linux. Git est un système de contrôle de version. Parfois appelé système SCM (gestion du contrôle des sources).

Depuis lors, son utilisation a largement dépassé l'écosystème Linux et est utilisée par des millions de développeurs de logiciels dans le monde (42,9 % de tous les développeurs de logiciels l'utilisent par rapport à tout autre système de contrôle de version). Ce n'est pas seulement pour les développeurs de logiciels, les Joe ordinaires qui veulent partager ou stocker des choses, par exemple, des fichiers de configuration ou des sites Web. Git leur permet d'avoir un endroit où ils peuvent stocker (et plus important encore, collaborer - ou fusionner ) leur contenu.

Que fait-il exactement, en termes simples ?

Voici deux raisons principales pour lesquelles vous voudriez utiliser Git :

  • Collaboration :Vous souhaitez collaborer sur certains fichiers - par exemple, un développeur écrit une ligne de code et un autre développeur écrit deux lignes de code. Cela peut être "fusionné" vers le "serveur git", de sorte qu'il devienne un seul fichier.
  • Contrôle/suivi des versions :Vous souhaitez pouvoir suivre les modifications apportées par les autres contributeurs. La capacité de suivi vous permettra de voir s'il y a des erreurs qui doivent être annulées.

Une autre raison est que si vous êtes dans un travail qui implique le développement d'applications de quelque manière que ce soit (par exemple, si vous êtes un codeur, ou si vous êtes un administrateur système qui doit faire des révisions de vos données de gestion de configuration, ou simplement cloner le code des développeurs ) - utiliser Git est le système de contrôle de version généralement accepté de nos jours. Ne pas savoir comment l'utiliser vous désavantagera probablement dans votre carrière.

Git contre Github

Un serveur  Git peut être installé sur n'importe quel serveur Linux. Pour y accéder, il faut généralement utiliser le git client , qui est un outil de ligne de commande. Plus d'informations à ce sujet dans la section ci-dessous.

Github est un service Git public largement utilisé sur le Web pour que les personnes travaillent sur des projets sur Internet. Il n'est pas affilié à Linus Torvalds ni à aucun des membres du projet git, il s'agit d'une adaptation Web d'un serveur git. Il exploite tous les composants principaux de git et offre une extensibilité supplémentaire via son interface Web. Le principal avantage de github est qu'il s'agit d'un référentiel git public auquel vous pouvez toujours vous connecter via le client git habituel. Github propose également des services de référentiel privé, mais ceux-ci sont payants.

D'autres produits commerciaux sont également disponibles qui implémentent tout ou partie du service de git, comme Atlassian Bitbucket.

Terminologie et commandes importantes

La commande git client est entrée sur le terminal et comporte un certain nombre d'options. Vous constaterez que git est probablement déjà installé sur votre machine Linux. Si ce n'est pas le cas, c'est une chose sûre de s'attendre à ce qu'il ne reste qu'un apt-get ou une installation miam.

Les plus pertinents d'entre eux sont énumérés ci-dessous. Gardez-le à portée de main car il vous sera utile comme aide-mémoire pendant que vous démarrez avec Git :

Commande Description
cloner

Fait une copie d'un dépôt git.

Par exemple, chaque fois que vous téléchargez des choses à partir d'un site github/git (dépôt), vous utiliserez clone .
par exemple :git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY.git

init Initialise un dépôt Git vide dans le répertoire courant.
ex :git init /home/mycode
statut

Affiche l'état du référentiel.

Vous ferez cela souvent, afin de pouvoir suivre les modifications apportées au référentiel.
par exemple :git status

ajouter

Ajoute des fichiers à une zone de préparation, afin que les modifications puissent être suivies localement.

Dit à git de commencer à suivre les modifications pour le fichier que vous spécifiez. Notez que cela ne les engage pas dans la branche, c'est dans une zone de préparation locale, par exemple :

git add <filename>

Pour ajouter plusieurs fichiers/répertoires, vous avez besoin parenthèses autour des caractères génériques afin que git obtienne la liste des fichiers avant que le shell n'agisse sur le caractère générique. Cet exemple ajoute chaque fichier .jpg dans tous les répertoires sous le répertoire courant (y compris le répertoire courant) :

git add '*.jpg'

s'engager

Valider une modification par étapes (ajoutée).

Valider une modification signifie "tous ces ajouts J'ai terminé, sortez-les de la zone de préparation et validez-les dans mon référentiel" . Il est obligatoire de s'engager avec un message. Le message doit décrire à quoi sert le commit, par exemple, vous pourriez dire que vous avez ajouté quelques jpegs de chats.
git commit -m "info about this commit".

distant

Configurer un référentiel distant vers lequel envoyer les commits.

Toutes les modifications que vous avez validées localement peuvent être téléchargées vers un référentiel distant. Github est un référentiel distant par exemple. Pour initialiser votre connexion au serveur git distant, vous utilisez git remote.

Par exemple : git remote add origin https://github.com/YOUR-USERNAME/your-repository.git

  • Le nom (ou handle ) 'origine' est utilisé comme référence pour le référentiel de projet distant. Vous pouvez lui donner le nom que vous voulez, mais il est courant de nommer votre principal "origine".
  • Le votre-repository.git le fichier est créé lorsque vous faites un git init.
appuyer

Poussez les modifications validées vers un référentiel distant.

Une fois que vous avez initialisé votre référentiel distant, vous pouvez lui envoyer les modifications validées avec push :
git push -u origin master

  • ‘origin’ est le nom que vous avez spécifié pour la connexion à distance.
  • ‘master’ est la branche appelée master (la branche principale. Plus d'informations à ce sujet dans une minute).
  • l'option -u indique à git de se souvenir des paramètres que vous avez spécifiés, vous n'avez donc qu'à taper "git push" la prochaine fois.
tirer

Fusionne les modifications du référentiel distant avec votre copie locale.

Une fois que les personnes (ou vous) ont validé d'autres modifications dans le référentiel, vous souhaitez émettre une demande d'extraction pour fusionner les modifications que vous avez localement avec le référentiel en amont (distant).

git pull origin master

diff

Montre les différences qu'il y a eu dans le référentiel depuis le dernier commit.

Lorsque des modifications sont validées dans le référentiel distant par plusieurs personnes, il y aura des différences entre ce que vous avez stocké localement et ce qui se trouve sur le serveur distant. Les différences sont appelées diffs . Lorsque vous faites un tirer , cela permettra à votre local

Pour voir les différences entre votre commit le plus récent et ce qui existe dans le référentiel distant, vous pouvez utiliser le pointeur HEAD. HEAD est simplement un indicateur de position, par défaut il pointe vers votre plus commits récents.

git diff HEAD

La sortie montrera les différences entre votre copie de tous les fichiers modifiés et la copie distante (ajouts et soustractions).

Pour voir les différences entre les fichiers dans votre staging (ajoutez ed) et les fichiers locaux sur votre PC, utilisez diff --staged

paiement

Revenir à un commit précédent ou changer de branche.

Disons simplement que vous avez fait un commit de file.txt que vous avez décidé que ce n'était pas bon, et que vous vouliez revenir à une version précédente validée, vous le renverriez ainsi :

git checkout -- file.txt

  • Le - indique simplement qu'il n'y a plus d'options pour l'opération de paiement.

Pour modifier une branche, spécifiez le nom de la branche (plutôt que d'utiliser le — ou de fournir un nom de fichier à rétablir) :

git checkout <branchname>

succursale

Crée une nouvelle copie (branche). La commande supprime également ou répertorie les branches présentes.

Pour plus d'informations sur ce qu'est une "branche", consultez la terminologie ci-dessous. L'exemple ci-dessous crée une nouvelle branche appelée "newbranch" :

git branch newbranch

L'exemple ci-dessous supprime 'newbranch ' :

git branch -d newbranch

rm

Supprime des fichiers de la branche actuelle, ainsi que du disque local.

Pour supprimer tous les fichiers, utilisez rm comme vous le feriez pour un ajout :

git rm '*.txt'

  • N'oubliez pas de commettre qui changent après avoir émis le rm !
fusionner

Fusionne une branche dans une autre.

À titre d'exemple pratique, en continuant à partir de rm exemple de commande ci-dessus, supposons que vous avez exécuté un rm *.txt à partir de la branche newbranch . Si vous souhaitez fusionner cette modification dans le maître branche, vous devez d'abord revenir à la maître branche en émettant git checkout master,   puis en utilisant la commande merge pour fusionner les différences entre newbranch et la branche actuelle (master ). La plupart des équipes de développeurs travailleront sur leur code dans des branches séparées avant de les fusionner dans la branche principale à la fin de la journée.

git merge newbranch

réinitialiser

Annule (supprime) toutes les modifications par étapes.

Par exemple, si vous avez fait un git add file.txt, mais qu'avant de valider, vous décidez que file.txt ne doit pas être validé, lancez la commande reset, par exemple:git reset fichier.txt

journal

Afficher un journal de toutes les modifications validées.

Ex :git log

Terminologie

Certains termes que vous devrez comprendre sont :

    • Demandes d'extraction :lorsqu'une équipe travaille sur des modifications de code, une demande d'extraction est utilisée pour signaler au responsable du référentiel de fusionner une nouvelle modification.
    • Branche :une branche est simplement une copie d'un référentiel existant. Par défaut, chaque référentiel commence par un "Master ' une succursale. Le maître est le nom de la branche principale.
      • La branche principale n'est généralement pas la branche de travail, elle est souvent utilisée comme branche lorsque tous les développeurs ont terminé (validé) leur code. Il y est ensuite fusionné à la fin de la journée à partir d'autres branches de travail.
    • Fork – Un fork est une copie dupliquée du référentiel de quelqu'un. Il vous permet d'apporter les modifications souhaitées au code sans affecter le projet/dépôt d'origine. Il est utilisé soit pour créer une nouvelle application à partir de la base de code d'origine, soit comme une ébauche de travail pour permettre à un développeur de proposer des modifications au projet.
    • Étape :Lorsqu'un fichier est ajouté (avec git add) on dit qu'il est mis en scène, ou dans le processus de mise en scène. Lorsque vous validez la modification, elle n'est plus mise en scène.
      • La mise en scène a lieu sur votre ordinateur local, et non dans un référentiel distant.
      • Dans un exemple pratique, disons que vous avez un tas de fichiers qui se trouvent sur un référentiel distant

Voir aussi

La page de manuel intégrée appelée "gittutorial" est un didacticiel bien écrit qui vous explique les tenants et les aboutissants de l'utilisation de Git. Pour l'afficher, entrez la commande suivante :

man 7 gittutorial

Les liens Web suivants sont fortement recommandés :

      • Tutoriel interactif (trygit)
      • Site officiel
      • site Web github

Linux
  1. Qu'est-ce qu'une commande Chown sous Linux et comment l'utiliser

  2. Qu'est-ce qu'une commande cURL et comment l'utiliser ?

  3. Redis comme cache :comment ça marche et pourquoi l'utiliser

  4. Quand et pourquoi devrais-je utiliser Apt-get Update ?

  5. Pourquoi eval devrait-il être évité dans Bash et que dois-je utiliser à la place ?

Comment installer et utiliser Git dans le système Linux

Qu'est-ce que le référentiel d'utilisateurs Arch (AUR) ? Comment utiliser AUR sur Arch et Manjaro Linux ?

Qu'est-ce que les conteneurs multi-comptes Firefox ? Pourquoi et comment l'utiliser ?

Qu'est-ce qu'EasyApache et comment l'utiliser ?

Qu'est-ce que la fonctionnalité de la communauté ONLYOFFICE et pourquoi devriez-vous l'utiliser ?

Comment installer et utiliser Git sur Ubuntu 18.04