Todos alguna vez la hemos liado con Git, un commit mal hecho, un mensaje de commit con faltas de ortografía, o cualquier cosa peor. Aquí intento recoger algunos trucos sobre git. Los trucos los he sacado sobre todo de esta página http://boso.herokuapp.com/git, en la que se recopilan las mejores preguntas de StackOverFlow organizadas por temas.
¿Cómo reeditar un mensaje de commit en Git?
¿No os ha pasado nunca el hacer un commit con un comentario erróneo? Si a veces pasa, tienes ganas de subir los cambios y no te das cuenta de lo que estas escribiendo. Para volver atrás y reescribir el ultimo comentario tenemos:
git commit – amend –m “Este es el nuevo mensaje”
Debemos tener en cuenta que tenemos que estar posicionados en la rama donde queremos deshacer el commit, es decir, utilizamos este comando para modificar el commit de la hoja del árbol actual.
Es un equivalente a:
git reset –soft HEAD^ ….. hacer algo para llegar al árbol correcto…. git commit –c ORIG_HEAD
¿Cómo deshacer el último commit?
Hay veces que no nos damos cuenta y subimos los archivos que no son, hacemos un commit con los archivos incorrectos, o en el peor de los casos ese día estamos “espesos” y no acertamos con el commit. Así que para revertir/deshacer el último debemos hacer:
git commit …. (a) git reset –soft ^HEAD (b) editas (c) git add … (d) git commit –c ORIG_HEAD (e)
- (a) Es el commit que quieres deshacer
- (b) Lo normal, es que cuando te des cueta de que el commit está incompleto o errorneo. Es necesario dejar el árbol de trabajo como estaba, por eso hacemos un reset.
- (c) Hacemos los cambios que sean
- (d) Añadimos los cambios a stage.
- (e) Hacemos el commit desde un estado correcto y ya está.
¿Qué diferencia hay entre git pull y git fetch?
Si parece que son iguales, pero no. En versión resumida, git pull hace un git fecht y después un git merge.
Se puede hacer un git fecth en cualquier momento para actualizar nuestra copia local de una rama remota. Esta operación no cambia nunca de nuestras ramas y podemos estar seguros de que hacer un git fecth que no cambiaremos nada.
¿Cómo deshacer el add, si todavía no he hecho commit?
Cuando cometemos el error de añadir archivos que no son correcto, pero todavía no hemos hecho el commit podemos volver atrás sin problemas.
Imaginemos que hemos hecho algo así:
git add fichero
Pero todavía no hemos ejecutado el commit. Nos damos cuenta de que no queremos commitear fichero, ya que no es el archivo correcto. ¿Cómo volvemos atrás?
Podemos hacer esto:
git reset fichero
y estaremos salvados. Lo que hará este comando será eliminar el índice actual sin cambiar nada más.
Trabajando con dropbox y git
Hay una frase que se tiene que grabar a fuego y es “no commitear nada que no esté terminado” Entonces, si desarrollamos desde varios ordenadores como los hacemos.
Desarrollar desde varios PC pero sin estar todo el día commiteando puede ser sencillo y es fácil que nos equivoquemos. Una solución es utilizar Dropbox o similar.
Lo que podemos hacer es crear en Dropbox nuestro repositorio local, así siempre tendremos una copia de los ficheros con los que estamos trabajando. Es importante tener siempre actualizado Dropbox, sino esto no funcionará.
¿Qué diferencia hay entre un clone y un fork?
Básicamente cuando hacemos un clone del repositorio, nos bajamos una copia del mismo a la nuestra máquina. Empezamos a modificarlo y cuando hacemos un push estas modificando el proyecto original.
En cambio cuando hacer un fork de un repositorio, nos creamos un nuevo repositorio copia del original. Si lo hacemos con Github vemos que tienen URL’s diferentes (original y fork). Entonces lo que tenemos son básicamente 2 repositorios, en principio con el mismo contenido, pero los push sobre uno no afecta al otro.
Ramas, carpetas y viceversa
Si en el momento de crear una rama utilizamos como nombre una ruta, como por ejemplo “mi-directorio-de-ramas/nombre-de-rama”, veremos que en la carpeta .git/refs/heads de nuestro repositorio se creará una subcarpeta “mi-carpeta-de-ramas”. Dentro de la misma veremos el fichero “nombre-de-rama” con la referencia. Es decir, git convierte la cadena con formato de ruta que pasamos como argumento en una estructura real de carpetas.
Hola
Que diferencia encuentras entre la página de boso y la sección de tags del propio stackoverflow? Alguna ventaja?
Gracias
Me gustaMe gusta