Apuntes de comandos de GIT para trabajo en equipos remotos

Autores: B. Agustín Amenábar L. – @baamenabar & Nikolas Peralta Rumié – @nikoskip

Somos 2 personas trabajando en el código de múltiples sitios y proyectos; uno está viendo backend y el otro frontend —Aunque nos mezclamos bastante las tareas. Aquí voy poniendo apuntes de los típicos comandos que usamos mientras trabajamos usando GIT.

Actualizar mi branch con lo que hay en el master git merge master .

Una vez agregado SASS, si quiero evitar que .sass-cache quede versionado


git rm -r -f wp-content/themes/nombredeltheme/.sass-cache --cached

Lo de arriba significa:


git remueve recursivamente fuerza la_carpeta_y_contenidos --pero dejando una copia en el disco.

Nueva branch

Lo hacemos en Github y luego localmente sólo hacemos git fetch o git pull

O podemos hacer git checkout -b nueva-rama y se hace un push con git push origin nuvea-rama

Borrando un branch

Localmente: git branch -D nombre_del_branch

Remoto: git push origin --delete nombre_del_branch

Cancelando un merge

Si la versión de git es mayor o igual a 1.7.4 se puede hacer git merge --abort

Hacer un merge sólo un archivo

A veces tienes un archivo en un branch que necesitas actualizar en otro branch, por ejemplo.

En el branch nuevo_catalogo tienes un archivo credenciales-db.inc con credenciales a una nueva base de datos y necesitas actualizar esas credenciales en master, entonces los comandos serían los siguientes:


git checkout master
git checkout --patch nuevo_catalogo credenciales-db.inc

El primero es para ir al branch en el que quieres hacer la modificación, el segundo copia desde el otro branch los cambios al archivo que quieres actualizar.

Cuando aprietes enter mostrará un dif del cambio y preguntará: Apply this hunk to index and worktree [y,n,q,a,d,/,s,e,?]?

Aprienta y (yes) y enter, eso hará el cambio en el branch. Este es el significado de las primeras 4 opciones.

y – (yes) si, aplicar los cambios al arbol de trabajo de este branch
n – (no) no, aplicar los cambios al arbol de trabajo de este branch
q – (quit) salir; no aplicar cambios en este archivo ni en ninguno de los restantes (para cuando se hace un patch de varios)
a – (apply) aplicar cambios en este archivo y en todos los restantes (para cuando se hace un patch de varios)

La corta


git checkout --theirs nuevo_catalogo credenciales-db.inc

Eso hace el cambio sin preguntar, esté en stage, tenga cambios o no, simplemente lo reescribe.

refs:

Eliminar todos los cambios desde el último commit


git checkout .

Solo sirve para los cambios que no han sido staged.

Para unstage los archivos en un branch, digamos master, hay que escribir lo siguiente:


git reset master

Y luego se puede hacer git checkout . para devolver el branch completamente a como estaba en el útimo commit.

Eliminar todos los archivos nuevos desde el último commit


git clean -d -f

-d es para directorios y -f es para forzarlo si no te deja hacerlo sin usar -f. Git clean está bien documentado en La documentación de Linux para Git

Igual siempre hago git clean -f -d -n para ver qué voy a borrar.

Volver a un commit anterior


git reset HEAD~4

El número después del ~ es la cantidad de commits hacia atrás que estamos volviendo, o en vez del HEAD~n puede ir el SHA identificador del commit.

Esto retrocederá el commit que elegiste, pero no eliminará los cambios hechos en los archivos, por lo que tendrás que hacer:


git checkout .
git clean -d -f

Si revisaste los cambios y quieres volver a tu último commit… pues no lo he descubierto aún, yo hago git pull origin master (si estoy en master).

Se habla mucho de git reset --hard pero eso no te da la posibilidad de hacer fast forward y volver a commit más recientes, simplemente elimina los commits hechos hasta ahí.


git reset --hard HEAD~4

Aunque siempre puedes hacer pull desde origin.

Los comunes de Nikolas

Renombrar branch


git branch -m old_branch new_branch

Y luego en el remote borrar la otra si existe y subir la nueva


git push
git push origin :old_branch

Cambiar mensaje al ultimo commit


git commit --amend -m "New commit message"

Add, commit y push en una línea

Resulta que hay un concatenador de comandos: && , así de simple. Entonces ahora en vez de escribir:


git add -A
git commit -m "parche al reactor n.9"
git push origin master

… y tener que esperar que se ejecute cada comando antes de escribir el siguiente, sólo hay que escribir:


git add -A && git commit -m "parche al reactor n.9" && git push origin master

alias Más conveniente aún

Se puede guardar una combinación de comandos en un alias para que en vez de 2 comandos sea uno solo, así.


git config --global alias.add-commit '!git add -A && git commit'

Ahora se agrega y hacen commits con un solo comando, así:


git add-commit -m "parche al reactor n.9"

Y para borrar el alias si ya no gusta o uno quiere cambiarlo:


git config --global --unset alias.add-commit

ref:

Revisar detalle de los cambios

Para ver el detalle de los nuevos archivos que se van a agregar en un add


git status -u

Y si el output es muy largo uno puede usar:


git status -u | less

Ahí te mete en una especie de vi, para salir hay que salir como en vi: :q .

ref:

Conclusión

Hay un montón de trucos y comandos que te simplifican la vida en git, aquí iremos agregando a medida que los vayamos encontrando.

Publicado :

Fecha de inicio :

Última edición :

Comments

comments powered by Disqus