Passer au contenu
GitTree

Leçon 4 · Fondations

Créez votre référentiel de cours, puis distinguez cloner et ouvrir

Créez des fonctionnalités GitTree à partir de l'écran Nouvel onglet de GitTree et vérifiez qu'il n'y a pas encore de validation. Créez ensuite un clone local distinct pour voir pourquoi l'ouverture d'un dossier, l'initialisation de l'historique et la copie d'un référentiel sont des actions différentes.

Progression enregistrée dans ce navigateur.

La lecture charge la vidéo depuis YouTube (mode de confidentialité amélioré).

Narration en anglais · English and Arabic légendes

Ouvrez la page vidéoRegarder sur YouTube

Ce que vous apprendrez

  • Initialisez le premier référentiel de cours dans GitTree avec un nom de branche explicite.
  • Reconnaissez une branche à naître sans inventer un premier commit.
  • Enregistrez l'identité fictive uniquement dans le référentiel du cours.
  • Clonez le même référentiel vide dans un dossier séparé et vérifiez son origine.
  • Rouvrez l'original sans créer ni copier un autre référentiel.

Avant de commencer

Commencez là où se terminent les leçons 2 et 3 : Git est disponible et aucun référentiel de cours n'existe. La leçon 2 a présenté un aperçu de la démo GitTree ; il n'a pas enregistré la configuration globale. Vous avez besoin d'un dossier parent existant et accessible en écriture réservé aux travaux de cours. L'enfant gittree-features doit être nouveau ou vide, en dehors des extractions de sources existantes. Ne pas initialiser dans ce référentiel Web ou dans un projet personnel.

Utilisez Git en respectant le GitTree minimum 2.39.0 inspecté. Les commandes et les écrans de la vidéo ont été enregistrés avec Git 2.52.0 et GitTree 2.0 sur Ubuntu 24.04, dans un dossier personnel privé, et les vérifications de cet article ont été effectuées sur les référentiels créés par l'enregistrement. Ils n'ont pas été exécutés sur macOS ou Windows. Les raccourcis par défaut utilisent Commande sur macOS et Ctrl sur Windows et Linux ; le sélecteur de dossiers natif est différent sur chaque système et n'a pas été filmé.

Une fois connecté à GitTree, ces flux de travail locaux ne nécessitent aucune intégration de fournisseur, Pro ou essai : le plan gratuit les couvre. Le clone utilise une URL file:// sur la même machine, et non des informations d'identification GitLab hébergées ou Claude.

Concept

Init crée les métadonnées du référentiel Git pour un répertoire choisi. Cela ne crée pas de validation simplement parce qu'un nom de branche est présent. Un nouveau référentiel ordinaire possède un répertoire d'arborescence de travail et un index initialement vide. HEAD peut symboliquement nommer refs/heads/main avant que cette branche ne soit soumise à un commit vers : un unborn branch.

Clone crée un référentiel différent à partir d'une source. Habituellement, il copie l'historique accessible et extrait la branche source sélectionnée, tout en enregistrant une télécommande appelée origin. Ici, la source est volontairement vide, il n'y a donc pas d'historique ni de contenu de travail à copier. Il s'agit d'un cas limite valide, pas d'un échec de téléchargement.

Open sélectionne un référentiel existant pour inspection dans GitTree. Ouvrir un onglet ne consiste pas à cloner ses fichiers, à créer un commit ou à ajouter un service d'hébergement. L'application peut mettre à jour son état récent/espace de travail et effectuer des vérifications de confiance séparément.

Les trois verbes reviennent à créer un nouveau cahier, à en faire une copie séparée et à placer un cahier existant sur votre bureau. N'étendez pas l'analogie aux autorisations : les paramètres ou les hooks d'un référentiel peuvent exécuter des programmes, donc GitTree examine leur confiance plutôt que de traiter « ouvert » comme une autorisation d'exécution inconditionnelle.

