git workflow

PROPÓSITO

  • establecer diferentes flujos de trabajo con git y no solo el uso mayoritario que hago como un pendrive

USO COMO UN PENDRIVE

  • el uso común con notas-programacion, notas-personal , javier-programacion …

VARIOS REPOSITORIOS

  • ejemplo con PADDOC-EPACF para gitBucket y bitBucket

  • secuencia completa

    • se comprueba los remote que tengo
    • añado el repositorio de bitbucket con el alias bitbucket
    • subo la rama master al repositorio bitbucket
    • me pide la contraseña
    • puede ser necesario usar -f para forzar el push pues siempre prevalece lo que desarrollo en el trabajo que la copia que tengo en bitbucket
    • borro el alias del repositorio bitbucket
    • vuelvo a comprobar los remotes que tengo
git remote -v
git remote add bitbucket https://javieriranzo3@bitbucket.org/javieriranzo3/epacf_adm.git
git remote -v
git push bitbucket master
git remote rm bitbucket
git remote -v
  • con la salida de la consola en un caso real
c:\Proyectos\epacf_adm>git remote -v
origin  http://1.43.10.43:8180/git/rperales/epacf_adm.git (fetch)
origin  http://1.43.10.43:8180/git/rperales/epacf_adm.git (push)
c:\Proyectos\epacf_adm>git remote add bitbucket https://javieriranzo3@bitbucket.org/javieriranzo3/epacf_adm.git
c:\Proyectos\epacf_adm>git remote -v
bitbucket       https://javieriranzo3@bitbucket.org/javieriranzo3/epacf_adm.git (fetch)
bitbucket       https://javieriranzo3@bitbucket.org/javieriranzo3/epacf_adm.git (push)
origin  http://1.43.10.43:8180/git/rperales/epacf_adm.git (fetch)
origin  http://1.43.10.43:8180/git/rperales/epacf_adm.git (push)
c:\Proyectos\epacf_adm>git push bitbucket master
Password for 'https://javieriranzo3@bitbucket.org':
To https://bitbucket.org/javieriranzo3/epacf_adm.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://javieriranzo3@bitbucket.org/javieriranzo3/epacf_adm.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
c:\Proyectos\epacf_adm>git push -f bitbucket master
c:\Proyectos\epacf_adm>git remote rm bitbucket
c:\Proyectos\epacf_adm>git remote -v
origin  http://1.43.10.43:8180/git/rperales/epacf_adm.git (fetch)
origin  http://1.43.10.43:8180/git/rperales/epacf_adm.git (push)

DESARROLLO

git WorkFlow Desarrollo

  • Master: Es la rama (branch) que tiene la última versión productiva del código.

  • Release: Es la rama que contiene los nuevos features terminados que se van desarrollando para el siguiente lanzamiento (release) de forma que al iniciar uno nuevo puedas descargar todos los anteriores por si tienen alguna dependencia.

  • Develop: Es la rama que contiene las características (features) en desarrollo en una iteración, esta rama será posteriormente parte de Release mediante un pull request.

  • Feature: Es la rama que contiene el feature en el que estás trabajando personalmente (varios desarrolladores pueden trabajar en un feature), éste debe ser enviado a develop mediante un full request, por lo general aprobado por el líder técnico.

  • Hotfix: Es la rama que contiene cambios urgentes sobre master que permiten corregir un bug o resolver un error, éste debe ser enviado a master y se debe notificar a todos los desarrolladores para que puedan actualizar sus ramas.

  • trabajar siempre en la rama desarrollo

    • primero clonar master o hacer un pull sobre esa rama
    • luego crear la rama desarrollo en el directorio de trabajo en base a la rama master
      • git branch desarrollo master
    • cambiarte a la rama desarrollo
      • git checkout desarrollo
  • cuando este el desarrollo listo

    • moverse a la rama master
      • git checkout master
    • mezlar la rama desarrollo con la actual que es master
      • git merge desarrollo
    • borrar la rama desarrollo
      • git branch -D desarrollo
    • para borrar la rama desarrollo en remote
      • git push origin --delete desarrollo
  • para bajar una rama de remote a local

    • git pull origin desarrollo
    • git fetch --tags para bajarse las etiquetas
    • git checkout -b desarrollo origin/desarrollo
  • para ver las ramas que tienes en remote

    • git branch -r

COMPARAR DOS COMMITS

cd c:\proyectos
mkdir probar
cd probar
git clone -n https://javieriranzo3@bitbucket.org/javieriranzo3/epacf_adm.git para_probar
cd para_probar
git checkout b3b0b4c2dc6328c579955832d4918e1b517a2b06
Checking out files: 100% (2199/2199), done.
Note: checking out 'b3b0b4c2dc6328c579955832d4918e1b517a2b06'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at b3b0b4c... [JAVA-BD] Se modifican los parámetros al llamar a la función de Añadir inscripción.
  • luego comparo con WinMerge la versión portable por ejemplo

  • b3b0b4c2dc6328c579955832d4918e1b517a2b06

PARA VER LO QUE TENGO DIFERENTE EN EL REMOTO

  • primero con git fetch me traigo los cambios sin mezclarlos a una rama oculta
  • luego la comparo con la que tengo en local
C:\proyectos\hugo\notas-programacion>git fetch origin
C:\proyectos\hugo\notas-programacion>git branch -a
* gh-pages
  remotes/origin/HEAD -> origin/gh-pages
  remotes/origin/gh-pages
  C:\proyectos\hugo\notas-programacion>git diff gh-pages origin/gh-pages --name-only
content/bitacora/2018-09-26-bitacora.md
content/bitacora/2018-09-27-bitacora.md
content/bitacora/2018-10-01-bitacora.md
C:\proyectos\hugo\notas-programacion>git diff gh-pages origin/gh-pages
diff --git a/content/bitacora/2018-09-26-bitacora.md b/content/bitacora/2018-09-26-bitacora.md
index d6f9fcd1..a135447a 100644
--- a/content/bitacora/2018-09-26-bitacora.md
--- b/content/bitacora/2018-09-26-bitacora.md
@@ -8,7 +8,7 @@ title: 2018-09-26-bitacora

 # DGA

-## MARÍA JOSÉ
+## MARÍA JOSÉ

C:\proyectos\hugo\notas-programacion>git diff gh-pages origin/gh-pages --name-only
content/bitacora/2018-09-26-bitacora.md
content/bitacora/2018-09-27-bitacora.md
content/bitacora/2018-10-01-bitacora.md

C:\proyectos\hugo\notas-programacion>git diff origin/gh-pages
diff --git a/content/bitacora/2018-09-26-bitacora.md b/content/bitacora/2018-09-26-bitacora.md
index a135447a..d6f9fcd1 100644
--- a/content/bitacora/2018-09-26-bitacora.md
--- b/content/bitacora/2018-09-26-bitacora.md
@@ -8,7 +8,7 @@ title: 2018-09-26-bitacora

 # DGA

-## MARÍA JOSÉ
+## MARÍA JOSÉ
  • se ven los cambios y se pasa de página con el tabulador
  • se sale con q de quit
  • acostumbrarse a usarlo y sacarle partido
  • para ver como esta el repositorio con lo que se acaba de bajar pero aún sin fusionar
git checkout origin/master
  • luego se vuelve a la rama master y se fusionan los cambios
git checkout master
git merge origin/master

TUTORIALES