Crear y usar un repositorio git en un servidor
Índice
- 1. En el servidor
- 2. En local (mi primera vez)
- 3. En local (las siguientes veces)
- 4. Bajar git:
- 5. Permitiendo http
- 6. Estudiando cosas que pasan en tu propio repositorio
- 7. Eliminar ficheros
- 8. Mover/renombrar ficheros
- 9. Un par de apuntes rápidos para deshacer cambios
- 10. Ramas
- 11. Git Submodules: Añadir, Usar, Eliminar y Actualizar
- 12. Una gui
- 13. Recursos
- 14. Licencia
1 En el servidor
cd ~ mkdir repository.git cd repository.git git --bare init git config core.sharedRepository true
Si aptece crear el repositorio a través de github, o gitlab vía interfaz web puedes obviar este paso.
2 En local (mi primera vez)
mkdir repository cd repository git init git add * git commit -m "Initial import" git remote add origin git+ssh://user@server/home/user/git/repository.git git push origin master
3 En local (las siguientes veces)
cd repository git add * git commit -m "Initial import" git push
4 Bajar git:
Si tienes tu propio servidor …
git clone git+ssh://user@server/home/user/git/repository.git
Si por ejemplo usas github …
git clone https://github.com/davidam/damenumpy.git
5 Permitiendo http
Una vez realizados los pasos anteriores se puede habilitar usar git con http en tu servidor y cliente. Este paso obviamente no es necesario si usas github, gitlab, savannah, …
5.1 En el servidor
$ cd /var/www/ $ git clone --bare /home/user/git/repository repository.git $ cd drupal-el.git $ mv hooks/post-update.sample hooks/post-update $ chmod a+x hooks/post-update $ git update-server-info
5.2 En el cliente
$ git clone http://server/repository.git
6 Estudiando cosas que pasan en tu propio repositorio
$ git pull . $ git status . $ git log fichero $ git diff 84de2396c3f0fcdc9994028b5bf5f0005c763496 3c933adaf627bc8a58cfefb62ff0f2d5df640673 fichero
7 Eliminar ficheros
$ git rm file $ git commit -m "delete file" file $ git push
8 Mover/renombrar ficheros
$ git mv fileold folder $ git commit -m "folder: moving fileold" fileold filenew $ git push
9 Un par de apuntes rápidos para deshacer cambios
Revertir ficheros no commiteados
$ git checkout -- file
Deshacer el último commit no enviado con push:
$ git reset --hard HEAD~1
Revertir el último cambiado, al que se le ha hecho push
$ git push -f origin last_commit:branch
10 Ramas
10.1 Crear ramas
Los pasos son:
- Crear la rama
- Usar la rama
- Enviar los cambios al servidor
$ git checkout -b [name_of_your_new_branch] $ git checkout [name_of_your_new_branch] $ git push origin [name_of_your_new_branch]
10.2 Cambiando de ramas
Es posible que tengamos varias ramas por ejemplo production (prod) y development (dev). Si estamos en master y queremos pasar los cambios a production se puede hacer lo siguiente:
$ git branch origin/prod # en caso de no tenerla se crea la rama origin/prod $ git branch -a # comprobar que realmente estamos en master $ git branch --track prod origin/prod # si no lo tenemos ya asocia prod a origin/prod $ git checkout prod # cambiamos a la rama prod $ git merge dev # se merguean los cambios desde dev a prod $ git push # se suben los cambios
10.3 Borrar ramas
Para borrar una rama son necesarios dos pasos:
- Borrar la rama en el sistema de ficheros
- Publicar el cambio en el servidor
$ git branch -d [name_of_your_new_branch] $ git branch -D [name_of_your_new_branch] # Si necesitas forzar el borrado (no recomendado) $ git push origin :[name_of_your_new_branch]
10.4 Clonar ramas
$ git clone -b [name_of_your_branch] [name_of_your_repository]
10.5 Listar ramas
$ git branch -a # list branches in local repository $ git branch -r # list branches in remote repository
11 Git Submodules: Añadir, Usar, Eliminar y Actualizar
11.1 Añadir
$ git submodule add git@mygithost:billboard lib/billboard
Ver lo que has hecho
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: .gitmodules # new file: lib/billboard # $ cat .gitmodules [submodule "lib/billboard"] path = lib/billboard url = git@mygithost:billboard
11.2 Usando submódulos
$ git submodule init Submodule 'lib/billboard' (git@mygithost:billboard) registered for path 'lib/billboard' $ git submodule update Initialized empty Git repository in ~/git_dev/SampleTheme/lib/billboard/.git/ remote: Counting objects: 26, done. remote: Compressing objects: 100% (22/22), done. remote: Total 26 (delta 5), reused 0 (delta 0) Receiving objects: 100% (26/26), 17.37 KiB, done. Resolving deltas: 100% (5/5), done. Submodule path 'lib/billboard': checked out '1c407cb2315z0847facb57d79d680f88ca004332'
11.3 Eliminando submódulos
$ git submodule rm lib/billboard
11.4 Actualizando submódulos
$ git submodule init $ git submodule update $ git pull
12 Una gui
A quien no le guste el emacs es un animal, pero puede usar algo como lo siguiente:
$ sudo apt-get install git-cola
Y a quien le guste le pueden servir estos atajos, por ejemplo:
C-x v v (siguiente acción. Ej: add, commit) C-x v = (diff) C-x v d (status)
13 Recursos
14 Licencia
Copyright (C) 2013 David Arroyo Menéndez Se permite copiar, distribuir y/o modificar este documento bajo los términos de la GNU Free Documentation License, Version 1.3 o cualquier versión publicada por la Free Software Foundation; sin Secciones Invariantes y sin Textos de Portada o Contraportada. Una copia de la licencia está incluida en GNU Free Documentation License.