-
Notifications
You must be signed in to change notification settings - Fork 3
Manual de Git para trabajar con el proyecto de Spreads
Basado en este post de Vincent Driessen, Git-flow es una herramienta que facilita un flujo de trabajo que se puede utilizar trabajando con git.
El proyecto lleva algún tiempo sin actividad, pero Peter van der does, realizó un fork de git-flow y es el que tiene mayor mantenimiento en la actualidad.
La versión actual del paquete es la 1.7.0 y se puede instalar en Debian GNU/linux con el siguiente comando: apt-get install git-flow
Wiki del proyecto: https://github.com/petervanderdoes/gitflow/wiki
Esto queda más claro en la sección de Ejemplo de trabajo con git flow.
Pero si quiere investigar más: Configure git to sync your fork with the original
-
Se clona el repositorio
$ git clone [email protected]:Sufrostico/spreads.git Cloning into 'spreads'... Enter passphrase for key '/home/sufrostico/.ssh/id_rsa': remote: Counting objects: 6498, done. remote: Compressing objects: 100% (1859/1859), done. Receiving objects: 100% (6498/6498), 20.86 MiB | 437.00 KiB/s, done. Resolving deltas: 100% (4614/4614), done. Checking connectivity... done.
-
Me paso a la carpeta del repo
$ cd spreads
-
Se muestran las ramas/branch remotos
$ git remote -v origin [email protected]:Sufrostico/spreads.git (fetch) origin [email protected]:Sufrostico/spreads.git (push)
-
Se agrega la rama/branch remota para el repo principal
$ git remote add upstream [email protected]:LabExperimental-SIUA/spreads.git
-
Se muestran las ramas/branch remotos
$ git remote -v origin [email protected]:Sufrostico/spreads.git (fetch) origin [email protected]:Sufrostico/spreads.git (push) upstream [email protected]:LabExperimental-SIUA/spreads.git (fetch) upstream [email protected]:LabExperimental-SIUA/spreads.git (push)
-
Se inicializa git-flow
$ git flow init
Which branch should be used for bringing forth production releases? - master Branch name for production releases: [master] Branch name for "next release" development: [develop] next
How to name your supporting branch prefixes? Feature branches? [feature/] issue- Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? [] version- Hooks and filters directory? [.git/hooks]
-
Inicializo un feature (El # corresponde al # de issue en github)
$ git flow feature start 62 Switched to a new branch 'issue-62'
Summary of actions: - A new branch 'issue-62' was created, based on 'next' - You are now on branch 'issue-62'
Now, start committing on your feature. When done, use:
git flow feature finish 62
-
Hago cambios en el código
$ vim spreadsplug/gui/gui.py
-
Agrego los cambios al índice
$ git add spreadsplug/gui/gui.py
-
Le hago commit a los cambios
$ git commit -m "Cambios en el plugin de la GUI" [issue-62 a978f82] Cambios en el plugin de la GUI 1 file changed, 2 insertions(+)
-
Envio la rama a github en caso de que no haya terminado
$ git flow feature publish 62
-
Hago más cambios en el código
$ vim spreadsplug/gui/gui.py
-
Los agrego al índice
$ git add spreadsplug/gui/gui.py
-
Hago commit de los cambios
$ git commit -m "Cambios finales en el plugin de la GUI" [issue-62 a978f82] Cambios finales en el plugin de la GUI 1 file changed, 25 insertions(+)
-
Despupes de hacer las pruebas, si ya terminé con el issue, le doy terminar al feature
$ git flow feature finish 62 Switched to branch 'next' Merge made by the 'recursive' strategy. spreadsplug/gui/gui.py | 27 1 files changed, 27 insertions(+), 0 deletions(-) create mode 100644 spreadsplug/gui/gui.py Deleted branch issue-62 (was 5977194).
Summary of actions: - The feature branch 'issue-62' was merged into 'next' - Feature branch 'issue-62' has been locally deleted - You are now on branch 'next'
-
Envío los cambios a github
$git push
-
Desde el sitio de github hago un pull request.
-
Me paso a la rama/branch master
$ git checkout master
-
Me traigo los cambios del original
$ git fetch upstream remote: Counting objects: 75, done. remote: Compressing objects: 100% (53/53), done. remote: Total 62 (delta 27), reused 44 (delta 9) Unpacking objects: 100% (62/62), done. From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY * [new branch] master -> upstream/master
-
Integro los cambios que me traje con lo que tengo en el repo
$ git merge upstream/master Updating a422352..5fdff0f Fast-forward README | 9 ------- README.md | 7 ++++++ 2 files changed, 7 insertions(+), 9 deletions(-) delete mode 100644 README create mode 100644 README.md
Para más información ver: Process to sync a fork
Cáda vez que se acepta que el código esta lo suficientemente estable se puede hacer un release, para esto se utilizan las etiquetas/tags de GIT.
-
Documentación de cómo funcionan las Versiones (Releases) en github
-
Documentación de cómo trabajar con etiquetas (tags) en git
Al final los repositorios deberían tener más o menos esta estructura de ramas/branches
DIYBookScanner/spreads └─ master
LabExperimental-SIUA/spreads ├─ master └─ next
\<usuario>/spreads ├─ master ├─ next ├─ issue-# ├─ ... └─ issue-#