Showing posts with label Git. Show all posts
Showing posts with label Git. Show all posts

Tuesday, December 23, 2014

Ejecuta comandos Git en múlptiples folders

Para algunas acciones recurrentes a nuestro trabajo con Git, tuvimos la necesidad de armar el siguiente script:
https://github.com/d6salinas/mlgit.git

En el que no dejamos de mencionar a los GitAlias, que fueron definidos, al menos para el script, del siguiente modo:
Usar el script es de mucha utilidad, simplemente hay que cuidar el modo en que solicitamos aplique nuestros cambios.

Gitalias, A nuestro modo

Dejando éste archivo, solo a modo de guía, para el sencillo trabajo con Git. Y todo, por que un alias debe ser fácil de recordar.
Con ésta base, pueden tener su propia configuración al gusto con los alias, y sobre todo con Git.

Wednesday, May 7, 2014

Durante nuestro trabajo con nuestro versionador preferido, Git (claro!). Es posible que se nos presente el caso en el que debemos reportar/consultar simplemente los archivos modificados en cada Commit.

Para Git ésto es consultar la Estadística de Commits realizados. Lo que consultamos en el modo:
$ git log --stat -N

Como,
--stat: indica cuántos archivos han sido modificados, cuántas líneas han sido añadidas y eliminadas para cada uno de ellos, 
-N: indicamos el último número de entradas a consultar, Ej: -2

Sunday, February 9, 2014

Despues de varios commits enviados al repositorio, es muy probable que querramos mirar atrás para ver las modificaciones que se han llevado a cabo. La herramienta más básica y potente para hacer esto es el comando git log.

Para ver las caracteristicas de cada parametro que nos son útiles revisar:

Con lo que puedo identificar los siguientes ejemplos:
$ git log
$ git log -2
$ git log –p -2

Git: Corrigiendo el mensaje del último commit realizado

En casos en los que se haya ingresado un mensaje de confirmacion no correspondiente con el cambio, es posible modificarlo ejecutando un commit con la opción --amend:
$ git commit --amend
Se lanzará el editor de texto para que introduzcas tu mensaje, pero ya contendrá el mensaje de la confirmación anterior. Aquí puedes editar el mensaje.

Así también puedes enviar el mensaje como:
$ git commit -m 'mensaje actualizado' --amend

Si durante nuestro trabajo realizamos un commit apresurado, y luego nos damos cuenta que hemos olvidado preparar en el cambio uno de los archivos que queríamos añadir, ésto se resuelve con algo así:
$ git commit -m 'commit inicial'
$ git add archivo_olvidado
$ git commit --amend

Estos tres comandos acabarán convirtiéndose en una única confirmación —la segunda confirmación reemplazará los resultados de la primera—

Git: Guardar cambios saltándose el área de preparación

Mientras realizamos cambios y conocemos éstos últimos archivos actualizados o agregados, pero queremos saltarnos el área de preparación, Git proporciona un atajo. Consiste en usar la opcion -a cuando realizemos el commit.

Es decir:
$ git commit -a -m 'agregados 2 archivos nuevos al modulo2'

Notar que no ha sido necesario realizar el git add sobre cada archivo antes de ejecutar el commit.

Friday, January 10, 2014

Git: Corrigiendo datos del Autor del último Commit

En un comienzo con Git, el nombre del autor de cambios y correo electrónico, son tomados por default como el nombre de usuario en el SO, y el nombre del Host respectivamente.

Ésta configuración la cambiamos mediante:
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
Son a detalle los nuevos datos del Autor de Cambios

Considerando que por alguna circunstancia éste último usuario del equipo cambia a uno nuevo por X razón, y éstos datos de Autor no son modificados, pero aún así sigue trabajando en algunos cambios y realiza su respectivo Commit, el autor del nuevo cambio sigue siendo el del registro anterior.

Asunto que resolvemos del modo anterior, cambiando la configuración del Autor:
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
Son a detalle los nuevos datos del Autor de Cambios

