GIT
Utilizaré este artículo para añadir los comandos más complicados de entender a la hora de utilizar el control de versiónes en GIT.
¿Qué se hacer?
- Instalar Git
- Configurar llaves ssh
- Añadir archivos al repositorio
- Realizar commit y cambios de ramas
¿Qué voy a aprender?
- Comprobar diferencias entre versiones del código.
- Volver a una versión anterior para reparar un problema en una versión actual.
- Modificar el comentario de un commit creado.
- Ver los archivos modificados desde el ultimo commit.
- Mergear ramas
- Entender el flujo de trabajo
- Solucionar problemas del trabajo diario.
Comandos:
git config --list: Para ver la configuración actual
git config -- list --show-origin: Para ver donde están las configuraciones guardadas
git diff hashreciente hashviejo: comparar entre versiones
git reset hashanterior --hard: vuelve al estado anterior de la versión.
git reset hashanterior --soft: borra los registros de git pero mantiene los cambios del staging.
git log --stat: muestra el log con los cambios por cada commit.
git checkout hash : se posición en la versión del commit que indiquemos con el hash. Esto nos puede servir para comprobar alguna versión anterior. Es como moverte por las versiones del archivo. Para volver al área de trabajo tendremos que volver a la rama o version que estábamos, en este caso seria master.
git rm fichero.txt: elimina el fichero de nuestro repositorio y del disco.
git commit -am "comentario" : realiza un add y commit de los archivos que ya he hecho antes add.
git merge cabecera: fusiono la rama cabecera con la rama en la que estoy posicionado.
Imagina que has modificado varios archivos de un repositorio, pero solo quieres hacer commit de un archivo.¿Como puedo hacer commit de un sólo fichero de mi repositorio?
git commit -m "Aquí tu mensaje del commit" archivo.txt
En caso de que hayamos añadido al staging con git add un archivo que aun no esta listo para subir, podemos volver atrás con:
git rm --cached nombrefichero.txt
o si queremos sacar del staging todos los archivos por que nos hemos equivocado haciendo un git add .
podemos utilizar git reset HEAD
.
Después usamos git add nombrefichero.txt y después realizamos el commit.
Índice de contenido
- GIT
- Traer cambios de un fork de otro proyecto
- Añadir un cambio posterior a un commit
- Flujo de trabajo
- Enlaces interesantes
Modificar el comentario del último commit
git commit --amend
Ver los cambios dese el ultimo commit
*git diff hashreciente hashviejo
Subir un proyecto local a github
git remote add origin urldegithub
Traemos el contenido remoto
git pull origin master --allow-unrelated-histories
Enviamos el contenido local al servido remoto
git push origin master
Ver el log de git de forma visual
git log --all --graph --decorate --oneline
Tags y versiones
Los tag se suelen utilizar para asignar versiones a nuestros estados de código.
Crear un nuevo tag y asignarlo a un commit
git tag -a nombre-del-tag id-del-commit
Borrar un tag en el repositorio local
git tag -d nombre-del-tag
Listar los tags de nuestro repositorio local
git tag o git show-ref --tags
Publicar un tag en el repositorio remoto
git push origin --tags
Borrar un tag del repositorio remoto
git tag -d nombre-del-tag y git push origin :refs/tags/nombre-del-tag
Traer cambios de un fork de otro proyecto
Añadimos una fuente nueva a un proyecto que hemos clonado
git remote add upstream enlacegithubproyecto
Nos traemos los cambios de master a upstream
git pull upstream master
Subimos el repositorio a GitHub
git push origin master
Subir los cambios al servidor remoto después de clonarlo
git push origin master
Utilizar rebase para incrustar una rama(experimento) en master
Nos posicionamos en la rama que queremos añadir(experimento).
git rebase master
luego nos posicionamos en la rama master
git rebase experimiento
Git stash
Sirve para guardar cambios en memoria y poder recuperarlos mas tarde, por ejemplo movernos entre ramas.
git stash
Para recuperar el estado
git stash pop
Para ver la lista de stash
git stash list
También podemos crear una nueva rama con el contenido del stash( esta rama se crea solo en local)
git stash branch nuevarama
Eliminar archivos añadidos al repositorio por error
Para ver que archivos va a borrar sin ejecutarlo
git clean --dry-run
Para ejecutar el comando es necesario usar -f
git clean -f
Traerme cambios de una rama nueva pero mas antigua que el head
Buscamos el hash del commit de la rama, nos posicionamos en la rama master y ejecutamos el comando.
git cherry-pick hash
Añadir un cambio posterior a un commit
Si queria modificar algo y hice comit antes de hacerlo, puedo agregar los cambios al ultimo commit con.
git commit --amend
Si hemos hecho cambios y se ha estropeado algo podemos recuperar todo a un estado anterior y eliminar toda la historia
git reset --hard hash
Añadir alias a los comandos de GIT
Añade el comando git stats y ejecuta "git shortlog -sn --all -no-merges"
git config --global alias.stats "shortlog -sn --all -no-merges"
Ver quien a hecho que
git blame archivo -c
Buscar en la ayuda de GIT
git comando --help
Ver las ramas remotas
git branch -r
Ver todas las ramas, locales y remotas
git branch -a
Flujo de trabajo
- Traerme los cambios al repositorio local
git pull origin master
- Realizar cambios, añadir y commit
git commit -am "Comentario"
- Enviar al servidor remoto
git push origin master