Action dans cette leçonArbre/index de travailRéférents locauxRéférences/configuration distantes
Initialiser l'original avec principalNouvel arbre de travail ordinaire ; pas de fichiers de projet ni d'entrées indexéesLa HEAD symbolique nomme le principal à naître ; pas de conseil de validationAucune télécommande configurée
Enregistrer l'identité de la démo localeAucune modification du contenu du fichier/index/historiqueAucun changement de référenceÉcrit uniquement user.name/user.email dans la configuration du référentiel d'origine
Cloner l'original dans un dossier séparéNouvel arbre de travail/index vide dans la copieToujours aucun commitLa copie a une origine pointant vers l'original ; aucune astuce de branchement de suivi à distance n'existe pour l'instant
Rouvrir l'originalSélectionne l'original existant ; pas de double emploiAucune création de commit/refL'original reste sans télécommande

Un référentiel nu est un stockage d'historique sans fichiers de travail ordinaires. C'est utile dans les exercices ultérieurs sur le serveur, mais ce n'est pas le bon choix pour créer cette page de destination. Les modèles facultatifs .gitignore/licence créeraient des fichiers non validés ; refusez-les pour préserver ce point de contrôle.

Pour la sémantique native, voir git-init et git-clone. Les vérifications de vide/nouvelle destination de l'application sont plus strictes que la capacité native de Git à réinitialiser un référentiel existant. N'utilisez pas le terminal pour échapper au refus d'une application sans comprendre ce qu'elle protège.

Dans GitTree — la première initialisation canonique

Les actual current-source labels sont la carte Nouvel onglet Init, la boîte de dialogue Initialize a repository, soumettre Initialize. « Initier un référentiel » dans l'ancien plan était descriptif, pas le texte du bouton actuel.

  1. Choisissez New Tab (tab.new), Command+T / Ctrl+T. Attendez-vous aux cartes Open, Clone et Init.
  2. Cliquez sur Init. Attendez-vous à Initialize a repository, sans aucune modification enregistrée avant la soumission. Alternative : Command Palette… avec Command+Shift+P / Ctrl+Shift+P → Initialize Repository… (repo.init). Aucun raccourci direct par défaut n'est affirmé pour Init.
  3. Dans Location, saisissez le chemin complet de votre nouveau répertoire gittree-features sous le parent existant réservé. Vous pouvez utiliser Browse…, puis le sélecteur natif Choose where to create the repository ; les boutons de sélection du système d'exploitation natifs ne sont pas inventés ici. Revérifiez l'emplacement complet final après la navigation.
  4. Définissez Initial branch sur main. Gardez Bare repository (history only, no working files) off.
  5. Définissez .gitignore template et Licence sur None lorsque ces contrôles de modèle sont chargés. Leurs valeurs par défaut ne sont pas de sélection ; si les contrôles sont absents, n’ajoutez pas silencieusement de fichiers ailleurs. Gardez Open after creating on.
  6. Emplacement de révision, principal, nu, modèles Aucun et ouvert après. Choisissez Initialize une fois. Attendez-vous à ce que le référentiel soit créé et ouvert, éventuellement via le flux de travail de confiance normal. N’appuyez pas plusieurs fois pendant que vous êtes en attente.
  7. Si Trust this repository? apparaît, examinez son chemin réel et ses résultats. Cancel le laisse fermé ; Open in Restricted Mode limite les opérations ; Trust and Open autorise les paramètres/hooks normaux du référentiel. Pour ce bac à sable auto-créé, choisissez Confiance et Ouvrir uniquement une fois les résultats compris. Dans l'enregistrement, aucune invite de confiance n'est apparue pour le nouveau dossier ; ne vous attendez pas à ce que chaque nouveau référentiel affiche cette boîte de dialogue.
  8. Confirmez que l'onglet est l'original gittree-features, et non le parent ou une copie portant un nom similaire. Son graphique n'a pas encore de commit. Ne créez pas de validation initiale de « nettoyage » pour supprimer l’état vide.

Enregistrer l'identité fictive locale du référentiel

  1. Avec l'original actif, ouvrez Preferences (app.preferences.open), Command+, / Ctrl+,.
  2. Dans la section de navigation spécifique au référentiel, choisissez gittree-features. Il s'agit du nom du référentiel dynamique, pas d'une page Profils globale. Pour les largeurs étroites, son étiquette de sélecteur de page est Repo-Specific: gittree-features.
  3. Recherchez Name for commits (paramètre repo.userName, sauvegarde de la clé Git user.name). Sous son Writes to, sélectionnez ou vérifiez Local (this repository). Ne choisissez pas Global (every repository).
  4. Saisissez GitTree Demo et choisissez le Apply de la ligne. Vous pouvez également appuyer sur Enter dans ce champ. Attendez Saved avant de continuer.
  5. Pour Email for commits (repo.userEmail, supportant user.email), vérifiez la même cible locale, saisissez demo@example.com, puis Apply ou Entrée. Attendez Enregistré.
  6. Choisissez Exit Preferences. Attendez-vous à ce que le référentiel d'origine soit toujours actif et son historique toujours vide. La configuration locale a changé, pas les fichiers de travail ou le graphique.

