Crear y usar un repositorio git en un servidor

Índice

Volver a davidam.com

1 En el servidor

cd ~
mkdir repository.git
cd repository.git
git --bare init
git config core.sharedRepository true

2 En local:

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 Bajar git:

git clone git+ssh://user@server/home/user/git/repository.git

4 Permitiendo http

Una vez realizados los pasos anteriores se puede habilitar usar git con http

4.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

4.2 En el cliente

$ git clone http://server/repository.git

5 Estudiando cosas que pasan en tu propio repositorio

$ git pull
$ git status
$ git log fichero
$ git diff 84de2396c3f0fcdc9994028b5bf5f0005c763496 3c933adaf627bc8a58cfefb62ff0f2d5df640673 fichero

6 Eliminar ficheros

$ git rm file                                                                   
$ git commit -m "delete file" file                                              
$ git push

7 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

8 Cambiando de ramas

Es posible que tengamos varias ramas por ejemplo production (prod) y master. 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 master             # se merguean los cambios desde master a prod
$ git push                     # se suben los cambios

9 Git Submodules: Añadir, Usar, Eliminar y Actualizar

9.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

9.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'

9.3 Eliminando submódulos

$ git submodule rm lib/billboard

9.4 Actualizando submódulos

$ git submodule init
$ git submodule update
$ git pull

10 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)

11 Recursos

12 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.

200px-GFDL_Logo.svg.png

Fecha: 11/11/2012

Autor: David Arroyo Menéndez

Created: 2017-01-26 jue 18:00

Emacs 24.4.1 (Org mode 8.2.10)

Validate