Saltar al contenido
GitTree

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.

Progreso guardado en este navegador.

La reproducción carga el vídeo de YouTube (modo de privacidad mejorada).

Narración en inglés · English and Arabic subtítulos

Abre la página del vídeoVer en YouTube

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 localesReferencias/configuración remotas
Inicializar original con principalNuevo árbol de trabajo ordinario; sin archivos de proyecto ni entradas indexadasHEAD simbólico nombra al principal no nacido; consejo sin compromisoNingún control remoto configurado
Guardar identidad de demostración localSin cambios en el contenido del archivo/índice/historialSin cambios de árbitroEscribe solo nombre de usuario/correo electrónico de usuario en la configuración del repositorio original
Clonar original en una carpeta separadaNuevo árbol de trabajo/índice vacío en la copiaAún no hay compromisosLa copia tiene el origen apuntando al original; todavía no existe ningún consejo de sucursal de seguimiento remoto
Reabrir originalSelecciona el original existente; sin duplicaciónSin creación de confirmación/referenciaEl 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.

  1. Elija New Tab (tab.new), Command+T/Ctrl+T. Espere las tarjetas Open, Clone y Init.
  2. 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.
  3. En Location, escriba la ruta completa a su nuevo directorio gittree-features bajo 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.
  4. Establezca Initial branch en main. Mantener Bare repository (history only, no working files) off.
  5. 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.
  6. 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.
  7. 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.
  8. Confirme que la pestaña sea la gittree-features original, 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

  1. Con el original activo, abre Preferences (app.preferences.open), Command+, / Ctrl+,.
  2. 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.
  3. Busque Name for commits (configurando repo.userName, respaldando la clave de Git user.name). Debajo de su Writes to, seleccione o verifique Local (this repository). No elijas Global (every repository).
  4. Ingrese GitTree Demo y elija la fila Apply. Alternativamente, presione Enter en ese campo. Espere Saved antes de continuar.
  5. Para Email for commits (repo.userEmail, respaldando user.email), verifique el mismo objetivo local, ingrese demo@example.com, luego Apply o Enter. Espere a que se guarde.
  6. 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:

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

Resultados de la consulta observados, en orden:

Salida
true
false
main

Demuestre que no existe ningún compromiso:

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

Observado: 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:

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

Cada 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:

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

Observado:

Salida
GitTree Demo
demo@example.com

No 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:

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

No 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:

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

Ambas 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

  1. Abra Nueva pestaña y luego Clone. Paleta alternativa: Clone Repository… (repo.clone). Espere Clone a repository.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Inspeccione el gráfico vacío de la copia y utilice las comprobaciones de terminal a continuación. Su origin pertenece a the copy, apuntando al original. Un origen configurado no es una sucursal de seguimiento remoto existente ni un proveedor alojado.
  7. Para regresar, elija Open en Nueva pestaña o Open Repository… (repo.open), Command+O / Ctrl+O, seleccione la carpeta gittree-features original 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.
  8. 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:

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

Aquí <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:

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

Ahora consulta la copia:

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

Los dos primeros resultados observados:

Salida
origin
main

