--- title: GIT tags: apuntes description: Apuntes GIT. --- # GIT Git sirve para guardar el historial de versiones, y controlarlas, de esta manera no perdemos datos nunca. Tambien sirve para trabajar de manera sincronizada o paralela con otros desarrolladores en el mismo projecto. ## Instalación Para instalarlo en la terminal, podemos descargarlo de https://git-scm.com en caso de windows. En linux, con el comando `sudo apt install git` ## Usuario Para informar de quienes somos, para saber quien está haciendo los cambios. `git config --global user.name "Adrián García González"` `git config --global user.email "garcia.gonzalez.adrian204@gmail.com"` ## Iniciar repositorio en una carpeta Te colocas en la ruta deseada y usas el siguiente comando: `git init` Esto iniciará un repositorio vacio en la carpeta. :::warning Si te has equivocado de carpeta y queres borrar el repositorio, tienes que borrar la carpeta .git que se ha generado. Comando: `rm -rf .git` ::: ## Ignorar ciertos archivos Creamos el archivo `.gitingore`. Dentro ponemos el nombre del archivo, o wildcards separados por saltos de linea. `.gitignore` ``` noloincluyas.php *.txt directorioprivado/* ``` El `.gitignore` de arriba, evita que se suban esos archivos. ## Niveles Git trabaja en 3 niveles. * Working directory * Staging area * Repository ### Working Directory Es el repositorio en el que estás, trabajando actualmente. De aquí lo subes a la staging area, `git add archivo` . ### Staging area. Aquí se van subiendo cambios, como un buffer, y cuando hay suficientes cambios para generar una nueva versión, o cuando lo deseemos, lo subimos al repositorio como una versión nueva, `git commit`. ### Repository En el repositorio se encuentran todas las versiones commiteadas, y en teoria, funcionales. ## Comandos ### `git status` Te permite ver el estado de los ficheros cambiados. Que todavia hay que añadir y/o commitear. ### `git add archivo` Sube el archivo al staging area. #### `git add .` Sube todos los archivos al staging area. ### `git reset HEAD archivo` Para quitar un archivo del staging area, cancelar el `git add archivo`. :::info Puede que tengas que quitar el "HEAD". ::: #### `git reset HEAD .` Quita todos los archivos del staging area. ### `git rm --cached archivo` Para quitar un archivo del staging area, cancelar el `git add archivo`. :::danger También deja de trakearlo. ¿Puede ignorarlo incluso en el working directory? ::: ### `git commit` Para subir del staging area al repositorio. Para ahorrarte el editor, completa el comando, `git commit -m "Nuevo archivo hola.txt, te saluda!"`. #### `git commit --amend -m "new msg"` Si te habias olvidado de algun archivo, subelo al staging area, y luego ejecutas este comando para añadirlo al último commit. El mensaje reemplazara al del anterior commit. ### `git log` Lista todas las versiones del repositorio. #### `git log --stat` Añade datos a la lista. ### `git diff` Permite ver la diferencia entre repositorios. ### `git checkout archivo` Sirve para restaurar el archivo a la ultima versión del staging area o repositorio. ### `git reset hashcode` Te permite retroceder a una version en concreto, mediante el código hash de esa version/commit. ### `git reflog` Permite ver el historial de cambios incluyendo las restauraciones a otros commit. Y puedes restaurar commits que no están en el log normal. Solo puedes ver las de los últimos 30 dias, a los 30 dias caducan! ### `git branch` Te dice en que rama estás. #### `git branch nueva` Creas una rama nueva, a partir del último commit de la rama en la que estés. ### `git checkout rama` Te mueves a la rama especificada. ### `git merge nuevarama` Metes nuevarama en la rama que estés. Nomalmente, te metes a la master y ejecutas el comando a la rama que quieras para traerte los cambios. La nuevarama no se borra, tienes que borrarla manualmente si no le vas a dar uso una vez la mezcles. ### `git branch -d nuevarama` Borra la rama nuevarama. ### `git branch -m nuevonombre` Cambia el nombre de la rama actual a nuevonombre. ### `git branch -m viejonombre nuevonombre` Cambia el nombre de la rama viejonombre a nuevonombre. ### `git clone url` Te descarga el repositorio de la url dada, creando una carpeta con el nombre del repositorio en la carpeta actual. #### `git clone url .` Para descargar el contenido en la carpeta acutal (tiene que estar vacia) añadimos "." al final, separado por un espacio. ### `git remote add origin url` Añade un repositorio remoto, con el alias origin. ### `git push -u origin main` Sube los archivos locales de tu rama main a la rama main del repositorio remoto origin. #### `git push origin --force` Para forzar la subida, ignorando posibles daños. ### `git pull origin main` Para descargar la rama main del repositorio remoto origin.