Avez-vous déjà travaillé sur un projet si difficile à manier que vous aviez peur de mettre à jour un fichier ou d’ajouter une fonctionnalité? Le problème était peut-être que vous n'utilisiez pas de système de contrôle de version. Dans le tutoriel d'aujourd'hui, nous allons apprendre les bases de ce qui pourrait être le meilleur VCS au monde: Git.
Git est un outil de gestion de code open source. il a été créé par Linus Torvalds lorsqu’il construisait le noyau Linux. À cause de ces racines, il fallait être très rapide. que c'est, et facile à comprendre aussi. Git vous permet de travailler sur votre code avec la tranquillité d'esprit: tout ce que vous faites est réversible. Cela facilite l'expérimentation de nouvelles idées dans un projet et ne craint rien. La parabole Git, de Tom Preston-Werner, est une excellente introduction aux termes et aux idées de Git.
Vous devez absolument utiliser un système de contrôle de révision. comme nous l'avons déjà dit, cela vous donne la liberté de faire ce que vous voulez avec votre code sans vous soucier de le casser. Donc, si vous avez compris les avantages d'un système de contrôle de révision, pourquoi devriez-vous utiliser git? Pourquoi pas SVN ou Perforce ou un autre? Pour être honnête, je n'ai pas étudié les différences de trop près; consultez WhyGitIsBetterThanX.com pour des informations utiles.
Il est assez facile d’obtenir Git: sur un Mac, il est probablement plus facile d’utiliser le programme d’installation de git-osx. Si MacPorts est installé sur votre ordinateur, vous voudrez peut-être utiliser Git. vous pouvez trouver des instructions sur le site d'aide de GitHub. (Et oui, nous parlerons de GitHub). Sous Windows, le moyen le plus simple de démarrer consiste à utiliser le programme d'installation de msysgit. Cependant, si vous avez Cygwin, vous pouvez aussi utiliser Git.
A présent, vous devriez avoir installé Git; si vous êtes sur un Mac, ouvrez un terminal; Si vous utilisez Windows, ouvrez Git Bash (à partir de msysgit) ou votre invite Cygwin. A partir de là, il ne devrait pas y avoir de différence de système d'exploitation.
Nous allons commencer par faire un peu de configuration. Chaque commit que vous ferez aura votre nom et votre adresse email pour identifier le 'propriétaire' du commit, vous devriez donc commencer par lui donner ces valeurs. Pour ce faire, exécutez ces commandes:
git config --global user.name "Votre nom" git config --global user.email "[email protected]"
Il est également agréable d'activer la coloration du texte, juste pour une lecture plus facile dans le terminal..
git config --global color.diff auto git config --global color.status auto Git config --global color.branch auto
Maintenant que Git sait qui vous êtes, imaginons que nous créons une simple application Web PHP. (Bien sûr, plus le projet est volumineux, plus brillant est Git, mais nous ne faisons que découvrir les outils, n'est-ce pas?) Nous avons un répertoire vide appelé «mySite». Concentrez-vous d'abord sur ce répertoire (à l'aide de la commande cd). Pour commencer à utiliser Git, vous devez exécuter la commande git init. Comme vous pouvez le deviner, cela initialise un référentiel Git dans ce dossier, en y ajoutant un dossier .git. Un référentiel est un peu comme un livre d’historique de code. Il contiendra toutes les versions passées de votre code, ainsi que la version actuelle.
Notez que votre chemin de terminal est ajouté avec (maître). C'est la branche sur laquelle vous travaillez actuellement. Branche? Pensez à votre projet comme un arbre. vous pouvez créer différentes fonctionnalités sur différentes branches, et tout restera séparé et sécurisé.
Nous avons commencé à travailler sur notre application.
Avant d'aller plus loin, nous devrions faire notre premier engagement. Un commit est simplement un pointeur sur un endroit de votre historique de code. Avant de pouvoir le faire, toutefois, nous devons déplacer tous les fichiers que nous souhaitons inclure dans cette validation vers la zone de transfert. La zone de préparation est un endroit pour stocker des fichiers pour votre prochain commit; peut-être que vous ne voulez pas appliquer toutes vos modifications actuelles, vous en mettez donc certaines dans la zone intermédiaire. Nous pouvons le faire en utilisant la commande add
git ajouter .
Le . signifie simplement tout ajouter. Vous pourriez être plus précis si vous vouliez.
git add * .js git add index.php
Maintenant que nous avons mis en scène nos fichiers, engageons-les. Ceci est fait avec la commande
git commit
Cela prend tous les fichiers dans notre zone de transfert et marque ce code comme un point dans l'historique de notre projet. Si vous n'ajoutez aucune option à la commande ci-dessus, vous obtiendrez quelque chose comme ceci..
Chaque commit devrait avoir un message d'accompagnement pour que vous sachiez pourquoi ce code a été validé. Cet éditeur vous permet d'écrire votre message et de voir ce qu'il y a dans ce commit. Dans l'image ci-dessus, vous pouvez voir que ce commit est composé de quatre nouveaux fichiers. L'éditeur que vous utilisez pour écrire le message est Vim; si vous n'êtes pas familier avec vim, sachez que vous devez appuyer sur i (pour insérer) avant de pouvoir taper votre message. Dans la photo ci-dessus, j'ai ajouté le message "Commit initial". Après avoir écrit votre message, appuyez sur échappement et tapez: wq (pour enregistrer et quitter). Vous verrez alors que votre engagement a lieu.
Vous pouvez utiliser quelques options pour effectuer des commits plus rapidement. Tout d'abord, -m vous permet d'ajouter votre message en ligne.
git commit -m "initial commit"
Ensuite, -a vous permet de sauter la zone de transfert; Eh bien pas vraiment. Git organisera et validera automatiquement tous les fichiers modifiés lorsque vous utiliserez cette option. (souvenez-vous que cela n’ajoutera aucun nouveau fichier). Ensemble, vous pouvez utiliser ces commandes comme ceci:
git commit -am 'mise à jour vers index.php'
Alors, comment Git dit commet à part? Au lieu de les numéroter, Git utilise le contenu du code de la validation pour créer un hachage SHA1 de 40 caractères. La partie intéressante à ce sujet est que, comme il utilise le code pour créer le hachage, il n’y aura pas deux hachages dans votre projet identiques, à moins que le code dans les commits soit identique..
le statut git Cette commande vous permet de voir l’état actuel de votre code. Nous venons de faire un commit, donc statut git va nous montrer qu'il n'y a rien de nouveau.
Si nous continuons à travailler sur notre projet imaginaire, vous verrez que notre statut change. Je vais éditer notre index.php et ajouter un autre fichier. Maintenant, en cours d'exécution statut git nous donne ceci:
La mise à jour est divisée en deux catégories: «modifiés mais non mis à jour» et «fichiers non suivis». Si nous exécutons
git ajoute userAuthentication.php statut git
vous verrez que nous avons maintenant une section «modifications à valider». Ceci répertorie les fichiers ajoutés à la zone intermédiaire. Je vais commettre ces changements avec ceci:
git commit -am 'code d'authentification d'utilisateur ajouté'
Maintenant en cours d'exécution statut git nous montre un répertoire de travail propre.
Voici un scénario: nous travaillons avec bonheur sur notre projet lorsque soudain nous avons une grande idée. Cette idée est tellement révolutionnaire qu'elle changera radicalement notre projet. Nous devons faire un essai, mais nous ne voulons pas ajouter ce premier code non sécurisé à notre code testé et vrai. Que faire? C'est ici que branche de git sera extrêmement utile. Brisons notre projet afin que si notre grande idée ne fonctionne pas, il n'y a pas de mal à faire.
branche de git
Il suffit d'exécuter la commande de branche sans les options listeront nos branches; pour le moment, nous n’avons que la branche master, c’est ce que tout référentiel git commence par. Pour créer réellement une nouvelle branche, ajoutez le nom de votre nouvelle branche après la commande.
git branch bigIdea
Lorsque vous créez une nouvelle branche, vous n’y passez pas automatiquement. Notez que notre terminal dit toujours (maître). C’est là que nous utilisons la commande camarade de branches git checkout.
git checkout bigIdea
(Astuce: vous pouvez créer une branche et y basculer d’un coup avec cette commande: git checkout -b nom de la branche.) Comme vous pouvez le constater, nous sommes maintenant sur la branche bigIdea. Codons une tempête. Statut git montrera notre travail.
Engageons nos changements:
git add. git commit -m 'La fonctionnalité Kiler ajoutée'
Très bien, assez de cette fonctionnalité pour le moment; revenons à notre branche principale; mais avant nous, je veux vous montrer notre dossier de projet actuel.
Maintenant, revenez à la branche principale; tu sais comment:maître de caisse. Regardez à nouveau notre dossier de projet.
Non, je n'ai rien fait. Ces deux fichiers ne sont qu'une partie de la branche bigIdea, nous ne savons donc même pas qu'ils existent depuis la branche master. Cela fonctionne non seulement pour des fichiers complets, mais aussi pour les plus petites modifications au sein des fichiers..
Ok, nous avons donc travaillé dur sur cette branche bigIdea pendant notre temps libre. En fait, après un autre commit, ça a l'air si gentil que nous avons décidé qu'il était assez bon de rejoindre la branche principale. Alors comment le fait-on?
le fusionner la commande est faite exactement à cette fin. Alors que sur la branche principale, essayez ceci:
Git Merge BigIdea
C'est si facile; maintenant, tout sur la branche bigIdea fait partie de la branche master. Vous pouvez vous débarrasser de la branche bigIdea maintenant, si vous voulez.
Git Branch - BigIdea
Je devrais mentionner que si vous n'avez pas fusionné une branche, Git ne vous laissera pas la supprimer avec cette commande; vous devrez utiliser un D majuscule dans l'option. Ceci est juste une mesure de sécurité.
Vous voudrez probablement consulter votre historique de validation à un moment donné de votre projet. Cela peut facilement être fait avec la commande log.
journal git
Cela produira une liste de tous les commits que vous avez effectués dans un projet, en les affichant dans l'ordre inverse. Vous pouvez obtenir une bonne quantité d'informations ici:
Certainement informatif, mais plutôt sec, non? Nous pouvons éclaircir un peu les choses avec l'option graphique.
git log --graph
Maintenant, nous pouvons voir l’arborescence, en quelque sorte. Bien que nous n'ayons pas leurs noms, nous pouvons voir chacune des branches et les commits qui ont été faits dessus. Si vous avez l'habitude de travailler dans un terminal, cela vous conviendra peut-être bien. Cependant, si (avant cette expérience) le mot Terminal vous semble d'abord mortel, respirez facilement: il existe une application pour cela. Essaye ça:
gitk --all
Ceci est le navigateur de référentiel graphique. Vous pouvez naviguer autour de vos commits, voir exactement ce qui a été modifié dans chaque fichier lors d'un commit, et bien plus encore. (Vous remarquerez que j'ai ajouté quelques commits avant de fusionner, juste pour rendre l'arborescence plus reconnaissable.)
Maintenant que vous avez une connaissance raisonnable de Git à votre actif, examinons certaines des parties collaboratives de Git. Git est un excellent moyen de partager du code avec d'autres et de travailler sur des projets ensemble. Il existe un certain nombre de sites d'hébergement de référentiels Git. Nous n'en regarderons qu'un: GitHub.
Rendez-vous sur la page d'inscription GitHub et créez un compte. Vous aurez besoin d'une clé publique SSH, alors créons-la maintenant! (Remarque: vous n'avez pas besoin de la clé pour vous inscrire, vous pouvez l'ajouter ultérieurement.)
Ouvrez votre terminal et tapez ceci:
ssh-keygen -t rsa -C "[email protected]"
L'option t attribue un type et l'option C ajoute un commentaire, généralement votre adresse électronique. On vous demandera ensuite où enregistrer la clé; Il suffit de frapper Entrée pour que le fichier soit sauvegardé à l'emplacement par défaut. Ensuite, entrez une phrase de passe à deux reprises. Maintenant vous avez une clé; donnons-le à GitHub.
Tout d’abord, récupérez votre clé dans le fichier; le terminal vous aura indiqué où la clé a été stockée; ouvrez le fichier, copiez la clé (veillez à ne pas ajouter de saut de ligne ni d’espace). Ouvrez la page de votre compte GitHub, faites défiler jusqu'à SSH Public Keys (Clés publiques SSH), puis cliquez sur «Ajouter une autre clé publique». Collez votre clé et sauvegardez-la. Vous êtes prêt à partir! Vous pouvez tester votre authentification en lançant ceci:
ssh [email protected]
Votre mot de passe vous sera demandé. pour ne pas avoir à taper cela chaque fois que vous vous connectez à GitHub, vous pouvez automatiser cela. Je pourrais vous dire comment faire cela, mais je risquerais probablement de plagier par inadvertance: l’aide de GitHub contient un article en anglais expliquant comment le faire..
Alors maintenant, vous êtes configuré avec GitHub; prenons un projet. Que diriez-vous de jQuery? Si vous allez dans le projet jQuery GitHub, vous trouverez l'URL de clone git. Lance ça:
git clone git: //github.com/jquery/jquery.git
Cela crée un dossier jQuery et copie l’ensemble du référentiel jQuery sur votre ordinateur. Maintenant, vous avez une histoire complète du projet; vérifier avec gitk -all.
Supposons que vous travailliez sur un projet et que vous le gériez avec git localement. Maintenant, vous voulez le partager avec un ami ou avec le monde. Connectez-vous à GitHub et créez un nouveau référentiel. GitHub vous donnera une URL de clone publique (pour les autres personnes souhaitant télécharger votre projet) et une URL de clone personnelle (pour vous-même)..
Revenez ensuite à votre projet dans le terminal et donnez-lui un tourbillon:
git remote ajouter l'origine [email protected]: andrew8088 / Shazam.git
Une télécommande est un référentiel de projet situé dans un emplacement distant. Dans ce cas, nous attribuons à cette télécommande un nom d'origine et lui attribuons notre URL de clone privée. (Évidemment, vous devrez remplacer mon URL par la vôtre.) Maintenant que le projet sait où il va…
maître d'origine git push
Cela pousse la branche principale vers la télécommande d'origine. Maintenant, votre projet est disponible pour le monde entier! Retournez à la page de votre projet et consultez votre projet..
Vous êtes peut-être à l’autre bout d’un projet: vous êtes un contributeur au lieu du propriétaire. Lorsque le propriétaire envoie un nouveau commit dans le référentiel, vous pouvez utiliser git pull pour obtenir les mises à jour. Git pull est en fait un outil combo: il fonctionne aller chercher (obtenir les changements) et fusionner (en les fusionnant avec votre copie actuelle).
git pull
Eh bien, il y a tellement plus que vous pouvez en apprendre davantage sur Git; J'espère que vous avez appris suffisamment de commandes pour vous aider à gérer votre prochain projet de manière plus intelligente. Mais ne vous arrêtez pas là; consultez ces ressources pour devenir un maître Git!