Despues de actualizar los datos del ahora Autor de Cambios, corregimos éstos datos en el último Commit enviado con el Autor anterior del modo:
$ git commit --amend --reset-author

Friday, November 15, 2013

Git: Forzar borrado de una rama con merge incompleto

Si nos encontramos trabajando con una nueva ramalocal, a la que intentamos realizar un $ git pull, contra otra rama remota, en algún momento podremos tener conflictos en abundancia, que por cuestiones de tiempo u otra razón, puede ya no ser necesario arreglar mencionados conflictos, entonces podremos recurrir a eliminar ésta ramalocal.

A diferencia de eliminar una rama estable que es con:
$ git branch -d nombredelarama
# Remueve la rama "nombredelarama" Estable

Para el caso que mencionamos, eliminamos la rama en conflictos con:
$ git branch -D nombredelarama
# Remueve la rama "nombredelarama" en Conflictos

Git: git pull y resolución a conflictos

Con $ git pull origin, obtengo la última versión del repositorio remoto, y al final intenta hacer un merge de los nuevos cambios contra la versión de la rama actual en que me encuentro.
$ git pull origin

Si el merge es completado sin conflictos, Git envía tal mensaje de que se ha completado la obtención de los últimos cambios si los hay.

En caso de haber conflictos, es necesario solucionarlos para completar el proceso "pull". Git agregará comentarios en los archivos que no hayan podido completarse del merge.

Cada archivo en conflicto contendrá un bloque de código identificado con las ramas en fusión, ambas versiones del bloque de código en conflicto son mostradas, es decir del siguiente modo.
<<<<<<< HEAD
    espacio
============
    Espacio

>>>>>>> ramalocal
Para arreglar los conflictos solo basta en ir limpiando los bloques marcados por comentarios por Git.

Hasta éste paso solo hemos arreglado los conflictos, pero para completar el proceso de $ git pull, es necesario terminar haciendo un Commit para el grabado de éstos últimos cambios de archivos en conflicto a nuestra copia local. Es decir:
$ git add layout01.ang
$ git commit -m 'git pull solucion de conflictos 0001'

Con ésto me hé bajado la última version de los códigos del repositorio, y se han fusionado con la copia local con que cuento.

Tuesday, August 27, 2013

Git: Enviando commits de una rama al repositorio remoto

Despues de haber realizado el Commit en la rama clonada de un remoto, lo que resta es empujar o enviar esos Commits a dicho proyecto remoto. Para empujar los Commit's de la rama local "devellocal" sobre una rama remota "develremota", indicar:

$ git push origin devellocal:develremota
# Los commits de la rama local activa, en nuestro caso DEVEL, seran enviadas al DEVEL, del repositorio remoto.

Despues de ésto los cambios se encuentra ya en el repositorio remoto, que podran ser bajados por los demas colaboradores a través de "pull".

Cuando se realiza el clone de un Proyecto desde un repositorio remoto, éste puede ser denominado ssh://user@gitserver/pydir/project.git ó ssh://user@gitserver/pydir/project, se obtiene de forma local, pero por default se localizara con una sola rama master, aunque en el repositorio existan otras ramas.

$ git clone ssh://user@gitserver/pydir/project
# Obtenemos una copia local del proyecto del repositorio remoto
$ cd project
# Accedemos al repositorio del proyecto local
$ git branch
* master
# Listado de ramas con que cuenta el proyecto local, notemos que solo es visible la rama master

# Aunque en el proyecto remoto se encuentre del siguiente modo:
$ git branch
  devel
  stable
* master
# Listado de ramas con que cuenta el proyecto remoto

Aunque las ramas remotas también las tenemos localmente solo que se encuentran ocultas, para visualizarlas necesitamos:
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/devel
  remotes/origin/stable
# Listado de ramas remotas con que cuenta el proyecto

# Si queremos visualizar el contenido de alguna rama remota:
$ git checkout origin/stable

