Git es un sistema que almacena y modela la información. Su propósito es llevar un registro de los cambios en archivos y coordinar el trabajo que varias personas realizan sobre archivos compartidos mediante el uso de ramas.
Las ramas son utilizadas para desarrollar funcionalidades aisladas unas de otras. La rama master es la rama por defecto cuando creas un repositorio. Se suelen crear nuevas ramas durante el desarrollo cuando queremos introducirle mejoras o nuevas funciones a la rama principal, de esta manera si no nos funciona, no estropeamos el código de la rama master (la principal).
En primer lugar, para utilizar git debemos ir al terminal. Una vez lo hemos abierto, debemos crear el directorio donde vamos a tener el repositorio de los archivos del proyecto.
mkdir nombre_carpeta
Una vez creado el directorio del proyecto, vamos a iniciar git (estando dentro de la carpeta):
git init
Esto lo que hace es crearle un nuevo subdirectorio llamado .git que tiene todos los archivos necesarios del repositorio (Inicializar git en una carpeta). Los archivos que crea están ocultos.
Por otro lado, al iniciar el git en nuestro directorio, nos aparecerá a la izquierda la rama en la que estamos. Por defecto, la primera es master.
Ahora que tenemos iniciado git en nuestro directorio, debemos subirle los ficheros del proyecto. Para ello metemos los ficheros en la carpeta y hacemos lo siguiente:
git add -A ----> añadir todos los ficheros al seguimiento. git commit -m "descripción de la actualización"
Ahora que ya tenemos iniciado git en el proyecto, vamos a crear una nueva rama para que los cambios no vayan directamente a la master. La segunda rama siempre la llamaremos developer.
Cabe decir que se pueden crear tantas ramas como queramos, y crear ramas a partir de ramas. Para crear una nueva rama:
git branch developer ----> Crear rama de forma normal. git checkout -b developer ----> Crear rama entrando en ella automáticamente.
Si queremos cambiar a una rama que tengamos ya creada debemos ejecutar lo siguiente:
git checkout nombre_rama
Si lo que queremos es ver las ramas que tengo creadas y donde me encuentro actualmente:
git branch
Ahora que ya sabemos movernos por git y como tener una base, vamos a trabajar con él.
Cuando quiero hacer una modificación en algún archivo del proyecto, antes de nada debemos crear una rama a partir de la rama develop, estando dentro de dicha rama. Siempre trabajaremos a partir de develop, solo uniremos los nuevos cambios al master cuando estemos listos para hacer el release.
git checkout -b nombre_rama
Una vez hayamos creado la rama, haremos aquí las modificaciones que deseemos. Cuando lo hayamos modificado/creado los archivos, añadiremos los archivos al seguimiento de github.
git add -A ----> añadir todos los ficheros al seguimiento. git add nombre_fichero.txt ----> añadir fichero deseado al seguimiento.
Para ver el estado de los ficheros de la rama, podemos hacer lo siguiente
git status
Ahora que ya tenemos añadido el archivo deseado, debemos unirlo a la rama en la que estamos trabajando.
git commit -m "descripción sobre lo que he realizado"
Para ver los commits que he hecho y su id:
git log
Como ya he realizado todos los cambios que quería hacer, vamos a unirlos a la rama develop. Para ello nos movemos a la rama donde vamos a traer los ficheros modificados y ejecutamos lo siguiente:
git merge nombre_rama_que_queremos_traer
Una vez cerrada una rama a la que hemos hecho un commit, debemos eliminarla (menos develop):
git branch -D nombre_rama
Ahora ya estamos seguros de que no queremos hacer ningún cambio mas (de momento), vamos a añadirlo a la rama master.
Si queremos crear un tag con el nombre de la version a la rama master, debemos ejecutar el siguiente codigo estándo en dicha rama:
git tag v1.0.0
Si queremos ver los tags que tenemos:
git tag
Para añadir todo nuestro trabajo a un repositorio de github por primera vez, debemos ejecutar lo siguiente:
git remote add origin https://github.com/usuario/nombreproyecto.git ----> Unimos nuestra carpeta con el repositorio de github (el codigo lo pondrá en la pagina). git push -u origin master ----> Subo los datos que tengo en el directorio al repositorio.
En caso de que queramos realizar un cambio en el proyecto, deberiamos volver a hacer los pasos de crear una rama a partir de developer y hacer los cambios deseados.
Al acabar, como ya tenemos conectado el directorio del proyecto con el respositorio, solo deberiamos hacer los adds y los commits, unirlos a la rama developer y subirlos a github:
git add -A git commit -m "descripción actualización" git push ----> Subo los datos al repositorio.
En caso de que se nos haya borrado el proyecto y queramos descargarlo de github:
git clone enlace_repositorio
Aunque si queremos eliminar el proyecto junto con su git, ejecutaremos lo siguiente estando fuera de él:
git rm -rf nombre_proyecto
En cambio, para borrar un fichero del git:
git rm nombre_fichero
Cuando queramos sincronizar los datos que tenemos en el directorio con los de github:
git pull
Si lo que queremos ver son los cambios que se han hecho en una rama (al hacer merge):
git diff
Para añadir una lista de los ficheros a ser ingorados:
touch .gitignore
Por último, si lo que queremos es ver la config de nuestro git:
git config --list
Para empezar a trabajar con el repositorio de otra persona debemos hacer un fork. Por lo que debemos ir a su repositorio a través de github y darle a fork. Una vez hecho esto, debemos sincronizar nuestro git con el repositorio de la otra persona.
git remote add upstream enlace_repositorio
Ahora debemos descargar los datos de ese repositorio. El codigo tambien sirve por si quiero verificar que tengo el proyecto al dia. (Es como un pull de un repositorio de otra persona).
git fetch upstream
Seguidamente, unimos los datos descargados a una rama.
git merge upstream/develop
Ahora que ya tenemos su trabajo y hayamos hecho los cambios deseados, debemos hacer un push para tener los datos en nuestro repositorio, utilizando el push. Después, deberemos ir a nuestro fork de github y hacer click en new pull request.
Al hacer click en new pull request deberemos seleccionar la rama que queremos sugerirle y donde. Después haremos click en make pull request para que la otra persona pueda añadir o no los cambios que hemos hecho en su proyecto.
Una vez hecho esto, si quieres borrar las ramas de remoto, se usa lo siguiente:
git push origin --delete feature/login
En caso de que nos hagan a nosotros el pull request, deberemos descargar el pull request (pr) y ponerlo en una rama aparte para ver los cambios, esto debe hacerse ejecutando el siguiente codigo:
git fetch upstream pull/id_del_pull_request/head:nombre_rama
Por último, cuando ya tengo descargado el pull request en una rama, debo ejecutar el siguiente codigo en develop para ver los cambios:
git merge upstream/develop
Cuando queremos poner una versión, normalmente se ponen tres números:
Ej. V1.0.0 M.m.r
Los numeros se dividen en tres grupos:
- major: indica la versión principal del software, consistiendo en un conjunto de funcionalidades concretas que son recogidas y cubiertas en dicha versión.
- minor: indican funcionalidad menor cubierta en la versión de software entregada.
- revision: se modifican cuando hay revisiones de código ante fallos de la aplicación.