Lección 4 · Cimentaciones
Cree su repositorio de cursos, luego distinga clonar y abrir
Cree funciones GitTree desde la pantalla Nueva pestaña de GitTree y verifique que aún no tenga confirmaciones. Luego haga un clon local separado para ver por qué abrir una carpeta, inicializar el historial y copiar un repositorio son acciones diferentes.
- Nivel: principiante
- 16 minutos de lectura
- 6 minutos de vídeo
- Actualizado
- Antes de esta lección: Instale Git y obtenga una vista previa de una identidad de confirmación segura, Predice lo que contendrá tu próxima confirmación
Progreso guardado en este navegador.
La reproducción carga el vídeo de YouTube (modo de privacidad mejorada).
lo que aprenderás
- Inicialice el primer repositorio de cursos dentro de GitTree con un nombre de rama explícito.
- Reconocer una rama no nacida sin inventar una primera confirmación.
- Guarde la identidad ficticia únicamente en el repositorio del curso.
- Clona el mismo repositorio vacío en una carpeta separada y verifica su origen.
- Vuelva a abrir el original sin crear ni copiar otro repositorio.
Antes de empezar
Comience donde terminan las lecciones 2 y 3: Git está disponible y no existe ningún repositorio de cursos. Vista previa de la lección 2 GitTree Demostración; no guardó la configuración global. Necesita una carpeta principal existente en la que se pueda escribir reservada para el trabajo del curso. El elemento secundario gittree-features debe ser nuevo o estar vacío, fuera de los controles de origen existentes. No inicialice dentro de este repositorio web o de un proyecto personal.
Utilice Git que cumpla con el GitTree mínimo 2.39.0 inspeccionado. Los comandos y las pantallas del vídeo se grabaron con Git 2.52.0 y GitTree 2.0 en Ubuntu 24.04, en una carpeta de inicio privada, y las comprobaciones de este artículo se compararon con los repositorios que creó la grabación. No se ejecutaron en macOS ni en Windows. Los atajos predeterminados usan Comando en macOS y Ctrl en Windows y Linux; el selector de carpeta nativo se ve diferente en cada sistema y no fue filmado.
Una vez que haya iniciado sesión en GitTree, estos flujos de trabajo locales no necesitan integración de proveedor, Pro o prueba: el plan gratuito los cubre. El clon utiliza una URL file:// en la misma máquina, no GitLab alojada ni credenciales de Claude.
Concepto
Init crea metadatos del repositorio Git para un directorio elegido. No crea una confirmación simplemente porque hay un nombre de rama presente. Un nuevo repositorio ordinario tiene un directorio de árbol de trabajo y un índice inicialmente vacío. HEAD puede nombrar simbólicamente refs/heads/main antes de que esa rama tenga algún compromiso para apuntar: un unborn branch.
Clone crea un repositorio diferente a partir de una fuente. Normalmente copia el historial accesible y verifica la rama fuente seleccionada, mientras graba un control remoto llamado origin. Aquí la fuente está deliberadamente vacía, por lo que no hay historial ni contenido de trabajo para copiar. Ese es un caso límite válido, no una carga fallida.
Open selecciona un repositorio existente para inspección en GitTree. Abrir una pestaña no es clonar sus archivos, crear una confirmación o agregar un servicio de alojamiento. La aplicación puede actualizar su estado reciente/espacio de trabajo y realizar comprobaciones de confianza por separado.
Los tres verbos son como crear un cuaderno nuevo, hacer una copia separada y colocar un cuaderno existente en su escritorio. No extienda la analogía a los permisos: la configuración o los enlaces de un repositorio pueden ejecutar programas, por lo que GitTree revisa su confianza en lugar de tratar "abierto" como un permiso de ejecución incondicional.
| Acción en esta lección | Árbol/índice de trabajo | Árbitros locales | Referencias/configuración remotas |
|---|---|---|---|
| Inicializar original con principal | Nuevo árbol de trabajo ordinario; sin archivos de proyecto ni entradas indexadas | HEAD simbólico nombra al principal no nacido; consejo sin compromiso | Ningún control remoto configurado |
| Guardar identidad de demostración local | Sin cambios en el contenido del archivo/índice/historial | Sin cambios de árbitro | Escribe solo nombre de usuario/correo electrónico de usuario en la configuración del repositorio original |
| Clonar original en una carpeta separada | Nuevo árbol de trabajo/índice vacío en la copia | Aún no hay compromisos | La copia tiene el origen apuntando al original; todavía no existe ningún consejo de sucursal de seguimiento remoto |
| Reabrir original | Selecciona el original existente; sin duplicación | Sin creación de confirmación/referencia | El original permanece sin control remoto. |
Un repositorio simple es un almacenamiento de historial sin archivos de trabajo comunes. Es útil en ejercicios de servidor posteriores, pero es la elección incorrecta para crear esta página de destino. Las plantillas opcionales .gitignore/licence crearían archivos no confirmados; rechazarlos para preservar este punto de control.
Para conocer la semántica nativa, consulte git-init y git-clone. Las comprobaciones de vacío/nuevo destino de la aplicación son más estrictas que la capacidad del Git nativo para reinicializar un repositorio existente. No utilice el terminal para evadir el rechazo de una aplicación sin comprender lo que protege.
En GitTree: la primera inicialización canónica
Los actual current-source labels son la tarjeta Nueva pestaña Init, el cuadro de diálogo Initialize a repository, envían Initialize. "Iniciar un repositorio" en el plan anterior era descriptivo, no el texto del botón actual.
- Elija New Tab (
tab.new), Command+T/Ctrl+T. Espere las tarjetas Open, Clone y Init. - Haga clic en Init. Espere Initialize a repository, sin cambios guardados antes del envío. Alternativa: Command Palette… con Command+Shift+P / Ctrl+Shift+P → Initialize Repository… (
repo.init). No se afirma ningún atajo predeterminado directo para Init. - En Location, escriba la ruta completa a su nuevo directorio
gittree-featuresbajo el padre existente reservado. Puedes usar Browse…, luego el selector nativo Choose where to create the repository; Los botones de selección del sistema operativo nativo no se inventaron aquí. Vuelva a verificar la ubicación completa final después de navegar. - Establezca Initial branch en
main. Mantener Bare repository (history only, no working files) off. - Establezca .gitignore template y Licence en None cuando se carguen esos controles de plantilla. Sus valores predeterminados no son la selección; Si los controles están ausentes, no agregue archivos silenciosamente en otro lugar. Mantener Open after creating on.
- Revisar Ubicación, principal, desnudo, plantillas Ninguna y abrir después activado. Elija Initialize una vez. Espere que se cree y abra el repositorio, posiblemente a través del flujo de trabajo de confianza normal. No presione repetidamente mientras esté pendiente.
- Si aparece Trust this repository?, revise su ruta real y sus hallazgos. Cancel lo deja sin abrir; Open in Restricted Mode limita las operaciones; Trust and Open permite configuraciones/enganches normales del repositorio. Para este entorno limitado de creación propia, elija Confiar y Abrir solo después de comprender los hallazgos. En la grabación, no apareció ningún mensaje de confianza para la nueva carpeta; No espere que todos los repositorios nuevos muestren este cuadro de diálogo.
- Confirme que la pestaña sea la
gittree-featuresoriginal, no la principal ni una copia con un nombre similar. Su gráfico aún no tiene compromiso. No cree una confirmación de "limpieza" inicial para eliminar el estado vacío.
Guarde la identidad ficticia local del repositorio
- Con el original activo, abre Preferences (
app.preferences.open), Command+, / Ctrl+,. - En la sección de navegación específica del repositorio, elija gittree-features. Ese es el nombre del repositorio dinámico, no una página de perfiles globales. En anchos estrechos, la etiqueta del selector de página es Repo-Specific: gittree-features.
- Busque Name for commits (configurando
repo.userName, respaldando la clave de Gituser.name). Debajo de su Writes to, seleccione o verifique Local (this repository). No elijas Global (every repository). - Ingrese
GitTree Demoy elija la fila Apply. Alternativamente, presione Enter en ese campo. Espere Saved antes de continuar. - Para Email for commits (
repo.userEmail, respaldandouser.email), verifique el mismo objetivo local, ingresedemo@example.com, luego Apply o Enter. Espere a que se guarde. - Elija Exit Preferences. Espere que el repositorio original siga activo y su historial aún esté vacío. La configuración local cambió, no los archivos de trabajo ni el gráfico.
Solo escribir deja un borrador. Escape en un campo sucio cancela ese borrador primero; no es un atajo garantizado de “dejarlo todo”. El objetivo explícito Aplicar/local es la razón por la que este paso difiere de la vista previa cancelada de la lección 2.
En la terminal: verifique el resultado de la aplicación
Reemplace <course-parent> con su propia ruta principal reservada, manteniendo las rutas entre comillas. Ejecútelos después de la inicialización de la aplicación, no en el proceso de pago web:
cd "<course-parent>/gittree-features"
git rev-parse --is-inside-work-tree
git rev-parse --is-bare-repository
git symbolic-ref --short HEADResultados de la consulta observados, en orden:
true
false
mainDemuestre que no existe ningún compromiso:
git rev-parse --verify --quiet HEADObservado: no stdout or stderr; exit status 1. Ése es el resultado esperado de la rama no nacida, no un diagnóstico de corrupción. CABEZA simbólica y verificación de revisión responden preguntas diferentes.
Inspeccionar archivos, índices y nombres remotos:
git status --short
git ls-files
git remoteCada comando produjo no output and exited 0 en el dispositivo. Estas consultas por sí solas no prueban que todos los archivos ignorados estén ausentes. En su administrador de archivos, inspeccione la carpeta reservada con elementos ocultos visibles: debe contener metadatos del repositorio .git, pero aún no hay archivos de proyecto. No edites nada dentro de .git.
Lea solo los dos campos de identidad local explícitos:
git config --local --get user.name
git config --local --get user.emailObservado:
GitTree Demo
demo@example.comNo se necesita ningún volcado de configuración personal/global.
Alternativa de inicialización nativa: no es un segundo inicio canónico
El equivalente nativo de separate disposable comparison copy, o alguien que estudia Git sin la aplicación, es:
cd "<course-parent>"
git init --quiet --initial-branch=main --template= gittree-featuresNo imprimió ninguna salida y salió 0 en el dispositivo aislado. Do not rerun it on the original already created in GitTree. La opción de plantilla nativa vacía controla el directorio de plantillas de Git; no es el selector .gitignore/licence opcional de la aplicación. En una máquina normal, las plantillas/configuraciones heredadas aún deben revisarse.
Si configura la identidad mediante la ruta nativa en lugar de la fila de la aplicación, primero seleccione el nuevo repositorio y escriba deliberadamente solo la configuración local:
cd "<course-parent>/gittree-features"
git config --local user.name "GitTree Demo"
git config --local user.email demo@example.comAmbas escrituras fueron operaciones silenciosas exitosas en la copia de verificación aislada. Son alternativas a las escrituras de la aplicación, no una excusa para omitir la verificación de la toma de la aplicación.
Clonar una copia local separada
Este pequeño ejercicio paralelo utiliza el mismo proyecto, no una segunda aplicación de demostración. El original stays the course checkpoint y debe estar activo nuevamente antes de la lección 5. No es un control remoto agregado al original.
En GitTree
- Abra Nueva pestaña y luego Clone. Paleta alternativa: Clone Repository… (
repo.clone). Espere Clone a repository. - Elija Clone with URL. En Repository URL, ingrese la URL local absoluta del original, por ejemplo
file:///absolute/course-parent/gittree-features, reemplazando ese ejemplo con su ruta reservada real. El analizador de URL de la aplicación acepta URL de archivos absolutos; una ruta local sin formato no es su entrada admitida. Utilice un camino sencillo y sin espacios para este primer ejercicio; La codificación de URL y la sintaxis de la unidad Windows necesitan una nueva verificación de su propia plataforma. - En Parent folder, elija el mismo curso principal existente. En Folder name, ingrese explícitamente
gittree-features-copy. Marque Clones into puntos a la copia, not the original. - Deje Depth vacío para ver el historial completo; mantenga Also clone submodules, Sparse checkout: only the top-level files at first, then the folders you choose y Download file contents only when they are needed (blobless) apagados. Mantenga Open after cloning activado.
- Elija Clone una vez. Espere un progreso real de la clonación o una finalización rápida para esta fuente local vacía, luego la copia se abre a través de cualquier revisión de confianza requerida. No insistas en que cada fase de progreso sea visible para una operación tan pequeña.
- Inspeccione el gráfico vacío de la copia y utilice las comprobaciones de terminal a continuación. Su
originpertenece a the copy, apuntando al original. Un origen configurado no es una sucursal de seguimiento remoto existente ni un proveedor alojado. - Para regresar, elija Open en Nueva pestaña o Open Repository… (
repo.open), Command+O / Ctrl+O, seleccione la carpetagittree-featuresoriginal y revise cualquier mensaje de confianza requerido. En cambio, la grabación utilizó el botón Open en la fila del original en Recent en Nueva pestaña, que lo abrió de la misma manera; El selector de sistema no fue filmado. Alternativamente, suelte esa carpeta original en la superficie de colocación de carpetas de Nueva pestaña (no filmada). Espere el original seleccionado/abierto; No prometa si la compilación actual reutiliza una pestaña o crea otra. - Mantenga intacta la copia complementaria. No es necesario eliminarlo para continuar. Confirme que el original aún no tiene control remoto ni la identidad de demostración local antes de la lección 5.
Comparación nativa y resultado.
Del padre reservado, en un separate take where the destination does not exist:
git clone --quiet "file://<absolute-source-path>" gittree-features-copyAquí <absolute-source-path> comienza con / en la grabación macOS, formando una URL con tres barras después de file:. Reemplace el marcador de posición; no escriba los corchetes angulares. Lo exacto observado stderr, a pesar de una salida exitosa 0:
warning: You appear to have cloned an empty repository.Ahora consulta la copia:
cd "<course-parent>/gittree-features-copy"
git remote
git symbolic-ref --short HEAD
git config --local --get user.nameLos dos primeros resultados observados:
origin
mainLa última consulta no imprime nada y sale de 1: la clonación no copió la configuración local user.name del original. Una configuración global externa aún puede proporcionar una identidad efectiva en su máquina real; la consulta local responde deliberadamente solo lo que contiene este clon. No lea todas las configuraciones globales en la cámara. No nos comprometemos dentro de la copia.
Resultado
Al final de esta lección, el original es un repositorio normal con un archivo principal simbólico no nacido, sin confirmación, sin archivos de proyecto, un índice lógico vacío, sin identidad remota y local GitTree Demo / demo@example.com. El clon suplementario opcional tiene origen pero no historia; está fuera del punto de control del proyecto continuo.
El gráfico permanece vacío por diseño. La lección 5 crea README.md e index.html y realiza la primera confirmación deliberada.
Errores comunes
- Choosing the parent instead of the new child: verifica la ubicación y la pestaña activa antes de escribir cualquier configuración.
- Choosing bare mode: un repositorio básico no proporciona los archivos de trabajo habituales de la página de destino.
- Adding templates: introducen archivos sin seguimiento que no pertenecen a este punto de control vacío.
- Treating unborn HEAD as corrupt: main simbólico sin una confirmación es normal inmediatamente después del inicio.
- El destino Cloning onto the original: debe ser una carpeta nueva/vacía independiente.
- Assuming clone copies local identity: copia el historial del repositorio, no el nombre.de.usuario/correo.email local del original.
- Continuing in the copy: su origen hace que su estado sea diferente al original canónico.
Si algo sale mal
Un rechazo de destino no vacío significa que GitTree protegió una carpeta existente. Elija un nuevo niño vacío; no borre su contenido para silenciar el error. "La carpeta que debería contenerlo no existe" significa que debe crear/seleccionar el padre reservado deliberadamente antes de volver a intentarlo.
Si ya existe un repositorio, open it e inspeccionarlo; no lo reinicialice para que el curso parezca nuevo. Si se trata de un trabajo no relacionado, déjelo sin cambios y elija una carpeta de curso separada.
Si la clonación falla, lea el error real y el resultado de la limpieza. GitTree distingue una carpeta propiedad de un clon eliminada, una carpeta preexistente conservada, contenido adicional inesperado y un error de limpieza. Cancel Clone solicita la cancelación; no es evidencia de que todos los bytes desaparecieran. Inspeccione el contenido retenido antes de eliminar cualquier cosa. La advertencia de fuente vacía por sí sola no es un fracaso.
Si los hallazgos de confianza no le resultan familiares, elija Cancelar o modo restringido. No confíe plenamente en un repositorio arbitrario para completar una lección. El modo restringido desactiva las operaciones de red y puede limitar las acciones del árbol de trabajo.
Comprueba tu comprensión
Responda cada pregunta y luego lea por qué. Las preguntas marcadas como "Obligatorias" cuentan para completar la lección.
0 de 6 correcto
Responda correctamente las preguntas requeridas para completar la lección.
Comprobado en este navegador.
Practica
Vuelva a abrir el original a través de Open Repository… o de la carpeta desplegable. Ejecute las tres consultas de estado, verifique la confirmación HEAD faltante, las consultas de estado/índice/remotas vacías y los dos valores de identidad locales. Explique por qué main es visible sin una confirmación y por qué la copia complementaria, si se crea, tiene origen pero el original no.
Changed-input prediction: si una nueva inicialización separada usa Initial branch = trunk, predice git symbolic-ref --short HEAD. Imprime trunk; todavía no crea ningún compromiso. Esto se comprobó en otro dispositivo nativo aislado. No cambie el nombre de la rama principal del curso continuo para realizar la predicción.
Su propia confirmación: el sitio no puede ver su computadora.
Para completar la lección, responde correctamente a las preguntas requeridas y confirma el ejercicio práctico.
Resumen
- Init crea metadatos del repositorio; clonar crea una copia separada; open selecciona datos existentes.
- Un nuevo main puede no nacer: no se implica ningún primer compromiso.
- Mantenga la identidad local y el estado de clon complementario separados de la configuración global y del proyecto canónico.
Relacionado
Términos del glosario introducidos
Inicializar — تهيئة; clonar—استنساخ; repositorio — مستودع; rama—فرع; remoto—بعيد; árbol de trabajo — مجلد العمل; área de preparación — منطقة التجهيز. “Rama no nacida” significa un nombre de rama sin una primera confirmación; HEAD y origen siguen siendo identificadores literales.
Transcripción del vídeo
La narración del vídeo, cue a cue.
Mostrar la transcripción
- Cree el repositorio del curso, luego Separe la clonación de la apertura.
- Utilice una carpeta principal reservada fuera repositorios de fuentes existentes.
- Inicializar nuevo historial, clonar uno separado repositorio o abrir uno existente.
- Comience dentro de GitTree en la pantalla Nueva pestaña.
- Elija Iniciar. Revisar el diálogo antes de crear nada.
- Ingrese la ruta completa al Nueva carpeta de características de gittree.
- El selector de carpeta nativa es un alternativa; Vuelva a verificar la ubicación final.
- Elija main explícitamente en su lugar de confiar en un valor predeterminado de la máquina.
- Mantenga el modo básico desactivado porque esto El proyecto necesita archivos de trabajo.
- Rechazar ambas plantillas opcionales para preservar el punto de control vacío.
- Mantener abierto después de crear habilitado, luego revise cada elección.
- Inicialice una vez y espere el resultado real del repositorio.
- Si aparece una revisión de confianza, lea el conclusiones antes de otorgar la confianza.
- El original existe, pero su primer compromiso no.
- HEAD puede nombrar main antes main tiene un compromiso que señalar.
- Abra las Preferencias de este repositorio página, no la página de perfiles globales.
- Verifique el objetivo de escritura antes escribiendo la identidad ficticia.
- Aplicar GitTree demostración como esta nombre de confirmación del repositorio.
- Aplicar el correo electrónico ficticio en el mismo ámbito local.
- Enter también puede aplicar un campo. Salir sólo después de que ambas escrituras tengan éxito.
- Comprueba que estás dentro el árbol de trabajo original.
- La verificación del repositorio básico debe ser falsa.
- La rama simbólica el cheque debe imprimirse principal.
- Ningún compromiso se resuelve todavía. silencioso Se espera la salida uno aquí.
- Estas tres inspecciones no debería producir ningún resultado.
- Leer solo las dos identidades locales. valores, no configuraciones globales privadas.
- Git nativo también puede inicializarse, pero no reinicialice el original creado por la aplicación.
- Ahora copia este mismo repositorio vacío. en una carpeta local separada.
- Abra Clonar y use la ruta URL en lugar de una lista de cuentas de proveedores.
- Utilice una URL de archivo absoluta para el original, no una ruta local sin formato.
- Nombra el destino explícitamente y confirma que no es el original.
- Mantenga los valores predeterminados del historial completo y deje desactivadas las opciones de clonación avanzadas.
- Ejecute el clon y deje que finalización del progreso real.
- Una fuente vacía produce una copia sin se compromete; eso todavía puede tener éxito.
- La advertencia de repositorio vacío no es un fracaso en sí mismo.
- La copia tiene origen y un no nacido. principal, no una canalización alojada.
- La clonación no copió el original. configuración de nombre de confirmación local.
- El origen pertenece a la copia. el El original no obtuvo un control remoto.
- Abre el original nuevamente. antes de continuar el curso.
- Dejar caer la carpeta existente es Otra forma de abrirlo, no clonarlo.
- Verifique el original nuevamente: sin control remoto, sin compromiso y la identidad de demostración local.
- Una inicialización separada con troncal. informes tronco, todavía sin un compromiso.
- Un rechazo de destino protege contenido existente. Elija una nueva carpeta.
- Si un clon falla o se cancela, lea lo que la limpieza realmente retuvo.
- No se promete deshacer y volver a iniciar sesión para inicialización o configuración de identidad.
- Init crea metadatos, clone crea un copiar y abrir selecciona los datos existentes.
- Verificar el estado del original antes de agregar los primeros archivos.
- A continuación, crea el héroe y haz el primer compromiso deliberado.