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.
- Niveau: Débutant
- 16 minutes de lecture
- 6 minutes de vidéo
- Mis à jour
- Avant cette leçon: Installez Git et prévisualisez une identité de validation sécurisée, Prédisez ce que contiendra votre prochain commit
Progression enregistrée dans ce navigateur.
La lecture charge la vidéo depuis YouTube (mode de confidentialité amélioré).
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çon | Arbre/index de travail | Référents locaux | Références/configuration distantes |
|---|---|---|---|
| Initialiser l'original avec principal | Nouvel arbre de travail ordinaire ; pas de fichiers de projet ni d'entrées indexées | La HEAD symbolique nomme le principal à naître ; pas de conseil de validation | Aucune télécommande configurée |
| Enregistrer l'identité de la démo locale | Aucune modification du contenu du fichier/index/historique | Aucun 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 copie | Toujours aucun commit | La copie a une origine pointant vers l'original ; aucune astuce de branchement de suivi à distance n'existe pour l'instant |
| Rouvrir l'original | Sélectionne l'original existant ; pas de double emploi | Aucune création de commit/ref | L'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.
- Choisissez New Tab (
tab.new), Command+T / Ctrl+T. Attendez-vous aux cartes Open, Clone et Init. - 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. - Dans Location, saisissez le chemin complet de votre nouveau répertoire
gittree-featuressous 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. - Définissez Initial branch sur
main. Gardez Bare repository (history only, no working files) off. - 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.
- 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.
- 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.
- 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
- Avec l'original actif, ouvrez Preferences (
app.preferences.open), Command+, / Ctrl+,. - 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.
- Recherchez Name for commits (paramètre
repo.userName, sauvegarde de la clé Gituser.name). Sous son Writes to, sélectionnez ou vérifiez Local (this repository). Ne choisissez pas Global (every repository). - Saisissez
GitTree Demoet choisissez le Apply de la ligne. Vous pouvez également appuyer sur Enter dans ce champ. Attendez Saved avant de continuer. - Pour Email for commits (
repo.userEmail, supportantuser.email), vérifiez la même cible locale, saisissezdemo@example.com, puis Apply ou Entrée. Attendez Enregistré. - 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 :
cd "<course-parent>/gittree-features"
git rev-parse --is-inside-work-tree
git rev-parse --is-bare-repository
git symbolic-ref --short HEADRésultats de requête observés, dans l'ordre :
true
false
mainProuver qu'aucun commit n'existe :
git rev-parse --verify --quiet HEADObservé : 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 :
git status --short
git ls-files
git remoteChaque 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 :
git config --local --get user.name
git config --local --get user.emailObservé :
GitTree Demo
demo@example.comAucun 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 :
cd "<course-parent>"
git init --quiet --initial-branch=main --template= gittree-featuresIl 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 :
cd "<course-parent>/gittree-features"
git config --local user.name "GitTree Demo"
git config --local user.email demo@example.comLes 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
- Ouvrez un nouvel onglet, puis Clone. Palette alternative : Clone Repository… (
repo.clone). Attendez-vous à Clone a repository. - 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. - 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. - 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é.
- 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.
- Inspectez le graphique vide de la copie et utilisez les vérifications de terminal ci-dessous. Son
originappartient à the copy, pointant vers l'original. Une origine configurée n’est pas une branche de suivi à distance existante ni un fournisseur hébergé. - Pour revenir, choisissez Open dans Nouvel onglet ou Open Repository… (
repo.open), Command+O/Ctrl+O, sélectionnez le dossiergittree-featuresd'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. - 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 :
git clone --quiet "file://<absolute-source-path>" gittree-features-copyIci, <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 :
warning: You appear to have cloned an empty repository.Maintenant, interrogez la copie :
cd "<course-parent>/gittree-features-copy"
git remote
git symbolic-ref --short HEAD
git config --local --get user.nameDeux premiers résultats observés :
origin
mainLa 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.
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.
En rapport
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
- Créez le référentiel de cours, puis Séparer le clonage de l'ouverture.
- Utiliser un dossier parent réservé à l'extérieur référentiels sources existants.
- Initialisez un nouvel historique, clonez-en un séparé référentiel, ou ouvrez-en un existant.
- Commencez à l'intérieur de GitTree sur l’écran Nouvel onglet.
- Choisissez Init. Revoir la boîte de dialogue avant de créer quoi que ce soit.
- Entrez le chemin complet vers le nouveau dossier gittree-features.
- Le sélecteur de dossier natif est un alternative ; revérifiez l’emplacement final.
- Choisissez plutôt main explicitement de s'appuyer sur un défaut de la machine.
- Gardez le mode nu désactivé car cela le projet a besoin de fichiers de travail.
- Refuser les deux modèles facultatifs pour préserver le point de contrôle vide.
- Garder ouvert après la création activé, puis examinez chaque choix.
- Initialisez une fois et attendez le résultat réel du référentiel.
- Si un avis de confiance apparaît, lisez le conclusions avant d’accorder la confiance.
- L'original existe, mais son premier commit ne le fait pas.
- HEAD peut nommer main avant main a un engagement à pointer.
- Ouvrez les préférences de ce référentiel page, pas la page Profils globale.
- Vérifiez la cible d'écriture avant taper l’identité fictive.
- Appliquer GitTree Démo comme ceci le nom du commit du référentiel.
- Appliquer l'e-mail fictif au même périmètre local.
- Enter peut également appliquer un champ. Quitter seulement après la réussite des deux écritures.
- Vérifiez que vous êtes à l'intérieur l'arbre de travail d'origine.
- La vérification du référentiel nu doit être fausse.
- La branche symbolique le chèque doit imprimer principal.
- Aucun commit n'est encore résolu. Silencieux la première sortie est attendue ici.
- Ces trois inspections ne devrait produire aucun résultat.
- Lire uniquement les deux identités locales valeurs, pas de paramètres globaux privés.
- Native Git peut également s'initialiser, mais ne le faites pas réinitialiser l'original créé par l'application.
- Copiez maintenant ce même référentiel vide dans un dossier local séparé.
- Ouvrez Clone et utilisez le chemin de l'URL plutôt qu'une liste de comptes de fournisseur.
- Utilisez une URL de fichier absolue pour le original, pas un chemin local brut.
- Nommez explicitement la destination et confirmez que ce n'est pas l'original.
- Conservez les valeurs par défaut de l'historique complet et laissez les options de clonage avancées désactivées.
- Exécutez le clone et laissez le la progression réelle se termine.
- Une source vide produit une copie sans commet; cela peut encore réussir.
- L'avertissement de référentiel vide n’est pas un échec en soi.
- La copie a une origine et un à naître principal, pas un pipeline hébergé.
- Le clonage n'a pas copié l'original paramètre de nom de validation local.
- L'origine appartient à la copie. Le L'original n'a pas gagné de télécommande.
- Ouvrez à nouveau l'original avant de poursuivre le cours.
- Supprimer le dossier existant est une autre façon de l'ouvrir, pas de le cloner.
- Vérifiez à nouveau l'original : pas de télécommande, aucun commit et l'identité de la démo locale.
- Une initialisation séparée avec trunk rapporte le tronc, toujours sans commit.
- Un refus de destination protège contenu existant. Choisissez un nouveau dossier.
- Si un clone échoue ou est annulé, lisez quel nettoyage a réellement été retenu.
- L'annulation et le reflog ne sont pas promis à une restauration pour les paramètres d’initialisation ou d’identité.
- Init crée des métadonnées, clone crée un copier et ouvrir sélectionne les données existantes.
- Vérifier l'état de l'original avant d'ajouter les premiers fichiers.
- Ensuite, créez le héros et faites le premier engagement délibéré.