Gérez votre version de fichiers comme un programmeur avec Git

Gérez votre version de fichiers comme un programmeur avec Git / La programmation

Si vous avez déjà travaillé avec des collègues sur un document, vous connaissez cette douleur: quelqu'un prend le premier passage (document.doc), puis l'envoie à tout le monde par courrier électronique. La personne suivante fait la même chose que la troisième, chacune effectuant une révision (document_rev3.doc) au nom du fichier. Le gestionnaire aime ce qu’elle voit et le marque comme étant complet (document_final.doc)… Jusqu'à ce que des changements de dernière minute interviennent (document_final_Aaron's changes_reviewed_by_Bob_now_really_final.doc).

Imaginez maintenant de tels changements dans des dizaines de fichiers de code source. Les programmeurs ont créé des systèmes de contrôle de version (VCS) pour résoudre ce problème. Ils sont un peu techniques par nature, mais peuvent également être utiles pour les utilisateurs expérimentés. Regardons les bases du contrôle de version en utilisant le système supérieur aujourd'hui, Git.

Présentation du contrôle de version utilisé

Le but principal des VCS est de capturer les versions (aussi appelé révisions) d'un fichier au fil du temps. Cela signifie ne pas compter sur des méthodes brutes comme celle décrite ci-dessus. Dans ces systèmes, lorsque vous accédez à “document.doc” vous travaillez par défaut sur la version la plus récente. Mais vous pouvez également revenir dans l'historique du fichier et récupérer les versions antérieures. Les systèmes conçus spécifiquement pour gérer les versions de fichiers ont commencé au cours du développement logiciel, mais ont fait leur chemin dans “courant dominant” applications aussi bien.

L'évolution du contrôle de version dans le développement logiciel