Taper seul laisse un brouillon. Escape dans un champ modifié annule d'abord ce brouillon ; ce n’est pas un raccourci garanti « tout quitter ». La cible explicite Apply/local est la raison pour laquelle cette étape diffère de l'aperçu annulé de la leçon 2.

Dans le terminal : vérifiez le résultat de l'application

Remplacez <course-parent> par votre propre chemin parent absolu réservé, en conservant les guillemets autour des chemins. Exécutez-les après l'initialisation de l'application, pas lors du paiement en ligne :

Command · bash
cd "<course-parent>/gittree-features"
git rev-parse --is-inside-work-tree
git rev-parse --is-bare-repository
git symbolic-ref --short HEAD

Résultats de requête observés, dans l'ordre :

Sortie
true
false
main

Prouver qu'aucun commit n'existe :

Command · bash
git rev-parse --verify --quiet HEAD

Observé : no stdout or stderr; exit status 1. C’est le résultat attendu d’une branche à naître, pas un diagnostic de corruption. Symbolic HEAD et vérification de révision répondent à des questions différentes.

Inspectez les fichiers, les index et les noms distants :

Command · bash
git status --short
git ls-files
git remote

Chaque commande a produit no output and exited 0 dans le luminaire. Ces requêtes à elles seules ne prouvent pas que tous les fichiers ignorés sont absents. Dans votre gestionnaire de fichiers, inspectez le dossier réservé avec les éléments masqués visibles : il doit contenir les métadonnées du référentiel .git, mais aucun fichier de projet pour l'instant. Ne modifiez rien dans .git.

Lisez uniquement les deux champs d'identité locale explicites :

Command · bash
git config --local --get user.name
git config --local --get user.email

Observé :

Sortie
GitTree Demo
demo@example.com

Aucun vidage de configuration personnel/global n'est nécessaire.

Alternative d'initialisation native - pas un deuxième démarrage canonique

L'équivalent natif pour un separate disposable comparison copy, ou quelqu'un qui étudie Git sans l'application, est :

Command · bash
cd "<course-parent>"
git init --quiet --initial-branch=main --template= gittree-features

Il n'a imprimé aucune sortie et est sorti à 0 dans le luminaire isolé. Do not rerun it on the original already created in GitTree. L'option de modèle natif vide contrôle le répertoire de modèles de Git ; ce n'est pas le sélecteur .gitignore/licence facultatif de l'application. Sur une machine normale, les modèles/paramètres hérités doivent toujours être révisés.

Si vous définissez l'identité par le chemin d'accès natif au lieu de la ligne de l'application, sélectionnez d'abord le nouveau référentiel et écrivez délibérément uniquement la configuration locale :

Command · bash
cd "<course-parent>/gittree-features"
git config --local user.name "GitTree Demo"
git config --local user.email demo@example.com

Les deux écritures étaient des opérations silencieuses réussies dans la copie de vérification isolée. Ce sont des alternatives aux écritures de l'application, et non une excuse pour ignorer la vérification de la prise de l'application.

Cloner une copie locale distincte

Ce petit exercice parallèle utilise le même projet, et non une deuxième application de démonstration. Le original stays the course checkpoint et doit être à nouveau actif avant la leçon 5. Ce n'est pas une télécommande ajoutée à l'original.