La ú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.

  1. Pregunta 1 de 6

    El repositorio del curso ya existe en el disco. ¿Qué acción lo muestra sin copiarlo?

    Elija una respuesta.

  2. Pregunta 2 de 6

    ¿Qué opciones preservan el punto de control original previsto?

    Elija cada respuesta que corresponda.

  3. Pregunta 3 de 6
    Requerido

    La referencia simbólica imprime principal; verificar --quiet HEAD sale 1 silenciosamente después de la inicialización. ¿Qué significa eso?

    Elija una respuesta.

  4. Pregunta 4 de 6
    Requerido

    En una nueva inicialización separada, elija troncal en lugar de principal sin comprometerse. ¿Qué imprime simbólico-ref --short HEAD?

    Elija una respuesta.

  5. Pregunta 5 de 6

    La clonación del original vacío se realiza correctamente con una advertencia de fuente vacía. ¿Qué afirmaciones son correctas?

    Elija cada respuesta que corresponda.

  6. Pregunta 6 de 6
    Requerido

    regrese al original e inspeccione solo las consultas nombradas. ¿Qué pruebas deben concordar?

    Elija cada respuesta que corresponda.

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.

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
  1. Cree el repositorio del curso, luego Separe la clonación de la apertura.
  2. Utilice una carpeta principal reservada fuera repositorios de fuentes existentes.
  3. Inicializar nuevo historial, clonar uno separado repositorio o abrir uno existente.
  4. Comience dentro de GitTree en la pantalla Nueva pestaña.
  5. Elija Iniciar. Revisar el diálogo antes de crear nada.
  6. Ingrese la ruta completa al Nueva carpeta de características de gittree.
  7. El selector de carpeta nativa es un alternativa; Vuelva a verificar la ubicación final.
  8. Elija main explícitamente en su lugar de confiar en un valor predeterminado de la máquina.
  9. Mantenga el modo básico desactivado porque esto El proyecto necesita archivos de trabajo.
  10. Rechazar ambas plantillas opcionales para preservar el punto de control vacío.
  11. Mantener abierto después de crear habilitado, luego revise cada elección.
  12. Inicialice una vez y espere el resultado real del repositorio.
  13. Si aparece una revisión de confianza, lea el conclusiones antes de otorgar la confianza.
  14. El original existe, pero su primer compromiso no.
  15. HEAD puede nombrar main antes main tiene un compromiso que señalar.
  16. Abra las Preferencias de este repositorio página, no la página de perfiles globales.
  17. Verifique el objetivo de escritura antes escribiendo la identidad ficticia.
  18. Aplicar GitTree demostración como esta nombre de confirmación del repositorio.
  19. Aplicar el correo electrónico ficticio en el mismo ámbito local.
  20. Enter también puede aplicar un campo. Salir sólo después de que ambas escrituras tengan éxito.
  21. Comprueba que estás dentro el árbol de trabajo original.
  22. La verificación del repositorio básico debe ser falsa.
  23. La rama simbólica el cheque debe imprimirse principal.
  24. Ningún compromiso se resuelve todavía. silencioso Se espera la salida uno aquí.
  25. Estas tres inspecciones no debería producir ningún resultado.
  26. Leer solo las dos identidades locales. valores, no configuraciones globales privadas.
  27. Git nativo también puede inicializarse, pero no reinicialice el original creado por la aplicación.
  28. Ahora copia este mismo repositorio vacío. en una carpeta local separada.
  29. Abra Clonar y use la ruta URL en lugar de una lista de cuentas de proveedores.
  30. Utilice una URL de archivo absoluta para el original, no una ruta local sin formato.
  31. Nombra el destino explícitamente y confirma que no es el original.
  32. Mantenga los valores predeterminados del historial completo y deje desactivadas las opciones de clonación avanzadas.
  33. Ejecute el clon y deje que finalización del progreso real.
  34. Una fuente vacía produce una copia sin se compromete; eso todavía puede tener éxito.
  35. La advertencia de repositorio vacío no es un fracaso en sí mismo.
  36. La copia tiene origen y un no nacido. principal, no una canalización alojada.
  37. La clonación no copió el original. configuración de nombre de confirmación local.
  38. El origen pertenece a la copia. el El original no obtuvo un control remoto.
  39. Abre el original nuevamente. antes de continuar el curso.
  40. Dejar caer la carpeta existente es Otra forma de abrirlo, no clonarlo.
  41. Verifique el original nuevamente: sin control remoto, sin compromiso y la identidad de demostración local.
  42. Una inicialización separada con troncal. informes tronco, todavía sin un compromiso.
  43. Un rechazo de destino protege contenido existente. Elija una nueva carpeta.
  44. Si un clon falla o se cancela, lea lo que la limpieza realmente retuvo.
  45. No se promete deshacer y volver a iniciar sesión para inicialización o configuración de identidad.
  46. Init crea metadatos, clone crea un copiar y abrir selecciona los datos existentes.
  47. Verificar el estado del original antes de agregar los primeros archivos.
  48. A continuación, crea el héroe y haz el primer compromiso deliberado.