# Pero si queremos trabajar sobre el contenido de alguna rama remota, es necesario crear una rama local a partir de ésta rama remota:
$ git checkout -b stable origin/stable

# Y ahora, si queremos ver las ramas locales:
$ git branch
* stable
  master

Pero si queremos evitar éstos pasos, ya que nuestra necesidad es obtener una rama especifica que si conocemos, en éste caso será manejado por clientes, es posible hacerlo en directo, y se recomienda hacerlo de la forma [Clonando una rama especifica de un repositorio remoto].

Git: Clonando una rama especifica de un repositorio remoto

Antes de iniciar cualquier actualizacion, necesitamos contar con el codigo en forma local, cada modulo cuenta con la estructura en ramas ya mencionada, por que es necesario obtener del repositorio remoto la rama especifica PYDEVEL rama definida para realizar los cambios durante el desarrollo, los cambios podran ser enviados al server. Lo veremos en un siguiente post.

$ git clone -b PYDEVEL ssh://user@gitserver/pydir/pyname.git
# Obtenemos una copia de la rama remota llamada "PYDEVEL"

Git: Enviando una rama local al repositorio Remoto

Envia una rama local llamada "nombreramalocal" hacia el repositorio remoto, para su uso por otros colaboradores:

$ git push origin nombreramalocal

Git: Listando ramas y mostrando su último commit

Para listar las ramas del repositorio actual, y a la vez necesitamos saber cuál fué su último commit, hacemos lo siguiente:

$ git branch -v

Tuesday, August 13, 2013

Agregar archivos de forma interactiva en Git

Para agregar los nuevos cambios al Staged en Git, se usa $ add , pero añadamosle -i para definir la interactividad:
git add -i

Y listo, podemos seguir con las opciones del menú.

Tuesday, July 16, 2013

Git: Importancia del Fichero .gitignore

.gitignore Es un fichero especial para Git. Va situado en la raíz del repositorio, como contenido trae la extensión de los ficheros que no queremos sean añadidos al repositorio en Git. Es una ventaja ya que es solo éste el lugar donde realizaremos esta configuración para todos esos Archivos.

Aterrizabdo el concepto, mencionamos 2 casos. El Primero de cuando hablamos de un Proyecto en C:
*.o
tmp/
resources/

Un Segundo caso cuando hablamos de un Proyecto en Java, aunque claro, finalmente cada quien puede decidir sobre los tipos de archivos que al final serán considerados.
#java specific
*.class


#netbeans ignore personal stuff
nbproject/


## generic files to ignore
*~
*.lock
*.DS_Store
*.swp
*.out

# Package Files #
*.jar
*.war
*.ear

Solo para tenerse en cuenta.

Versionando con Git en NetBeans

Mencioné anteriormente unas ligas para hacer nuestro trabajo en Modo local con el Entorno Eclipse, en éste caso les dejo una liga para qeu se agregue y se siga trabajando pero ahora con NetBeans, y que posteriormente puede ser salvado a un Repositorio Remoto.

Thursday, June 13, 2013

Versionando, solo que con Git en Eclipse

Rápido: Una manera de versionar Código es usar Git, aunque mucho mejor es saber que puedo hacerlo de modo local.

Les comparto los enlaces que permiten hacer su instalacion y manejo con el entorno Eclipse:

Artículo

Oficial Eclipse

y sigan versionando para el mejor control de sus pys.

Tuesday, February 19, 2013

Consultar y obtener los nuevos cambios hechos en Git


Rápido: Ésto se puede hacer, bajo la suposición que se ha dejado el Repositorio por cierto tiempo, durante el cuál otros integrantes del equipo han hecho cambios actualizando directamente al Repositorio en Git. 

Es posible hacer una consulta de los nuevos cambios que se encuentran en Git para posteriormente obtenerlos localmente. Ésto se hace con:

$ git pull origin master


Pero para el manejo eficiente de las distintas versiones que pueden haber en determinados momentos, es mejor recurrir a usar Stash, pero lo explicaré en otro post.