Comandos básicos
Inicio o clonado
#Init de un proyecto existente git init #Si deseas empezar a controlar versiones de archivos existentes $ git add *.c $ git add README $ git commit –m 'versión inicial del proyecto' #Clonado repositorios git clone git://github.com/schacon/grit.git name_folder_local git clone http(s)://usuario@servidor:/ruta.git http://git-scm.com/figures/18333fig0201-tn.png
Añadir archivos
#Añadir archivos a tracking (control) o Preparar archivos modificados git add name_file o name_folder
Status y diferencias
#Comprobar el estado de archivos git status # ¿Qué has cambiado pero aún no has preparado?, y ¿qué has preparado y estás a punto de confirmar? #Es un git status linea a linea (de los archivos que aún no han sido preparados) git diff #Si quieres ver los cambiosde los archivos que has preparado y que irán en tu próxima confirmación diff –-cached ( olo que es lo mismo)git diff –-staged #Decir a git que ignore archivos nano .gitignore *.[log] #(extensión log) *~ #[archivos terminados en tilde] Ctrl + o , Ctrl +x Las reglas para los patrones que pueden ser incluidos en el archivo .gitignore son: Las líneas en blanco, o que comienzan por #, son ignoradas. Puedes usar patrones glob estándar. Puedes indicar un directorio añadiendo una barra hacia delante (/) al final. Puedes negar un patrón añadiendo una exclamación (!) al principio.
Confirmar cambios
#Confirmar cambios (El mensage de confirmación contiene un "git status" git commit -v Se añadan también las diferencias de tus cambios linea a linea -m "changes_in_mainhub" Añade comentario propio del usuario #Confirmar cambios de todo sin especificar nada (commit automático) git commit -a
Eliminar
#Eliminar ficheros 1. Eliminar el fichero en cuestión #El paso anterior es opcional, sino el siguiente se encargrá de hacerlo 2. git status (aparecerá como deleted) 3. git rm name_file (preparas la eliminación del archivo) *Si ya estaba preparado para commit puedes forzar la eliminación con ( -f) * Puedes usar patrones como git rm log/*.log #Elimina archivos con la extensión .log en el directorio log/ #Eliminar solo el seguimiento, se queda en tu HDD git rm --cached readme.txt
Mover y renombrar
git mv file_from file_to
Ejemplos de Patrones
#Todos con extensión log *.[log] #Archivos terminados en tilde *~ # Archivos con la extensión .log en el directorio log/ log/*.log
Control de Cambios
Histórico de confirmaciones (commits)
#Muestra las entradas de más reciente a más antigua git log -p # Que muestra las diferencias introducidas en cada confirmación. -n # Que hace que se muestren únicamente las últimas n entradas. --stat # Musetra número de ficheros modificados añadidos etc --graph #Añade gráfico ASCII de ramas y uniones --since, --after # Desde : ej: --since=2.weeks --until, --before #Hasta --author #Autor con la cadena ej: --author=ruben0909 --committer # Quien hizo el commit coincide con --pretty #Modifica el formato de la salida oneline short full fuller #Ejemplo git log --pretty=oneline # Más info en http://git-scm.com/book/es/Fundamentos-de-Git-Viendo-el-hist%C3%B3rico-de-confirmaciones
Deshaciendo cosas
#Deshacer último commit git commit --amend #Deshacer (stage) preparación de un archivo git reset HEAD name_file # *NOTA: Este comando nos aparece cada vez que hacemos un "git status" #Por lo que no es necesario aprenderlo #Deshaciendo la modificación de un archivo git checkout -- name_file # *NOTA: De nuevo "git status" nos informa de cómo hacer ésto #Para deshacer varios commint git rebase -i HEAD~n #Dónde n es el número
En estas dos imágenes se puede ver también el flujo de una forma muy sintetizada:
http://robotics.usc.edu/~ampereir/wordpress/wp-content/uploads/2012/05/GitDataTransportCommands-1024×922.png
http://www.patrickzahnd.ch/wp-content/uploads/2014/02/git-transport-v1-1024×723.png
Apasionado, geek, ingeniero de locuras y absolutamente convencido de nada