Para mirrorear un repositorio de Team Foundation Server, basta con ejecutar este comando:
git tfs clone
Ejemplo (no les puedo dar uno real porque no conozco ninguno en la web)
git tfs clone http://tfs:8080
NOTA: Esto no es una ninguna broma, se pueden bajar bridge entre git y tfs de aca: https://github.com/spraints/git-tfs
Bienaventurados los que versionan con GIT | Blessed are those who use GIT for source control
jueves, 13 de enero de 2011
SVN mirror con GIT
Para mirrorear un repositorio de svn, basta con ejecutar este comando:
git svn clone
Ejemplo
git svn clone http://zxing.googlecode.com/svn/trunk/
Actualizar el mirror
git svn rebase
Salu2
git svn clone
Ejemplo
git svn clone http://zxing.googlecode.com/svn/trunk/
Actualizar el mirror
git svn rebase
Salu2
GIT mirror con GIT
Para mirrorear un repositorio de git, basta con ejecutar este comando:
git clone
Ejemplo:
git clone git://github.com/tario/shikashi.git
Actualizar el mirror
git pull
Salu2
git clone
Ejemplo:
git clone git://github.com/tario/shikashi.git
Actualizar el mirror
git pull
Salu2
miércoles, 12 de enero de 2011
git-svn: A GIT lo que es de GIT...
... y a SVN lo que es de SVN
El que el repositorio al cual haya que commitear sea de SVN no implica necesariamente que se tenga que usar esa herramienta como cliente. Git tambien puede "pushear" , por decirlo de alguna manera, a servers de svn. Lo que tiene esto es que se pueden aprovechar las ventajas que tiene git localmente o tambien si se esta mas comodo con git. Por ejemplo, se puede commitear localmente varias veces hasta decidir cuando subir los cambios, y ni hablar cuando hay algun problema que impide la conexion con el server, en ese caso es de gran ayuda.
Para clonar un server svn:
git svn clone $URL
Posteriormente se trabaja como lo harian siempre con git, commit, branch, reset, checkout, etc...
La unica diferencia es al momento de subir los cambios, no es el push de siempre, sino
git svn dcommit
martes, 4 de enero de 2011
Fix commit message
¿Cuantas veces se equivocaron al escribir el mensaje de un commit, poniendo haverrantes faltas hortograficaz, escribiendo cosas que no correspondian, o el peor de los casos, pegando basura que habia en el clipboard?. Bueno, eso se corrige con la opcion amend, es la misma opcion que tambien sirve para corregir el contenido de los commits, solo que esta vez hay que mantener el mismo contenido y se cambia el message del commit.
Ejemplo:
git commit --message 'fixed type'
Me equivoque :S, quise poner 'fixed typo', no 'fixed type' se corrige asi:
git commit --amend --message 'fixed typo'
sábado, 25 de diciembre de 2010
Descartar todos los cambios no pusheados
Para descartar todos los cambios no pusheados (y hacer de cuenta que no se commiteo nada)
git reset --hard origin/master
Explicacion
git reset es el comando que permite cambiar a que commit apunta la rama en la cual se esta trabajando, por ejemplo, el siguiente comando ocasionara que la rama en la que estan trabajando retroceda un commit:
git reset --hard HEAD^
Lo que se hace para deshacer todos los commits que no se pushearon hasta el momento, es asignar a la rama master el mismo commit al que apunta la rama remota: origin/master, esto es lo que hace el comando git reset --hard origin/master
La opcion --hard, sirve para indicar que reinicie tambien el indice y el working tree a esa version.
Deshacer
Si se arrepintieron de descartar sus cambios, lo unico que hay que hacer es restaurar la ref (el puntero de la rama) a su valor original, que se puede hacer asi
git reset --hard HEAD@{1}
HEAD@{1} es el valor que tuvo HEAD antes de que sea cambiado por el otro git reset, eso se puede verificar mas claramente con el comendo git reflog
git reset --hard origin/master
Explicacion
git reset es el comando que permite cambiar a que commit apunta la rama en la cual se esta trabajando, por ejemplo, el siguiente comando ocasionara que la rama en la que estan trabajando retroceda un commit:
git reset --hard HEAD^
Lo que se hace para deshacer todos los commits que no se pushearon hasta el momento, es asignar a la rama master el mismo commit al que apunta la rama remota: origin/master, esto es lo que hace el comando git reset --hard origin/master
La opcion --hard, sirve para indicar que reinicie tambien el indice y el working tree a esa version.
Deshacer
Si se arrepintieron de descartar sus cambios, lo unico que hay que hacer es restaurar la ref (el puntero de la rama) a su valor original, que se puede hacer asi
git reset --hard HEAD@{1}
HEAD@{1} es el valor que tuvo HEAD antes de que sea cambiado por el otro git reset, eso se puede verificar mas claramente con el comendo git reflog
jueves, 23 de diciembre de 2010
Obtener el codigo del pasado, Parte II: Tags
Como se vio en Obtener codigo del pasado, es posible obtener el codigo de cualquier commit arbitrario que se haya realizado, con solo localizarlo y checkoutearlo.
Segun la situacion, localizar commits puede ser tedioso, por eso existen los tags, que son la herramienta para marcar commits a los que se desea ir con frecuencia.
LOCALMENTE
Para taguear el commit en el que estamos parados:
git tag nombre_del_tag
Para taguear otro commit
git tag nombre_del_tag 012345679abcde
git tag nombre_del_tag nombre_del_branch
git tag nombre_del_tag nombre_de_otro_tag
git tag nombre_del_tag HEAD^
(ese ultimo taguea el parent del commit en el que estamos parados)
Para ver el contenido del tag
git checkout nombre_del_tag
REMOTAMENTE
Es posible crear tags en un repositorio remoto, asi:
git push origin HEAD:refs/tags/nombre_del_tag
Para que cualquiera apuntando a ese repositorio se baje ese tag, tiene que hacer:
git fetch --tags
Actualizacion: HEAD podria reemplazarze con cualquier SHA de commit, nombre de branch o tag ya existente (por ejemplo, uno local que se quiere hacer remoto)
Actualizacion: HEAD podria reemplazarze con cualquier SHA de commit, nombre de branch o tag ya existente (por ejemplo, uno local que se quiere hacer remoto)
Saludos, y Felices Fiestas!
Links:
* Post anterior: Obtener codigo del pasado
Suscribirse a:
Entradas (Atom)