Git
Install locally
[+]General
Despúes de ingresar con su cuenta a http://gfif.udea.edu.co:3000(Para proyectos en github o otro repositorio siga las instrucciones del sitio y pase directamente al item "Ciclo de trabajo corto")
- Ingrese las claves ssh de acuerdo a estas instrucciones
- Para ello ejecute en la terminal de línea de comandos de su equipo el comando (Pulsando la tecla <Enter> en todas las preguntas):
cd ~/.ssh ssh-keygen -t rsa cat id_rsa.pub
- Copie y pegue en el campo correspondiente de acuerdo a estas instrucciones
- Para ello ejecute en la terminal de línea de comandos de su equipo el comando (Pulsando la tecla <Enter> en todas las preguntas):
- siga el link de algún proyecto, por ejemplo "msc10"
- En la pestaña 'Show' copie el url de la caja de "SSH-HTTP"
- Cree una copia local del repositorio
git clone git@gfif.udea.edu.co:msc10.git
- Para copiar todas las ramas: Liste primero las ramas ocultas y continue con las instrucciones para copiar ranas específicas. En particular, para un rama llamada experimental
git branch -a
crea una copia local de la rama y hace el checkout a dicha rama.git checkout -b experimental origin/experimental
- Cree una copia local del repositorio
- Si va a crear un nuevo proyecto, por ejemplo msc11, siga las demás instrucciones de la página para hacer el primer commit al repositorio DENTRO DEL DIRECTORIO (carpeta) que va a subir al repositorio:Para usar git (sudo apt-get install git-core) se recomienda mirar los tutoriales disponibles en internet, por ejemplo este. Algunos comandos útiles:
git init git add . git commit -m "initial import" git remote add origin git@gfif.udea.edu.co:msc11.git git push origin master
- Para enviar un cambio a uno o más archivos donde el último comando envía los cambios al servidor especificado en .git/config
git commit -a git push origin master
- Para añadir un nuevo archivo al repositorio creado
git add nuevo_archivo.py git commit -m 'nuevo archivo' git push origin master
- Para actualizar en su copia local del repositorio los cambios hechos por otros al respositorio principal, use
git pull
- Para administrar localmente su repositorio desde un entorno gráfico puede usar (sudo apt-get install qgit):
qgit .
- Ciclo de trabajo corto:
#0. Bajarse el repositorio por primera vez desde el server: git clone git:__server-info___ #O crear un repositiorio nuevo con '0git init' and 'git add' . #0. cambiarse al directorio del repositorio creado: cd newrepo #1. modificar los archivos necesarios #1.1 Añanadir los archivos necesarios git add new_file #1.2 Guardar los cambios y regresar al último commit git stash #1.3 Obtener los últimos cambios del repositorio git pull origin master #1.4 Implementar sus cambios en la última versión git stash apply #2. Registrar localmente los cambios: git commit -a -m"mensaje" #3. subir los cambios de nuevo al server: git push origin master #Tiempo después.... #Traer los cambios del server git pull #verficar cambios en el server git log #repetir los pasos 1.-3.
git commit -am 'My changes' // While i am working on my machine // <-- My colleague did a "git push" here git pull --rebase // So before I can push, i need to rebase // Another syntax: git pull --rebase origin my_branch git push // Now my changes are on top
- Configurar un repositorio privado
$ git clone --bare /home/user/yourepo/.git /opt/git/yourrepo.git $ chmod g+w /opt/git/yourrepo.git $ chown -R user:gitlocal /opt/git/yourrepo.git #To interact with the remote repository (only from the original respository): $ git remote add origin gfif.udea.edu.co:/opt/git/yourrepo.git #From another server or directory: $ git clone gfif.udea.edu.co:/opt/git/yourrepo.git #From a local dir $ git clone opt/git/yourrepo.git #Clone one specific branch $ git clone -b branch_name opt/git/yourrepo.git # make changes as before, and git push like before.
- Ciclo de trabajo "profesional". Asumiendo que ya se tiene el repositorio local clonado
#1. Listar las ramas existentes: git branch -a #2. cree su rama de trabajo para no estar tocando la rama "main": git branch bname #2. Cambiarse a la rama bname: git ckeckout bname #3.1 muestra en que rama está: git status #3.2 Sincronize con la rama master: git merge master #4. Implementa los cambios localmente: git commit -a -m"mensaje" #5. Envía los cambios al server: git push origin bname #5.1 Repita 4., 5. las veces que necesite #6. Actualización de la rama principal #6.1 informe de actualización desde el server: git remote update #6.2 aplique actualización desde el server y de ser necesario: # arregle los conflictos con la rama 'bname' git pull origin master #6.3 Cambie al branch principal git checkout master #6.3 Aplique los cambios al master localmente: git merge bname #6.4 Aplique el merge al server: git push origin master #7. Espere cambios por otros usuarios #7.1 Obtenga los cambios de otros usuarios: git pull #7.2 Repita los pasos 2. a 7. las veces que se requiera. #8. Resolver conflictos #8.1 Ver lista de commits: git log #8.2 Devolverse a un commit (WARNING: data lost): git reset --hard #log #9. Borrar la rama: git branch -d bname