Dans GitTree

  1. Ouvrez un nouvel onglet, puis Clone. Palette alternative : Clone Repository… (repo.clone). Attendez-vous à Clone a repository.
  2. Choisissez Clone with URL. Dans Repository URL, saisissez l'URL locale absolue de l'original, par exemple file:///absolute/course-parent/gittree-features, en remplaçant cet exemple par votre chemin réservé réel. L'analyseur d'URL de l'application accepte les URL de fichiers absolues ; un chemin local brut n'est pas son entrée prise en charge. Utilisez un chemin de bac à sable simple sans espaces pour ce premier exercice ; Le codage d'URL et la syntaxe du lecteur Windows nécessitent leur propre revérification de plate-forme.
  3. Dans Parent folder, choisissez le même parent de cours existant. Dans Folder name, saisissez explicitement gittree-features-copy. Cochez Clones into pointe vers la copie, not the original.
  4. Laissez Depth vide pour un historique complet ; garder Also clone submodules, Sparse checkout: only the top-level files at first, then the folders you choose et Download file contents only when they are needed (blobless) désactivés. Gardez Open after cloning allumé.
  5. Choisissez Clone une fois. Attendez-vous à une progression réelle du clonage ou à un achèvement rapide pour cette source locale vide, puis la copie s'ouvre via tout examen de confiance requis. N’insistez pas pour que chaque phase d’avancement soit visible pour une si petite opération.
  6. Inspectez le graphique vide de la copie et utilisez les vérifications de terminal ci-dessous. Son origin appartient à the copy, pointant vers l'original. Une origine configurée n’est pas une branche de suivi à distance existante ni un fournisseur hébergé.
  7. Pour revenir, choisissez Open dans Nouvel onglet ou Open Repository… (repo.open), Command+O/Ctrl+O, sélectionnez le dossier gittree-features d'origine et consultez toute invite de confiance requise. L'enregistrement a plutôt utilisé le bouton Open sur la ligne de l'original dans Recent sur Nouvel onglet, ce qui l'a ouvert de la même manière ; le sélecteur de système n'a pas été filmé. Vous pouvez également déposer ce dossier d'origine sur la surface de dépôt de dossiers de Nouvel onglet (non filmé). Attendez-vous à ce que l'original soit sélectionné/ouvert ; ne promettez pas si la version actuelle réutilise un onglet ou en crée un autre.
  8. Gardez la copie supplémentaire intacte. Vous n'avez pas besoin de le supprimer pour continuer. Confirmez que l'original n'a toujours pas d'identité de démonstration distante et locale avant la leçon 5.

Comparaison native et résultat

Depuis le parent réservé, dans un separate take where the destination does not exist :

Command · bash
git clone --quiet "file://<absolute-source-path>" gittree-features-copy

Ici, <absolute-source-path> commence par / sur l'enregistrement macOS, créant une URL avec trois barres obliques après file:. Remplacez l'espace réservé ; ne tapez pas les crochets angulaires. L'exact observé stderr, malgré une sortie 0 réussie :

Sortie
warning: You appear to have cloned an empty repository.

Maintenant, interrogez la copie :

Command · bash
cd "<course-parent>/gittree-features-copy"
git remote
git symbolic-ref --short HEAD
git config --local --get user.name

Deux premiers résultats observés :

Sortie
origin
main

La dernière requête n'imprime rien et quitte 1 : le clonage n'a pas copié la configuration locale user.name d'origine. Un paramètre global externe peut toujours fournir une identité efficace sur votre machine réelle ; la requête local répond délibérément uniquement à ce que contient ce clone. Ne lisez pas toute la configuration globale de la caméra. Nous ne nous engageons pas à l'intérieur de la copie.

Résultat

À la fin de cette leçon, l'original est un référentiel ordinaire avec un principal symbolique à naître, aucun commit, aucun fichier de projet, un index logique vide, aucune identité distante et locale GitTree Démo / demo@example.com. Le clone supplémentaire facultatif a une origine mais pas d'historique ; il se situe en dehors du point de contrôle continu du projet.

Le graphique reste vide par conception. La leçon 5 crée README.md et index.html et effectue le premier commit délibéré.

Erreurs courantes

  • Choosing the parent instead of the new child: vérifiez l'emplacement et l'onglet actif avant toute écriture de configuration.
  • Choosing bare mode: un dépôt nu ne fournit pas les fichiers de travail ordinaires de la page de destination.
  • Adding templates: ils introduisent des fichiers non suivis qui n'appartiennent pas à ce point de contrôle vide.
  • Treating unborn HEAD as corrupt: principal symbolique sans validation est normal immédiatement après l'initialisation.
  • La destination Cloning onto the original: doit être un dossier nouveau/vide distinct.
  • Assuming clone copies local identity: il copie l'historique du référentiel, pas le user.name/user.email local de l'original.
  • Continuing in the copy: son origine rend son état différent de l'original canonique.