Les applications de contrôle de version étaient à l'origine un moyen d'empêcher les programmeurs de déchiffrer le code de chacun. Les premiers systèmes permettaient simplement aux utilisateurs de verrouiller les fichiers d’autres éditions, tandis que les systèmes de deuxième génération (tels que Subversion Comment contrôler les versions de WordPress avec Subversion [Linux] Comment contrôler les versions de WordPress avec Subversion [Linux] La plupart d’entre vous connaissez probablement déjà WordPress alimente un grand nombre de sites Web que nous consultons tous les jours. Grâce à la base d'utilisateurs et au support importants, vous pouvez faire beaucoup de choses sympas avec… Read More) ajout d'une commande de projet complète à partir d'un référentiel central.

Bien que ces systèmes de deuxième génération soient encore largement utilisés, l'industrie est en train de migrer vers des systèmes de troisième génération. La principale caractéristique de ces systèmes est qu'ils sont distribué, ce qui signifie qu'il n'y a pas de référentiel central. Au lieu de cela, chaque utilisateur a sa propre copie complète du référentiel (y compris toutes les révisions antérieures). Mais tous les changements (même les révisions complètes) sont “local” jusqu'à ce qu'il “pousse” les dans un autre référentiel. Cet utilisateur peut ensuite extraire un clone afin d'apporter des modifications et de répéter le processus..

Contrôle de version actuel pour les non-programmeurs

La possibilité de capturer plusieurs versions de la même chose est également une fonctionnalité courante pour les utilisateurs moyens. Pas seulement pour les codeurs: Principaux systèmes de contrôle de version pour les auteurs, pas seulement pour les Codeurs: Principaux systèmes de contrôle de version pour les Écrivains cela ressemble à quelque chose pour les geeks. Vous serez surpris de savoir que les systèmes de contrôle de version ont leur place non seulement dans l'écriture académique, mais… Lire la suite. Avec un accès à un stockage moins cher, à la fois sur la machine locale et via des services de cloud computing faciles à utiliser, les utilisateurs ont désormais la possibilité de suivre l'historique de leurs fichiers. Les programmes polyvalents le font de différentes manières.

Systèmes d'exploitation peut capturer un historique de fichiers ou de dossiers Guide de sauvegarde de données Windows 10 ultime Guide de sauvegarde de données Windows 10 ultime Nous avons résumé toutes les options de sauvegarde, de restauration, de restauration et de réparation que nous pouvions trouver sur Windows 10. Utilisez nos astuces simples et ne désespérez jamais. sur les données perdues à nouveau! Lire la suite . Cela peut se produire automatiquement chaque fois qu'un fichier est enregistré ou selon un calendrier régulier. Certains applications de bureau vous permettent également de capturer des versions ou des instantanés de fichiers. Par exemple, LibreOffice fournit le “Enregistrer la version” fonction (comme indiqué dans l'image du haut ci-dessous) qui vous permet d'enregistrer plusieurs versions du document dans un seul fichier. Enfin, les applications Web / cloud telles que Google Drive, ownCloud, etc. conserveront également les itérations passées d'un fichier ou d'un document (comme indiqué pour Google Docs dans l'image du bas ci-dessous), soit en coulisse, soit selon votre commande express..

Pourquoi utiliser ensuite le contrôle de version par programmation?

Étant donné que toutes ces options existent déjà au niveau du système d'exploitation ou de l'application, pourquoi s'embêter avec ces outils de programmation nerdy? Les méthodes ci-dessus présentent quelques inconvénients, notamment:

  • Certains systèmes d’exploitation enregistrent chaque modification de fichier que vous apportez à un fichier dans une nouvelle version. Back Back Time: 4 outils et astuces pour restaurer des fichiers supprimés sous Windows. Back Back Time: 4 outils et astuces pour restaurer des fichiers supprimés sous Windows. Si vous supprimez accidentellement un fichier important, le système Windows ne supprime pas réellement les fichiers. Jusqu'à ce qu'ils soient écrasés, les fichiers supprimés peuvent être restaurés. Lire la suite . Cela va non seulement occuper un espace de stockage inutile, mais aussi rendre difficile l'identification d'un point de restauration particulier pour un fichier..
  • Ces solutions peuvent également utiliser un fichier comme unité de base à gérer. Mais les systèmes de contrôle de version fonctionnent généralement au niveau du répertoire (y compris les sous-répertoires). Un VCS permet de voir précisément quel fichier a été modifié et quand..
  • Ces mêmes solutions ne vous permettent pas non plus d'étiqueter les itérations dans la plupart des cas. Cela rend également difficile la recherche du fichier avec le passage de texte que vous avez écrasé à un moment donné avant de réaliser à quel point il était brillant..
  • Le contrôle des versions par les systèmes d'exploitation et les applications telles que Word introduit également des points de défaillance uniques. Pour Word, il s’agit du fichier lui-même (s’il est corrompu, dites également adieu à toutes vos copies antérieures). Pour le système d'exploitation, c'est le disque dur Comment diagnostiquer et réparer un disque dur mort pour récupérer des données Comment diagnostiquer et réparer un disque dur mort pour récupérer des données Il y a plusieurs années, j'ai subi une panne de disque dur. J'étais au travail lorsque mon ordinateur portable a soudainement commencé à agir de manière particulièrement étrange. Environ une demi-heure plus tard, le disque dur est tombé en panne de manière audible et l'ordinateur… Lire la suite, sauf si vous êtes un utilisateur responsable et sauvegardez régulièrement. Guide de sauvegarde et de restauration Windows Le guide de sauvegarde et de restauration Windows Les catastrophes se produisent. Sauf si vous êtes prêt à perdre vos données, vous avez besoin d'une bonne routine de sauvegarde Windows. Nous allons vous montrer comment préparer et sauvegarder les sauvegardes. Lire la suite .
  • La nature des services Web signifie que vos anciennes versions peuvent se trouver dans le cloud. Par exemple, si vous essayez d'afficher l'historique d'un fichier Dropbox sous Linux (comme le montre l'image ci-dessous), vous êtes redirigé vers le site Web..

Si l’un ou l’autre de ces problèmes vous fait vouloir quelque chose de plus, consultez la section suivante où nous les résolvons avec Git.

Contrôle de version avec Git

Dans les sections suivantes, nous allons passer en revue chacune de ces étapes pour un projet très important: cet article même. Nous allons le faire en utilisant la version en ligne de commande de Git. Connaître les commandes du terminal facilitera la recherche de leurs équivalents graphiques et vous permettra de l'utiliser sur toutes les plates-formes..

1. Configurer le référentiel Git

Si git n'est pas installé sur votre ordinateur (les Mac le font, comme certaines distributions Linux), vous pouvez soit récupérer le programme d'installation Windows à partir de la page de téléchargement du projet, soit installer sous Linux à l'aide d'une commande (spécifique à votre distribution) telle que:

sudo apt install git

La prochaine chose que nous devons faire est de mettre en place un git dépôt, qui est juste un dossier contenant votre projet. Pour tirer parti de la gestion des versions de Git, vous devez initialiser le dossier en tant que référentiel. Vous pouvez le faire en ligne de commande avec la commande suivante:

git init

Vous pouvez ne plus rien voir une fois que cela est terminé, mais activez la “montrer les fichiers cachés” option dans votre gestionnaire de fichiers, et vous verrez qu'il y a une nouvelle .git dossier (comme indiqué dans l'image ci-dessus). C’est là que git conserve toutes ses informations afin que ce soit hors de votre portée.

2. Ajouter et valider votre premier fichier

L'étape suivante consiste à créer du contenu (fichiers) dans votre projet. Cela peut être n’importe quel type de fichier, car la plupart des projets de programmation sont composés de code (texte) et d’actifs tels que des graphiques (binaires). Tout ce que vous devez savoir sur les formats de fichier et leurs propriétés. Tout ce que vous devez savoir sur les formats de fichier et leurs propriétés. utilisez le fichier de mots de manière interchangeable: musique, image, feuille de calcul, diaporama, etc. Mais qu'est-ce qui fait qu'un fichier est un "fichier"? Essayons de comprendre cette partie fondamentale de l'informatique. Lire la suite . Une fois créé, procédez comme suit sur la ligne de commande tout en restant dans le répertoire de votre projet:

statut git

La première étape d'un commit consiste à “étape” les éléments nouveaux ou mis à jour. Voyez comment la sortie ci-dessus vous laisse savoir qu'il y a “sans mise en scène” changements? Vous pouvez tout organiser dans votre répertoire (de manière récursive, c’est-à-dire pour inclure des sous-dossiers et leurs fichiers) avec cette commande:

git -a .

le “-une” le drapeau est pour “ajouter,” et la période fait référence au répertoire en cours. Il dit fondamentalement “ajouter tous les fichiers à mon commit.” Maintenant, pour réellement effectuer la validation, tapez ce qui suit:

git commit -m "WHOOP, mon premier commit!"

Maintenant, lorsque vous vérifiez à nouveau le statut, il ne devrait y avoir aucune modification en attente. Pour voir le commit lui-même, consultez le journal git, en utilisant mode graphique, avec liste coupée à une ligne, et décoré pour la lisibilité:

git log --all --decorate --oneline --graph

Cela vous montrera une belle chronologie de votre commit, avec le plus récent en haut.

3. Créer une branche à expérimenter

Pendant que vous travaillez, vous voudrez peut-être partir dans une direction particulière, sans savoir si cela va marcher. Pour cela, vous voudrez créer une branche avec la commande suivante:

expérience de branche git1 expérience de caisse Git1

La deuxième commande vous dirige vers le “expérience1” branche. Vous pouvez revenir en arrière en le remplaçant par “maîtriser.” Lorsque vous commencez à travailler sur votre texte, notez la différence entre le même fichier de chaque branche. Premièrement le “expérience1” branchez avec votre nouveau texte:

Comparez ceci à l'original:

Maintenant, après avoir travaillé pendant un certain temps (avec un nouveau commit), le mieux que vous puissiez trouver est “Lorem ipsum dolor sit amet… ?” Qu'est-ce que c'est? C'est un non-sens et devrait être immédiatement supprimé de votre projet. Vous pouvez supprimer votre branche avec la commande suivante (“-ré” pour la suppression de force):

branche git -D experience1

Maintenant, démarrez une autre branche et ajoutez quelque chose d'intelligent, avec quelques images:

expérience de branche git2 expérience de vérification git2 git add. git commit -m "Plus de texte, images ajoutées"

4. Fusionner vos modifications

Enfin, une fois que vous êtes satisfait des modifications apportées à votre branche actuelle, la commande suivante les fusionnera avec le “maîtriser” branche. Si vous n'avez pas fait beaucoup de va-et-vient entre les deux, toutes vos nouvelles modifications seront appliquées et une nouvelle révision sera créée. Ce qui suit sur la ligne de commande les combinera pour vous:

expérience de fusion git2

Maintenant, vous aurez une révision qui combine les dernières en “maîtriser” avec le dernier en “expérience2.” À ce stade, vous pouvez vous débarrasser de l'expérience (après tout, elle a abouti) avec les éléments suivants:

expérience git branch -d2

Notez que si vous le faites, vous ne perdrez que les modifications incrémentielles apportées dans cette branche..

5. Poussez vers un endroit sûr

Enfin, Git est un distribué système, ce qui signifie que vous pouvez avoir plusieurs copies de votre référentiel et les synchroniser. Par exemple, créez un nouveau référentiel sur un serveur sur lequel vous pouvez SSH. Comment gérer un serveur Linux avec SSH à distance Comment gérer un serveur Linux avec SSH à distance Apprenez à gérer un serveur Linux à distance via SSH, de la connexion à l'installation de logiciels, en passant par le transfert de fichiers. Lire plus avec cette commande:

git init --bare

le “-nu” flag le configure comme une sorte de référentiel en lecture seule, en ce sens que vous ne pouvez pas modifier les fichiers directement. Ensuite, vous pouvez définir cela comme une copie distante de votre référentiel local avec les éléments suivants (la première commande permet de créer de nouvelles branches locales à distance):

git config push.default correspondant git remote ajouter ssh central: // [nom d'utilisateur] @ [URL] / chemin / vers / référentiel git push --set-up central master

Configurer pour la gestion des versions et la sauvegarde avec Git

Avec la configuration ci-dessus, vous pouvez suivre un processus simple pour conserver tout le travail que vous effectuez sur un projet non seulement versionné, mais également sauvegardé..

  1. Apporter des modifications aux fichiers de projet.
  2. Problème “git ajouter .” ajouter toutes les modifications à un commit.
  3. Problème “git commit -m [un message]” commettre les modifications à votre local dépôt. Répéter depuis le début.
  4. Problème “git push” valider les modifications dans un référentiel distant à intervalles réguliers.
  5. Problème “git clone ssh: // [nom d'utilisateur] @ [URL] / chemin / vers / référentiel” d'une autre machine à

Les avantages des systèmes de contrôle de version vous intéressent-ils? Ou les applications de sauvegarde non destinées au développement suffisent-elles à vos besoins? Faites-nous savoir vos pensées dans les commentaires ci-dessous!

En savoir plus sur: Gestion de fichiers.