**¡Esta es una revisión vieja del documento!**
Uso de git
clonar separando código y .git en distintos directorios
$ git clone --separate-git-dir /tmp/1/unaprueba ssh://git-test.pm.rosario.gov.ar/datos/git/web.git --branch desarrollo
clonar trayendo el log solamente del último cambio
$ git clone --depth 1 ssh://git-test.pm.rosario.gov.ar/datos/git/web.git --branch desarrollo
clonar como espejo para usar como bare local
$ git clone --mirror ssh://git-test.pm.rosario.gov.ar/datos/git/web.git
actualizar repositiorio espejo desde el origin
$ cd repo && git fetch origin
clonar contra https con certificado erroneo
GIT_SSL_NO_VERIFY=true git clone https://gitlab.tecso.coop/tecso/siat-rosario.git
git config http.sslVerify "false"
ver ramas remotas
$ git branch -r
ver todas las ramas
$ git branch -a
ver ramas locales
$ git branch
comparar repositorio local con el origin
git remote show origin
agregar archivos nuevos al área de trabajo para commit
git add .
ver cambios que se grabarán en el próximo commit
git status
commit con mensaje
git commit -a -m 'mensaje descriptivo'
agregar archivo olvidado al último commit
git commit --amend
ver historial de commits
git log --stat
ver historial de commits abreviado
git log --pretty=oneline
ver diferencias entre último commit y el anterior
git log -p -2
ver árbol de versionados
git log --pretty=format:"%h %s" --graph
volver a un commit anterior
git revert 0d1d7fc32
anular últimos commits perdiendo cambios
git reset --hard 0d1d7fc32
crear nueva rama (igual al commit actual)
git branch testing
borrar rama local
git branch -d the_local_branch
borrar rama remota
git push origin :the_remote_branch
aplicar en master los cambios de una rama de test
git checkout master
git merge test
limpiar entorno sucio por cambios no aplicados: 1-ver 2-aplicar
git clean -n
git clean -f
revertir un archivo a un estado varios commits anterior
ver contenido del archivo en el commit
git show a4r9593432:path/to/file.txt
revertir el archivo a la versión elegida
git reset a4r9593432 -- path/to/file.txt
revisar las diferencias
git diff --cached path/to/file.txt
aplicar el cambio
git commit
ver diferencias en un archivo con el commit anterior
git diff HEAD^ -- /foo/bar/baz.txt
ver diferencias entre version actual y 2 versiones anteriores de un archivo
git diff HEAD@{2} /foo/bar/baz.txt
crear tag
git tag -a v1.4 -m "my version 1.4"
crear tag desde commit
git tag -a v1.2 0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc
crear tag liviano (solo info del commit)
git tag v1.4
Crear repositorio
mkdir debian7apache cd debian7apache git init
Cambiar la descripcion del proyecto
vim debian7apache/.git/description
Agregar archivos al directorio
git add . git commit -n 'Carga de archivos iniciales'
Subir al repositorio compartido
git remote add origin pgrigio0@git-test.pm.rosario.gov.ar:/datos/git/svc/debian7apache.git git push origin master
Actualizar cambios
chmod +x instalar.sh git commit -a -m 'Agregar instalador ejecutable' git push origin master
Crear repositorio compartido
Crear repositorio compartido en git-test con permisos para edición del grupo solamente
mkdir /datos/git/svc/debian7tomcat.git chown git debian7tomcat.git cd debian7tomcat.git git init --bare --shared=group cd ... chown -R git debian7tomcat.git chmod o-x debian7tomcat.git
Cambiar la descripcion del proyecto
vim debian7tomcat/description
Subir el proyecto al servidor compartido
git push pgrigio0@git-test.pm.rosario.gov.ar:/datos/git/svc/debian7tomcat.git master:master
Agregar origen en repositorio local para después seguir actulizando cambios
git remote add origin pgrigio0@git-test.pm.rosario.gov.ar:/datos/git/svc/debian7tomcat.git
Agregar envío de correo cuando hay nuevo commit
cd /datos/git/svc/debian7tomcat.git cp /usr/share/git-core/contrib/hooks/post-receive-email hooks/post-receive chown git.servicios hooks/post-receive chmod +x hooks/post-receive git config hooks.mailinglist "pgrigio0@rosario.gov.ar,pgrigioni@rosario.gov.ar" git config hooks.emailmaxlines 500
Sin git-modifier hay que hacer esto además
git config hooks.emailprefix "[debian7tomcat] " git config hooks.showrev "git show -C %s; echo"
Mensaje con servidor y repositorio
$ git config hooks.showrev "t=%s; printf 'http://your_repository_IP/gitrepo/?p=my_git_project;a=commitdiff;h=%%s' \$t; echo;echo; git show -C \$t; echo"
!Agregar repositorio a demonio git público
Agregar repositorio para poder ser consumido de forma pública mediante protocolo git
touch /datos/git/svc/debian7tomcat.git/git-daemon-export-ok
!Agregar repositorio a servidor web
Agregar repositorio para ser consultado de forma anónima por protocolo http y mediante la interfaz gitweb
cd /var/www/gitweb/ ln -s /datos/git/svc/debian7tomcat.git .
Procedimiento para clonar repositorio y subir modificaciones
Para agregar cambios en un repositorio público el procedimiento es: 1) Traer la última versión del proyecto a modificar a mi pc 2) Aplicar los cambios a la versión local 3) Generar una nueva versión local 4) Publicar la nueva versión en el repositorio público
1)
Clonar repositorio
git clone ssh://usuario@git-test.pm.rosario.gov.ar/datos/git/svc/debian7base.git/ --branch master
cd debian7base
o para actualizar la version local con el contenido del servidor
git pull origin master
2)
Crear archivos nuevos
vim nuevo.txt
Agregar archivos nuevos al indice
git add .
Modificar archivos existentes
vim README
3)
Grabar los cambios
git commit -a -m 'Mensaje descriptivo de los cambios'
4)
Publicar los cambios en el repositorio compartido
git push origin master
Interfaces para gestión de permisos
GITLAB - Es el de github - Soporta LDAP y grupos la versión paga - Se puede configurar autenticación LDAP en la versión libre pero hay que revisar si tiene manejo de permisos
GITOLITE - Se maneja con claves rsa - Se configura a través de un repositorio de git - Se puede integrar LDAP pero con una modificación a través de apache + usuario genérico
GITOSIS - Se maneja con claves rsa - Se configura a través de un repositorio de git - Complicado integrar LDAP