Git

Install locally

[+]

General

Despúes de ingresar con su cuenta a http://gfif.udea.edu.co:3000(external link)
(Para proyectos en github(external link) o otro repositorio siga las instrucciones(external link) del sitio y pase directamente al item "Ciclo de trabajo corto")
  • Ingrese las claves ssh de acuerdo a estas instrucciones(external link)
    • 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(external link)
  • 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
      git branch -a
      y continue con las instrucciones(external link) para copiar ranas específicas. En particular, para un rama llamada experimental
      git checkout -b experimental origin/experimental
      crea una copia local de la rama y hace el checkout a dicha rama.
  • 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:
    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 usar git (sudo apt-get install git-core) se recomienda mirar los tutoriales disponibles en internet, por ejemplo(external link) este(external link). Algunos comandos útiles:

  • Para enviar un cambio a uno o más archivos
    git commit -a
    git push origin master
    donde el último comando envía los cambios al servidor especificado en .git/config

  • 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.
En lugar de los pasos 1.2 a 2: Se puede usar git pull --rebase(external link)
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
    private
    $ 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



Specific git tricks

[+]

GitHub

[+]


El documento original está disponible en http://clustercien.udea.edu.co/web/tiki-index.php?page=Git