Está en la página 1de 7

1.

-Instalar GIT y Git-flow


En el servidor:
--------------
# sudo apt-get install git ( o puede ser git-core )
# wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/ra
w/develop/contrib/gitflow-installer.sh | sudo bash
En el servidor:
--------------
Crear una carpeta especifica para el repositorio
$ mkdir nuestro-proyecto
$ cd nuestro-proyecto
$ git init
$ git-flow init
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? [] v
Al ejecutar el ltimo comando, entramos en un men interactivo que nos va preguntand
o las opciones que aparecen arriba:
Al inicializar git-flow, nos pregunta el nombre de la rama de produccin y de la r
ama de desarrollo (master y develop respectivamente). Seleccionamos los nombres
por defecto.
Despus nos preguntar los prefijos que asignar a las ramas de tipo feature, release,
hotfix y support. Volvemos a seleccionar los nombres por defecto.
Por ltimo, nos pregunta el prefijo que queramos utilizar para etiquetar las versi
ones. Puede colocarse "v" para que queden asi: v-0.1
En el cliente:
-------------
(Debe instalarse tambien. Mismos 2 pasos que para el servidor).
Ir o crear la carpeta donde se quiere descargar el repositorio
$ cd nuestro-proyecto
Clonar el repositorio (servidor de ejemplo: 192.168.0.1) (Aqui descargamos la ul
tima version)
$ git clone usuario@192.168.0.1:/home/usuario/nuestro-proyecto
Teclear la clave del usuario ssh (debe existir en el servidor).
///***********************************////
///***** ACTUALIZACION DIC/2013 ******////
///***** EN EL SERVIDOR **************////
mkdir proyecto.git/
cd proyecto.git/
git init
git-flow init
git config core.sharedrepository true
git config receive.denyCurrentBranch warn
chmod -R 777 .git/*
git checkout master
cd ..
*** DESPUES QUE ACTUALICEN Y CHEQUEAR ***
cd /opt/git/proyecto.git/
git branch -av
git checkout master
git merge develop
///**********************************////
///***** EN LOS CLIENTES ************////
git config --global user.name "Nombre"
git config --global user.email "correo@dominio"
git clone usuario@192.168.10.231:/carpeta/proyecto.git
cd proyecto/
git checkout master
nano commits.txt
git branch -av
git remote -v
git add .
git tag v-0.1
git commit -a -m "Primer Commit"
git diff
git status
git push origin v-0.1
**** SI LO ACTUALIZO OTRO, PRIMERO DESCARGAR ****
git pull
nano commits.txt
git add .
git commit -a -m "Tercero Commit"
git diff
git status
git push
git log --stat develop
///**********************************////
Comandos funcionales para trabajar como programador en la rama DEVELOP!!!
La rama MASTER es la definitiva. Solo se actualiza cuando los cambios
estan verificados y funciona todo bien.
155 cd www/mis-proyectos
156 git clone atlante@192.168.10.250:/home/sysadmin/git/proyecto-ceunefa
158 cd proyecto-ceunefa/
159 git branch -av
ME CAMBIO A LA RAMA DEVELOP PARA TRABAJAR DESDE AHI*****
160 git checkout develop
161 git branch -av
COPIE LA CARPETA ESTILOS********************************
Y AGREGO AL INDICE LOS ARCHIVOS QUE COPIE O MODIFIQUE
163 git add .
164 git commit -a -m "Se agrego la carpeta de estilos"
165 git diff
166 git status
ACTUALIZO LA RAMA DEVELOP DEL SERVIDOR******************
SUBIENDO LOS ARCHIVOS QUE AGREGUE
167 git push
168 git branch -av
COPIE LA CARPETA MODELO*********************************
169 git add .
170 git diff
171 git commit -a -m "Se agrego la carpeta modelo de la BD"
172 git status
173 git push
174 git branch -av
COPIE LA CARPETA INC************************************
175 git add .
176 git commit -a -m "Se agrego la carpeta inc con imagenes y scripts"
177 git diff
178 git status
179 git push
COPIE LA CARPETA CLASES*********************************
180 git add .
181 git commit -a -m "Se agrego la carpeta de clases"
182 git diff
183 git status
184 git push
COPIE LA CARPETA CONTROLADORES**************************
185 git add .
186 git commit -a -m "Se agrego la carpeta de controladores. Primer modulo. S
eguridad y usuarios."
188 git diff
189 git status
190 git push
COPIE LA CARPETA VISTAS*********************************
191 git add .
192 git commit -a -m "Se agrego la carpeta de vistas. Pantalla Principal, Ini
cio de sesion y Seguridad de usuarios"
193 git diff
194 git status
195 git push
AQUI ELIMINE 2 ARCHIVOS*********************************
196 git diff
197 git status
198 git commit -a -m "Se eliminaron 2 archivos. modeloPersonal.php y menu.ope
rador.php"
199 git push
200 git branch -av
SE DEBERIA SUBIR SOLO LA RAMA DEVELOP*******************
Y DEJAR QUE EL ADMINISTRADOR MEZCLE LAS RAMAS
DESPUES DE HABER APROBADO LOS CAMBIOS
PERO AQUI ME CAMBIE A LA RAMA MASTER
Y LA MEZCLE CON LA RAMA DEVELOP
201 git checkout master
202 git merge develop
203 git commit -a
204 git diff
205 git push
CUANDO HICE PUSH AQUI ME DIO UN ERROR.
EN LA PARTE SIGUIENTE DIGO COMO SOLUCIONARLO
////*******************************////
Si al hacer push a la rama MASTER sale este error:
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repositor
y
remote: error: is denied, because it will make the index and work tree inconsi
stent
remote: error: with what you pushed, and will require 'git reset --hard' to ma
tch
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable
t
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing in
to
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in so
me
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, s
et
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
En el servidor hay que ejecutar este comando:
git config receive.denyCurrentBranch warn
Y "al parecer" cada vez que se haga un push por alguien
ejecutar este otro:
git reset --hard
////*****************************//// DIC 2013
198 sudo apt-get install git-core
199 git config --global user.name "esfinge"
200 git config --global user.email "papulido@unefa.edu.ve"
201 git clone esfinge@192.168.10.231:/var/www/unefa_ce
202 sudo chmod 777 -R unefa_ce/
204 cd unefa_ce/
206 nano README.md
207 git checkout develop
208 git branch -av
209 git remote -v
210 git add .
211 git commit -a -m "Modificacion de prueba al archivo README.md"
212 git diff
213 git status
214 git push
215 git status
*******************
Se va a fusionar la rama desarrollo en la rama master, nos situamos en la rama m
aster y ejecutamos
001 git checkout desarrollo
002 git rebase master
Este comando rebase mueve todos los commit de la rama desarrollo a continuacin de
l ltimo commit de la rama master. A continuacin actualizamos el apuntador master
.
001 git checkout master
002 git merge desarrollo
Realiza un fast-forward y el apuntador master se sita en el ltimo commit, ahora te
nemos un historial lineal.
- See more at: http://rooteando.com/ramas-y-fusiones-en-git#sthash.4YFXCkm7.dpuf
////********************************////
Mas comandos
**********************
Descargar los ultimos cambios. Todos los tuyos se perderan
$ git fetch origin
$ git reset --hard origin/master
Igual que git push
$ git merge origin
Descartar cambios locales
$ git stash
Agregar otro archivo despues del comando: git commit
$ git add archivo_olvidado
$ git commit --amend
Entrar a la carpeta
$ cd nuestro-proyecto
Utilizar el repositorio
Hacer cambios: crear archivos, copiar carpetas, modificaciones, etc.
Ver las ramas existentes:
$ git branch -av
Ver en cual rama estoy:
$ git branch
Crear una rama (ej. develop (que ya deberia existir)):
$ git branch develop
Para saltar a una rama (ej. develop):
$ git checkout develop
Crear una rama a partir de otra (se creo feature-H-1):
$ git checkout -b feature-H-1 develop
Hacer el primer commit
$ git commit -a -m "Primer commit"
Hacer el primer push y crear la rama 'master'
$ git push origin master
Agregar un repositorio remoto
$ git remote add web 192.168.10.231:/opt/git/unefa_ce.git
Eliminar un repositorio remoto
$ git remote rm repositorio

