**¡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 os 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