Ahora con esto de estar creando grupos de trabajo de manera distribuida en diferentes ciudades para el desarrollo de software es necesario tener una herramienta de versiones, hemos decidido por usar Bitbucket, que  es un servicio de alojamiento basado en web, para los proyectos que utilizan el sistema de control de revisiones Mercurial y Git, y creo que lo primero que debemos hacer sobre todo tener socializado de igual manera entre todos los miembros del equipo es que es GIT.

Otro de los principios fundamentales de Git es el de no remover información. Cuando introduces un cambio en tu proyecto simplemente añade más información al repositorio, lo que permite que sea muy difícil estropear algo por error o que no puedas deshacer esas modificaciones. Como todos los sistemas de control de versiones, con Git puedes perder información que aún no hayas confirmado, pero una vez hecho este paso, todo quedará guardado y podrás deshacerlo con toda seguridad.

Comenzando con GIT.

Git es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente. Al principio, Git se pensó como un motor de bajo nivel sobre el cual otros pudieran escribir la interfaz de usuario o front end como Cogito o StGIT.  Sin embargo, Git se ha convertido desde entonces en un sistema de control de versiones con funcionalidad plena.

configuración

Antes que nada debemos descargarlo para utilizarlo en metodo de machos, osase desde la terminal, mas debo comentarles que muchas herramientas ya tienen su maneador visual como es el caso de BITBUCKET que tiene Source Tree.

Descarga git para OSX

Descarga git para Windows

Descarga git para Linux

¿Qué palabras utilizamos cuando hablamos de Git?

Hay algunas palabras que voy a utilizar en varias ocasiones:

  • Línea de comandos. El programa  que utilizamos para introducir los comandos de Git. Es el  de Terminal o la consola de comandos. Escribiremos comandos basados ​​en texto en lugar de realizar las acciones con el ratón.
  • Repositorio. Un directorio o espacio de almacenamiento donde los proyectos pueden vivir . A veces los usuarios de GitHub acortan esto a “repo”. Puede ser local (una carpeta) , o puede ser un espacio de almacenamiento en GitHub u otro host en línea. Se pueden guardar archivos de código, archivos de texto, archivos de imagen y muchos más tipos de archivo.
  • Control de versiones. Básicamente es el propósito con el cual Git fue diseñado. Git mantiene “fotografías” de cada punto en el tiempo en la historia del proyecto, por lo que nunca perderemos información.
  • Commit. Es un comando muy poderoso. Cuando haces un commit, estás diciéndole a Git que saque una “fotografía” de tu repositorio en ese punto en el tiempo, creando un punto de control al que se puede volver en caso de necesitar restaurar el proyecto.
  • Rama (Branch). ¿Cómo pueden varias personas trabajar en un proyecto al mismo tiempo y que Git no se confunda? Por lo general , cada persona que esté trabajando en el proyecto crea su propia rama y trabaja en una funcionalidad diferente. Es decir, se “ramifican” del proyecto principal nuevas ramas con sus propias versiones completas. Cuando terminas de trabajar en tu rama, es el momento de “fusionar” la rama actual con la rama “master”. La rama “master” es el directorio principal del proyecto.

¿Cuáles son los principales comandos?

  • git init. Inicializa un nuevo repositorio Git. Mientras no ejecutemos este comando, una carpeta será sólo eso, una carpeta.
  • git config. Abreviatura de “configure”. Es muy útil cuando se está configurando Git por primera vez.
  • git help. Ayuda que hace que aparezcan los 21 comandos git más comunes. También se puede ser más específico y escribir “git help init” o cualquier otro comando.
  • git status. Comprueba el estado de tu repositorio. Es muy útil para saber que cambios están pendientes de commit, en que rama se está trabajando y otros detalles.
  • git add. Esto no agrega nuevos archivos a tu repositorio. Lo que hace es dejarlos en un estado que podríamos definir “pendiente de subir”. Digamos que cuando queremos subir algo a nuestro repositorio, primero haríamos un git add, luego haríamos el commitcorrespondiente para indicar que va a haber cambios y por último haríamos un pushpara subir los archivos.
  • git commit. Comando más importante de Git. Después de realizar cualquier tipo de cambio, es decir, de hacer un git add, con este comando se le indica a Git que guarde una “Fotografía” del repositorio. Por lo general, el comando es git commit -m “Mensaje significativo del cambio”. -m indica que la sección siguiente de la orden debe ser leído como un mensaje.
  • git branch name_branch. Este comando te permitirá construir una nueva rama.
  • git branch. Este comando te permite ver las ramas existentes y en cual te encuentras.
  • git checkout name_branch. Permite moverte de una rama a otra.
  • git merge. Cuando hayas terminado de trabajar en una rama, puede fusionar los cambios con otra o con la rama principal, que es visible para todos los colaboradores.
  • git push. Si estas trabajando en local, y quieres subir los cambios a GitHub, tendrás que “empujar” los cambios a GitHub con este comando. Previamente habrás hecho un git add y un git commit -m “nombre del cambio”.
  • git pull. Si estás trabajando en local y deseas obtener la versión más actualizada del repo que se encuentra en GitHub, debes “tirar” los cambios desde GitHub con este comando.

flujo de trabajo

Tu repositorio local esta compuesto por tres “árboles” administrados por git. El primero es tu Directorio de trabajo que contiene los archivos, el segundo es el Index que actua como una zona intermedia, y el último es el HEAD que apunta al último commit realizado.

trees

add & commit

Puedes registrar cambios (añadirlos al Index) usando
git add <filename>
git add .
Este es el primer paso en el flujo de trabajo básico. Para hacer commit a estos cambios usa
git commit -m "Commit message"
Ahora el archivo esta incluído en el HEAD, pero aún no en tu repositorio remoto.

ramas

Las ramas son utilizadas para desarrollar funcionalidades aisladas unas de otras. La rama master es la rama “por defecto” cuando creas un repositorio. Crea nuevas ramas durante el desarrollo y fusiónalas a la rama principal cuando termines.

branches

clientes gráficos

guías

Una recomendacion vean esta pagina

http://rogerdudler.github.io/git-guide/index.es.html