Publica tu how-to

Dinos como hacer lo que sabes hacer, mándanos un email a wdonet@gmail.com y lo publicamos (dos días máximo) o si te interesa unirte al equipo de redactores, también háznoslo saber por correo.

GIT - Vista Rapida Comandos

Para crear un Branch
git checkout -b newLocalBranch
git push -u origin newLocalBranch

Uso de checkout
branch (cambiar de branch a branch):
     git checkout remoteBranch
Para restaurar al archivo original (olvidar cambios):
     git checkout path/local/file

Watering - traerte los cambios del branch origen a tu branch actual 
git merge origin/master --no-commit
git commit  -m"watering"
git push

Cherry pick - traerte los cambios de un commit a tu branch actual
1. git cherry-pick #hash
2. git push

Hacer un merge de un branch sobre master (o el origen de donde surgio el branch)
git checkout {upstream-branch-name}
git pull
git merge --squash --no-commit origin/{branch-to-merge}
git commit
mvn clean install
ant test.js.all
git push

Borrar un branch
git branch -rd origin/remoteBranchName (forzar a borrarlo cuando no tienes una copia localmente)
or
git branch -D localBranchName
git push origin :remoteBranchName

Esconder cambios con stash
ver lista de cambios escondidos:                         git stash list
ver cambios de un elemento de la lista:              git stash show stash@{#}   
esconder cambios como uno en la lista:              git stash save "Some stash message here”
aplicar cambios al branch sin borrar de la lista:   git stash apply stash@{#}
aplicar cambios y eliminarlos de la lista :            git stash pop stash@{#}
borrar un elemento de la lista :                            git stash drop stash@{#}
borrar todos los elementos de la lista:                 git stash clear

Revertir cambios de un branch remoto (o ya pusheados)
git revert #exactlyTheRemoteHashOfInterest —no-commit

Resetear cambios del branch local (commiteados pero no pusheados)
1. buscar el #hash previo (no el hash que estas interesado en resetear, sino uno antes)
git log
2.1 resetear (todos los commits van a ser devueltos a la bandeja de unstage - antes de comitear)
git reset #localHash
2.2 O tambien puedes deshacer el commit N (con HEAD~N) y perder los cambios (con --hard)
git reset --hard HEAD~1
2.3. Si quieres deshacer cambios pero no perderlos (que por default usa --soft)
git reset HEAD~1

Patron de Diseño Command

El patrón comando permite que solicitudes del cliente sean encapsuladas como objetos, indicar parámetros a diferentes solicitudes, encolarlas, registrarlas y hasta dar soporte para operaciones des-hacer.



Participantes:
  1. invocador (invoker) - el que almacena las ordenes y las manda ejecutar.
  2. cliente (client) - el que proporciona la orden al invocador.
  3. receptor (receiver) - aquél que en verdad realiza la acción que se mandó a ejecutar
  4. comando (command) -la orden que relaciona al invocador con el receptor de manera general
  5. comando concreto (concrete command) - la implementación para la ejecución de la orden (es más específica)

Ejemplo:
  • El consumidor (cliente) da órdenes (comandos) a un mesero (invocador), el cuál las apila para después pasarla al cocinero (ejecutar la acción).  El cocinero (receptor) entonces realiza la acción.
  • El usuario abre su programa favorito (cliente) , da clic sobre el contenedor de comandos llamado "menú Archivo" (invocador) y después sobre abrir archivo (comando), el cual abre una segunda ventana para indicarle de que archivo se trata (receptor). Cada opción del menú archivo ejecuta una acción que es un comando parametrizado.
Consecuencias:
El objeto que invoca el comando y el que lo realiza están des-acoplados. El invocador no tiene por que saber de que forma se ejecuta la acción.
Los objetos comandos se pueden extender usando patrones como Composite y Memento.
Es fácil agregar comandos porque no tienes que modificar las clases ya hechas.

Decisiones de diseño:
  • Cuando quieras parametrizar objetos que realicen una acción determinada
  • Cuando necesites encolar y ejecutar una serie de solicitudes en diferentes momentos
  • Si deseas mantener un historial de ejecuciones para así permitirte des-hacerlas, también es sencillo logear cada proceso de manera que si falla el sistema, se pueda saber en que punto quedó para una restauración manual.