Changes between Initial Version and Version 1 of BreveTutorialdeGIT


Ignore:
Timestamp:
Jul 17, 2011, 5:17:43 AM (14 years ago)
Author:
cc0gobas
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • BreveTutorialdeGIT

    v1 v1  
     1= Breve Tutorial de GIT =
     2
     3== Operaciones básicas ==
     4
     5=== Descargar un proyecto ===
     6
     7Con git se descarga del repositorio central el proyecto completo y no solo una rama como con svn
     8
     9 * git clone URI
     10 * Ejemplos:
     11   * git clone git@webapps.uco.es:ts-uco.git
     12 
     13=== Actualizar nuestra copia ===
     14
     15Para traer los cambios que se hayan realizado en el repositorio central
     16
     17 * git pull
     18
     19=== Añadir un archivo ===
     20
     21Esta operación marca un archivo para que forme parte del proyecto, pero hasta que no se confirmen los cambios (commit) no lo hace realmente.
     22
     23 * git add [filepattern] ...
     24
     25Añade directorios de forma recursiva, comodines (*.c), etc...
     26
     27=== Renombrar un archivo ===
     28
     29Esta operación cambia el nombre de un archivo o directorio que ya formaba parte del proyecto
     30
     31 * git mv old_name new_name
     32
     33=== Borrar un archivo ===
     34
     35Esta operación borra el archivo y lo marca también como borrado para el próximo commit
     36
     37 * git rm [archivos-o-directorios] ...
     38
     39=== Deshacer ===
     40
     41Lo que hace esta operación es dejar el directorio o el archivo en el mismo estado en el que estaría en la versión del repositorio en la que estamos trabajando. Útil si hemos editado un archivo y queremos dejarlo como estaba, recuperar un archivo borrado o desmarcar un archivo marcado para añadir. Sólo se puede usar '''antes''' de hacer commit. Si no se especifica ningún archivo es sobre todo el repo.
     42
     43 * git reset --hard [archivos-o-directorios] ...
     44
     45=== Commit ===
     46
     47Aquí viene la primera diferencia fundamental con svn: commit confirma los cambios en nuestra copia de trabajo, pero eso no significa que los vaya a enviar al repositorio central. Solo que el cambio está confirmado de modo local y se ha hecho una transacción.
     48
     49 * git commit -a -m "Comentario"
     50
     51El parámetro -a sirve para añadir todos los archivos añadidos, cambiados o borrados. Si solo se quiere confirmar unos pocos y no todos, se quita el -a y se especifican los archivos o directorios a confirmar
     52
     53=== Subir los cambios al repo central ===
     54
     55Se pueden subir uno o más commit locales, así que no es necesario hacerlo tras cada commit. Localmente podemos ir confirmando lo que creamos necesario y cuando el sistema esté listo, se sube.
     56
     57 * git push
     58
     59== Operaciones avanzadas ==
     60
     61=== Cambiar la versión de nuestro repo ===
     62
     63Con la orden git log podemos ver todos las revisiones que se han hecho en nuestro repo, indicando el id del commit, el autor, la fecha y la descripción.
     64 
     65 * git log
     66
     67Si queremos volver a un estado anterior, tenemos que usar la orden checkout:
     68
     69 * git checkout id  [el id es el numero largo que viene después de commit en el log, no hace falta ponerlo entero, se pueden poner los últimos seis o siete números]
     70
     71También admite otras sintaxis:
     72
     73 * git checkout master [vuelve al último estado de nuestra rama principal]
     74 * git checkout master~3 [vuelve al commit que está alejado 3 revisiones de la rama principal, o lo que es lo mismo, deshace los 3 últimos cambios]
     75
     76=== Trabajar con ramas ===
     77
     78Para ver las ramas que tenemos usamos la orden branch
     79
     80 * git branch -r
     81
     82El parámetro -r nos muestra las ramas que están creadas en el servidor central, tiene el formato remote/nombre. Eso no significa que podamos trabajar con ellas directamente, debemos crearnos una rama que se llame igual y que sea copia de aquella. Veamos primero como se crear una rama.
     83
     84 * git checkout -b nueva-rama
     85
     86Podríamos usar git branch para crear la rama, pero checkout nos ahorra un paso. El parámetro -b crea la rama, y checkout nos cambia a esa rama como entorno de trabajo. ¡Ya no estamos en master! Todos los commit se harán en esa nueva rama. Así que checkout nos permite cambiar entre revisiones y entre ramas. Para copiar una rama remota hacemos lo siguiente:
     87
     88 * git checkout -b nombre-rama remote/nombre-rama
     89
     90Y ya podemos trabajar con ella y hacer push. Si hacemos push en una rama que no existe en el repo central, la crearemos y los demás la verán como una nueva rama remota.
     91
     92=== Unir ramas ===
     93
     94Ya hemos terminado de hacer la operación en nuestra rama (por ejemplo ramatest), el sistema es estable y queremos unirlo con la rama master. Hacemos lo siguiente.
     95
     96 * git checkout master
     97 * git pull
     98 * [esto es para asegurarnos de contar con la última version del repo central]
     99 * git checkout ramatest
     100 * git rebase master
     101 * [rebase lo que hace es cambiar la rama padre de nuestra rama por la de master. Si hay conflictos aparecerán en nuestra rama y no en la master.
     102
     103Recordemos que mientras no hagamos push en ninguna de las ramas no se subirán los cambios al repo principal.
     104
     105=== Deshacer un cambio ===
     106
     107Para deshacer un commit, se usa la orden revert:
     108
     109 * git revert id-commit
     110
     111Deshace los cambios del commit indicado, independientemente del estado de la historia en el que nos encontremos. Pueden surgir conflictos dependiendo de los cambios. Revert supone un nuevo commit de manera automática. Ejemplo, imaginemos que hemos eliminado en la revisión 4f32ab un archivo que queremos recuperar. Podemos hacerlo de estas dos maneras:
     112
     113 * git checkout 4f32ab fichero
     114 * git revert 4f32ab -m "Comentario"
     115
     116La diferencia entre uno y otro es que checkout solo trae el fichero, pero no lo añade (hay que hacer add). Revert anula el commit (si hubo más cambios también los deshace) y hace un commit (por lo que no hay que añadirlo).
     117
     118=== Crear un tag ===
     119
     120Creamos una etiqueta que marca el estado concreto del repositorio en una revisión determinada.
     121
     122 * git tag nombre-tag rama-o-commit
     123
     124Para ir cuando queramos a ese tag en concreto usamos checkout. Tag, al contrario que branch, siempre se suben y bajan del repo central (no existe el concepto de tag remoto).