SEMINARIO 1 CONTROL VERSIONES Flashcards
GIT
Sistema distribuido centralizado de control de versiones. Los clientes no sólo descargan la
última instantánea de los
archivos: replican completamente el repositorio, pudiendo así replicar el repositorio en caso de que el servidor falle. La gran mayoría de operaciones se hacen localmente. GIT hace una foto del aspecto de todos tus
archivos en el momento que confirmas alguna acción, y guarda una referencia a esa
instantánea.
Las tres secciones principales de un proyecto de Git
El directorio de Git es donde Git
almacena los metadatos y la base de datos de objetos para tu proyecto. Es lo que se copia cuando clonas un repositorio desde otro ordenador.
El directorio de trabajo es una copia de una versión del proyecto. Estos archivos se sacan de la base de datos comprimida en el directorio de Git, y se colocan en disco para que los puedas usar
o modificar.
El área de preparación es un sencillo archivo, generalmente contenido en tu directorio de Git, que almacena información acerca de lo que va a ir en tu próxima confirmación.
Los 3 estados de GIT
Modificado (modified) significa que has modificado el archivo pero
todavía no lo has confirmado a tu base de datos.
Preparado (staged) significa que has marcado un archivo modificado en su versión actual para que vaya en tu próxima confirmación.
Confirmado (committed) significa que los datos están almacenados de manera segura en tu base de datos local.
Clonar Repos
Cuando se clona un repositorio se descargan todos las confirmaciones (commits) y ramas del repositorio y se crea un
asociación entre el repositorio original y el clonado en tu
máquina local. Esta asociación se usa para interactuar con el repositorio existente recibiendo (pull) y enviando (push) cambios para compartir código con tu equipo.
Los dos estados de los archivos locales
Bajo seguimiento (tracked) son aquellos que existían en la última
instantánea; pueden estar sin modificaciones, modificados, o preparados. La primera vez que clonas un repositorio, todos tus archivos estarán bajo seguimiento y sin modificaciones, ya que los acabas de copiar y no has modificado nada. Sin seguimiento (untracked) son todos los demás cualquier archivo de tu directorio que no estuviese en tu última instantánea ni está en tu
área de preparación.
Qué hay en un commit
Una instantánea de los archivos guardados en el commit. Git captura instantáneamente el contenido de todos los archivos de su repositorio en el momento de la confirmación.Una referencia al commit (s) padre. Las confirmaciones (commits) que referencian a varios padres ocurren cuando se mezclan las ramas.Un mensaje corto y un puntero que describe los cambios en el commit. Éste mensaje es creado cuando realizas la confirmación (commit)
Comando PUSH
Comparte los cambios realizados en las confirmaciones y las
ramas con el comando push (insertar) para poder cargar sus
cambios en el repositorio remoto.Git se asegura de que los cambios enviados son consistentes.
Recuperar (fetch)
Descarga los cambios desde el repositorio
remoto pero no los aplica al código local.
Fusionar (merge)
Aplica los cambios recibidos mediante fetch a una rama de tu repositorio local.
Extraer (pull)
Descarga los cambios y los aplica a tu rama (fecht & merge)
Insertar (push)
Inserta los cambios locales en la rama remota.
Sincronizar
Descarga los cambios, los aplica en tu rama y los inserta en la rama remota (pull & push)
Deshacer cambios en tu repo local: deshacer y restablecer (undo y reset)
Para deshacer la modificación de un archivo, le damos a deshacer. Utilizamos restablecer (reset) para recuperar el contenido que tenía una rama en un commit previo de tu repositorio local. El uso más común del comando reset es descartar todos los ficheros cambiados desde el ultimo commit y devolver los ficheros al estado en que estaban en el commit más reciente.
Revertir cambios de commits compartidos
Utiliza revertir (revert) para deshacer los cambios hechos
en los commits enviados a ramas compartidas. El
comando revert crea un nuevo commit que deshace los
cambios del commit previo.
Rama GIT
En cada commit, Git almacena un punto de control que guarda un puntero a la copia puntual de los contenidos y uno o varios punteros a los commit que sean padres directos de ésta. Una rama Git es simplemente un puntero móvil apuntando a una de esas
confirmaciones. La rama por defecto es la máster, siempre apunta al último commit. Mediante el puntero HEAD, GIT añade los commits en la rama a la que apunte dicho puntero.