*****************************
Haciendo pruebas:
$ git branch -av
* master b7bb737 Initial commit
remotes/origin/HEAD -> origin/master
remotes/origin/develop b7bb737 Initial commit
remotes/origin/master b7bb737 Initial commit
$ git branch develop
$ git branch
develop
* master
$ git checkout -b feature-H-1 develop
Switched to a new branch 'feature-H-1'
$ git branch -av
develop b7bb737 Initial commit
* feature-H-1 b7bb737 Initial commit
master b7bb737 Initial commit
remotes/origin/HEAD -> origin/master
remotes/origin/develop b7bb737 Initial commit
remotes/origin/master b7bb737 Initial commit
Aqui hice cambios en la carpeta del proyecto
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff feature-H-1
Already up-to-date.
$ git branch -d feature-H-1
Deleted branch feature-H-1 (was b7bb737).
$ git-flow feature start H-2
Switched to a new branch 'feature/H-2'
Summary of actions:
- A new branch 'feature/H-2' was created, based on 'develop'
- You are now on branch 'feature/H-2'
Now, start committing on your feature. When done, use:
git flow feature finish H-2
Aqui hice cambios en la carpeta del proyecto
Ahora preparo la version 1.0
$ git flow release start 1.0
Switched to a new branch 'release/1.0'
Summary of actions:
- A new branch 'release/1.0' was created, based on 'develop'
- You are now on branch 'release/1.0'
Follow-up actions:
- Bump the version number now!
- Start committing last-minute fixes in preparing your release
- When done, run:
git flow release finish '1.0'
$ git checkout master
$ git push
***************************+*+
Cmo borrar el ltimo commit en git
Dic 16 2010
En este post se explica con dos sencillos comandos como borrar un commit de git
tanto si no se ha hecho un push como si ya se ha hecho.
El comando a ejecutar en git para borrar un commit del que todava no se ha hecho
push es:
git reset --hard HEAD~1
Como apunte tener en cuenta que HEAD~1 es una abreviatura del ltimo commit antes
del HEAD. Con el hard aseguramos que cualquier cambio hecho se pierda al volver a
la versin anterior. En vez de hard se puede usar soft para evitar perder estos cam
bios, que aparecern como cambios a los que se debe hacer un commit.
Si ya se ha hecho un push del commit que se quera borrar, lo mejor es hacer un nu
evo commit que lo borre mediante un `revert'. De este modo aseguramos que si alguien
ya se ha bajado el commit que queramos borrar, pueda arreglar el problema simple
mente haciendo un pull. Por tanto, el comando a ejecutar para borrar un commit a
l que ya se ha hecho un push es:
git revert HEAD
***************************
Antiguos comandos:
293 mkdir serviciotic
294 cd serviciotic
295 git init
296 echo "Servicio TIC" > Leeme.txt
297 git add Leeme.txt
298 git commit -m 'versin inicial del proyecto'
299 git status
300 cp ../serviciotic.primera.version/principal.php principal.php
301 git status
302 cat .gitignore
303 ls -l
304 echo "*~" > .gitignore
305 git status
306 git diff
307 git commit
308 cd ..
309 cd serviciotic
310 git remote add origin atlante@192.168.0.250:/home/atlante/git/serviciot
ic.git
311 git push origin master
312 ssh atlante@192.168.0.250
313 git remote
314 git remote rm origin
315 cd ..
316 scp -r serviciotic atlante@192.168.0.250:/home/atlante/git/
317 ssh atlante@192.168.0.250
318 cd serviciotic
319 git status
320 git rm principal.php
321 ls -l
322 nano principal.php
323 git status
324 git diff
325 git remote add origin atlante@192.168.0.250:/home/atlante/git/serviciot
ic
326 git commit -m 'versin inicial del proyecto'
327 git remote
328 git push origin develop