Resumen para uso de GIT

download Resumen para uso de GIT

If you can't read please download the document

description

Resumen del libro GIF Magic Ben Lynn [http://github.com/blynn/gitmagic/tree/master ] Una herramienta de control de revisiones confiable, versátil y multipropósito, que por su extraordinaria flexibilidad es complicada de aprender, y más aún de dominar. Capitulo 0. Instalación La instalación se baso en la siguiente página http://casidiablo.net/montar-servidor-git/ y luego http://pixhero.wordpress.com/2009/05/23/mini-guia-git-sistema-de-control-de-versiones/ En esta pagina es una guia muy completa Nuestro sitio es: www.dis.co.cr

Transcript of Resumen para uso de GIT

Resumen del libro GIF Magic Ben Lynn [http://github.com/blynn/gitmagic/tree/master ] Una herramienta de control de revisiones confiable, verstil y multipropsito, que por su extraordinaria flexibilidad es complicada de aprender, y ms an de dominar. Capitulo 0. Instalacin La instalacin se baso en la siguiente pgina http://casidiablo.net/montar-servidor-git/ y luego http://pixhero.wordpress.com/2009/05/23/mini-guia-git-sistema-de-control-de-versiones/ En esta pagina es una guia muy completa del sistema, viene hasta la instalacin para MAC http://lab.mzr.jp/progit/progit.es.html.gz#trabajando-con-repositorios-remotos Pasos 1. Instale los siguientes paquetes: # aptitude install apache2 git-core gitweb openssh-server 2. Siga el primer link hasta la parte que le dice q cree usuarios. 3. Antes de crear el usuario copie el proyecto que va a trabajar, si no puede copiar porq no tiene permisos hago lo siguiente: en el lugar de usuariogit ponga el nombre del usuario q no tiene permisos, como puede ser tec-digital chown -Rv usuariogit:usuariogit /var/cache/git/proyecto.git 4. Ahora si cree el usuario, para que no tenga ningun problema cree el usario con el nombre git ----> adduser git 5. Luego crea una contrasea es necesaria para que los clientes se pasen los archivos compartidos. 6. Dele permisos a la carpeta chown -Rv usuariogit:usuariogit /var/cache/git/proyecto.git 7. Comparta el proyecto con el siguiente comando: git daemon --base-path=/var/cache/git --detach --syslog --export-all 8. Cree una descripcion del proyecto echo "Es interesante cuando inicio el proyecto lo tengo q hacer con git init --bare" > description 9. Para ver que esta bien configura, entre a su browser y tipee lo siguiente http://IP_Local/git Debera de ver una imagen similar a esta:

10. Configuremos los clientes 11. Descargue los mismos paquetes del servidor: # aptitude install apache2 git-core gitweb openssh-server 12. Cree el usuario git; sudo adduser git 13. Ingrese el password,por recomendacin que sea el mismo del servidor. 14. Dele permisos a la carpeta sudo chown -R git:git /var/cache/git/ 15. Cambiese de usuario, (esto por si estaba como usuario X, o como root) con el comando su git 16. Ahora si esta listo para copiar o como se le llama en GIT a clonar el directorio, lo que debe hacer es tipear el siguiente comando: git clone git@Ip del servidor del repositorio:/Directorio donde esta el repositorio carpeta donde la va a copiar 1. Como esto es fundamental voy a ir despacio, con el usuario git llegue hasta el directorio /var/cache/git/ 2. Luego cree la carpeta donde va a almacenar los archivos, mkdir InventariosTecDigital.git 3. Clone el archivo: git clone [email protected]:/var/cache/git/InventariosTecDigital.git InventarioTecDigital.git En la instruccin anterior el git q esta antes del arroba es el usuario q nos conectamos para bajar el repositorio. Por eso es bueno crear el usuario git, luego la Ip del servidor(Puede Varias), La ruta donde esta ubicado se llega hasta la carpeta *.git, y la carpeta donde queremos guardar. 4. En la instruccin anterior nos pedir la contrasea del servidor, y ya con eso tenemos descargado el proyecto. 17. Ahora es necesario copiar todas las versiones del repositorio para tenerlo actualizado por lo que damos git pull 172.17.78.9:/var/cache/git/InventariosTecDigital.git HEAD 1. Cuando quiera ver donde va a subir sus cambios, podria usar git remote -v para ver la direccin donde lo va a hacer, corriga si la IP del servidor cambio. 18. Modifiquemos un archivo desde la maquina que bajo el repositorio, Captulo 1. Introduccin Algunas caractersticas En cambio, Git modela sus datos ms como un conjunto de instantneas de un mini sistema de archivos. Cada vez que confirmas un cambio, o guardas el estado de tu proyecto en Git, l bsicamente hace una foto del aspecto de todos tus archivos en ese momento, y guarda una referencia a esa instantnea. Para ser eficiente, si los archivos no se han modificado, Git no almacena el archivo de nuevo - slo un enlace al archivo anterior idntico que ya tiene almacenado. Git modela sus datos ms como en la Figura 1-5.

Figura 1-5. Git almacena la informacin como instantneas del proyecto a lo largo del tiempo.

He jugado juegos de PC casi toda mi vida. En cambio, empec a usar sistemas de control de versiones siendo adulto. Sospecho que no soy el nico, y comparar ambas cosas puede hacer que estos conceptos sean ms fciles de explicar y entender. Cuando ests editando, puedes "Guardar Como. . . " un archivo diferente, o copiar el archivo a otro lugar antes de guardar si quieres probar versiones viejas. Tambin puedes usar compresin para ahorrar espacio. Esta es una forma primitiva y muy trabajosa de control de versiones. Los videojuegos han mejorado esto hace ya tiempo, muchas veces permitiendo guardar en varios slots, fechados automticamente. Hagamos que el problema sea un poco ms complejo. Imagina que tienes un montn de archivos que van juntos, como el cdigo fuente de un proyecto, o archivos para un sitio web. Ahora, si quieres mantener una vieja versin, debes archivar un directorio completo. Tener muchas versiones a mano es inconveniente y rpidamente se vuelve costoso. A diferencia de la mayora de los juegos, normalmente estos sistemas son inteligentes en cuanto la conservacin del espacio. Por lo general, solo algunos pocos archivos cambian de versin a versin, y no es un gran cambio. Guardar las diferencias en lugar de nuevas copias ahorra espacio. Antes, cada proyecto usaba un control de versiones centralizado. Un servidor en algn lado contena todos los juegos salvados. Nadie ms los tena. Cada jugador tena a lo sumo un un par de juegos guardados en su mquina. Cuando un jugador quera progresar, obtena la ltima versin del servidor principal, jugaba un rato, guardaba y volva a subir al servidor para que todos los dems pudieran usarlo. Qu pasa si un jugador quera obtener un juego anterior por algn motivo? Tal vez el juego actual est en un estado donde es imposible ganar, porque alguien olvid obtener un objeto antes de pasar el nivel tres, por que que se quiere obtener el ltimo juego guardado donde todava es posible completarlo. O tal vez quieren comparar dos estados antiguos, para ver cunto trabajo hizo un jugador en particular. La nueva generacin de sistemas de control de versiones, de la cual Git es miembro, se conoce como sistemas distribudos, y se puede pensar en ella como una generalizacin de sistemas centralizados. Cuando los jugadores descargan del servidor central, obtienen todos los juegos guardados, no solo el ltimo. Es como si tuvieran un mirror del servidor central. Esta operacin inicial de clonado, puede ser cara, especialmente si el historial es largo, pero a la larga termina siendo mejor. Un beneficio inmediato es que cuando se quiere una versin vieja por el motivo que sea, la comunicacin con el servidor es innecesaria. Un proyecto pequeo, puede necesitar solo una fraccin de de las caractersticas que un sistema as ofrece. Pero, usaras nmeros romanos si solo necesitas usar nmeros pequeos?. Adems, tu proyecto puede crecer ms all de tus expectativas originales. Usar Git desde el comienzo, es como llevar una navaja suiza, aunque solo pretendas usarla para abrir botellas. El da que necesites desesperadamente un destornillador, vas a agradecer el tener ms que un simple destapador .

Conflictos al fusionar Supongamos que Alice inserta una lnea al comienzo de un archivo, y Bob agrega una lnea al final de su copia. Ambos suben sus cambios. La mayora de los sistemas automticamente van a deducir un accionar razonable: aceptar y hacer merge (Nota del Traductor: fusionar en ingls) de los cambios, para que tanto la edicin de Alice como la de Bob sean aplicadas. Ahora supongamos que Alice y Bob han hecho ediciones distintas sobre la misma lnea. Entonces es imposible resolver el conflicto sin intervencin humana.Se le informa a la segunda persona en hacer upload que hay un conflicto de merge, y ellos deben elegir entre ambas ediciones, o cambiar la lnea por completo. Pueden surgir situaciones ms complejas. Los sistemas de control de versiones manejan automticamente los casos simples, y dejan los ms complejos para los humanos. Usualmente este comportamiento es configurable. Captulo 2. Trucos Bsicos Dejar un editor por default$ git config --global core.editor emacs