Si quelque chose ne va pas

Un refus de destination non vide signifie que GitTree a protégé un dossier existant. Choisissez un nouvel enfant vide ; ne supprimez pas son contenu pour faire taire l'erreur. « Le dossier qui devrait le contenir n'existe pas » signifie que vous devez créer/sélectionner délibérément le parent réservé avant de réessayer.

Si un référentiel existe déjà, open it et inspectez-le ; ne le réinitialisez pas pour que le cours apparaisse frais. S'il s'agit d'un travail sans rapport, laissez-le inchangé et choisissez un dossier de cours distinct.

Si le clonage échoue, lisez l’erreur réelle et le résultat du nettoyage. GitTree distingue un dossier appartenant à un clone supprimé, un dossier préexistant préservé, un contenu supplémentaire inattendu et un échec de nettoyage. Cancel Clone demande l'annulation ; cela ne prouve pas que chaque octet a disparu. Inspectez le contenu conservé avant de supprimer quoi que ce soit. L’avertissement de source vide à lui seul n’est pas un échec.

Si les résultats de confiance ne vous sont pas familiers, choisissez Annuler ou le mode restreint. Ne faites pas confiance à un référentiel arbitraire pour suivre une leçon. Le mode restreint désactive les opérations réseau et peut limiter les actions de l'arborescence de travail.

Vérifiez votre compréhension

Répondez à chaque question, puis lisez pourquoi. Les questions marquées « Obligatoire » comptent pour terminer la leçon.

  1. Question 1 de 6

    Le référentiel de cours existe déjà sur disque. Quelle action l'affiche sans le copier ?

    Choisissez une réponse.

  2. Question 2 de 6

    Quels choix préservent le point de contrôle d’origine prévu ?

    Choisissez chaque réponse qui s'applique.

  3. Question 3 de 6
    Obligatoire

    La référence symbolique imprime principale ; verify --quiet HEAD quitte 1 silencieusement après l'initialisation. Qu'est-ce que cela signifie?

    Choisissez une réponse.

  4. Question 4 de 6
    Obligatoire

    Dans une nouvelle initialisation distincte, choisissez trunk plutôt que main sans vous engager. Qu'imprime symbol-ref --short HEAD ?

    Choisissez une réponse.

  5. Question 5 de 6

    Le clonage de l'original vide réussit avec un avertissement de source vide. Quelles affirmations sont correctes ?

    Choisissez chaque réponse qui s'applique.

  6. Question 6 de 6
    Obligatoire

    revenez à l’original et inspectez uniquement les requêtes nommées. Quelles preuves doivent concorder ?

    Choisissez chaque réponse qui s'applique.

0 sur 6 corrects

Répondez correctement aux questions requises pour terminer la leçon.

Vérifié dans ce navigateur.

Pratique

Rouvrez l'original via Open Repository… ou en supprimant un dossier. Exécutez les trois requêtes d'état, vérifiez la validation HEAD manquante, les requêtes d'état/index/à distance vides et les deux valeurs d'identité locale. Expliquez pourquoi main est visible sans validation et pourquoi la copie supplémentaire, si elle est créée, a une origine mais pas l'original.

Changed-input prediction: si une nouvelle initialisation distincte utilise Initial branch = trunk, prédisez git symbolic-ref --short HEAD. Il imprime trunk ; cela ne crée toujours aucun commit. Cela a été vérifié dans un autre appareil natif isolé. Ne renommez pas la branche principale du cours continu pour effectuer la prédiction.

Votre propre confirmation : le site ne peut pas voir votre ordinateur.

Pour terminer la leçon, répondez correctement aux questions demandées et confirmez l'exercice pratique.

Récapitulatif

  • Init crée les métadonnées du référentiel ; clone crée une copie séparée ; open sélectionne les données existantes.
  • Un nouveau main peut ne pas naître : aucun premier commit n'est implicite.
  • Gardez l’identité locale et l’état du clone supplémentaire séparés des paramètres globaux et du projet canonique.

Termes du glossaire introduits

Initialiser — تهيئة; clone — استنساخ; référentiel — مستودع; branche — فرع; à distance — بعيد; arbre de travail — مجلد العمل; zone de transit — منطقة التجهيز. « Branche à naître » désigne un nom de branche sans premier commit ; HEAD et origin restent des identifiants littéraux.

Transcription vidéo

La narration de la vidéo, repère par repère.

Afficher la transcription
  1. Créez le référentiel de cours, puis Séparer le clonage de l'ouverture.
  2. Utiliser un dossier parent réservé à l'extérieur référentiels sources existants.
  3. Initialisez un nouvel historique, clonez-en un séparé référentiel, ou ouvrez-en un existant.
  4. Commencez à l'intérieur de GitTree sur l’écran Nouvel onglet.
  5. Choisissez Init. Revoir la boîte de dialogue avant de créer quoi que ce soit.
  6. Entrez le chemin complet vers le nouveau dossier gittree-features.
  7. Le sélecteur de dossier natif est un alternative ; revérifiez l’emplacement final.
  8. Choisissez plutôt main explicitement de s'appuyer sur un défaut de la machine.
  9. Gardez le mode nu désactivé car cela le projet a besoin de fichiers de travail.
  10. Refuser les deux modèles facultatifs pour préserver le point de contrôle vide.
  11. Garder ouvert après la création activé, puis examinez chaque choix.
  12. Initialisez une fois et attendez le résultat réel du référentiel.
  13. Si un avis de confiance apparaît, lisez le conclusions avant d’accorder la confiance.
  14. L'original existe, mais son premier commit ne le fait pas.
  15. HEAD peut nommer main avant main a un engagement à pointer.
  16. Ouvrez les préférences de ce référentiel page, pas la page Profils globale.
  17. Vérifiez la cible d'écriture avant taper l’identité fictive.
  18. Appliquer GitTree Démo comme ceci le nom du commit du référentiel.
  19. Appliquer l'e-mail fictif au même périmètre local.
  20. Enter peut également appliquer un champ. Quitter seulement après la réussite des deux écritures.
  21. Vérifiez que vous êtes à l'intérieur l'arbre de travail d'origine.
  22. La vérification du référentiel nu doit être fausse.
  23. La branche symbolique le chèque doit imprimer principal.
  24. Aucun commit n'est encore résolu. Silencieux la première sortie est attendue ici.
  25. Ces trois inspections ne devrait produire aucun résultat.
  26. Lire uniquement les deux identités locales valeurs, pas de paramètres globaux privés.
  27. Native Git peut également s'initialiser, mais ne le faites pas réinitialiser l'original créé par l'application.
  28. Copiez maintenant ce même référentiel vide dans un dossier local séparé.
  29. Ouvrez Clone et utilisez le chemin de l'URL plutôt qu'une liste de comptes de fournisseur.
  30. Utilisez une URL de fichier absolue pour le original, pas un chemin local brut.
  31. Nommez explicitement la destination et confirmez que ce n'est pas l'original.
  32. Conservez les valeurs par défaut de l'historique complet et laissez les options de clonage avancées désactivées.
  33. Exécutez le clone et laissez le la progression réelle se termine.
  34. Une source vide produit une copie sans commet; cela peut encore réussir.
  35. L'avertissement de référentiel vide n’est pas un échec en soi.
  36. La copie a une origine et un à naître principal, pas un pipeline hébergé.
  37. Le clonage n'a pas copié l'original paramètre de nom de validation local.
  38. L'origine appartient à la copie. Le L'original n'a pas gagné de télécommande.
  39. Ouvrez à nouveau l'original avant de poursuivre le cours.
  40. Supprimer le dossier existant est une autre façon de l'ouvrir, pas de le cloner.
  41. Vérifiez à nouveau l'original : pas de télécommande, aucun commit et l'identité de la démo locale.
  42. Une initialisation séparée avec trunk rapporte le tronc, toujours sans commit.
  43. Un refus de destination protège contenu existant. Choisissez un nouveau dossier.
  44. Si un clone échoue ou est annulé, lisez quel nettoyage a réellement été retenu.
  45. L'annulation et le reflog ne sont pas promis à une restauration pour les paramètres d’initialisation ou d’identité.
  46. Init crée des métadonnées, clone crée un copier et ouvrir sélectionne les données existantes.
  47. Vérifier l'état de l'original avant d'ajouter les premiers fichiers.
  48. Ensuite, créez le héros et faites le premier engagement délibéré.