manejar proyectos con gitlab (subir proyectos y sincronizarlos)
Pasos para crear tu cuenta gitlab y subir tu proyecto
- registrarte en https://gitlab.com/users/sign_in
- al llenar tus datos de registro te enviaran un email de confirmación a tu correo electrónico
- al presionar click en el enlace de confirmación te llevara a la siguiente pagina, y presionas el botón de New Proyect
- proyect path: va el nombre de nuestro proyecto no puede tener espacios
- description: una breve explicación de lo que realiza nuestro proyecto
- visibillity level: son los distintos niveles de visibilidad de tu proyecto y acceso a el para descarga
- Inserta todos tus datos y Presionas Create Proyecto
- ok, ya creamos nuestro proyecto en gitlab, ahora hay un detalle, que no tenemos una llave ssh en nuestro gitlab por eso hay un mensaje que nos pide agregar una ssh key, bueno presionamos en add an SSH Key
- ahora es necesario que abran un terminal en su Gnu/linux y ejecuten los siguiente: ssh-keygen
- Terminal:
ssh-keygen
- te preguntara si quieres registrar en la ruta /home/TU_USUARIO/.ssh/
- Te pedirá que introduzca una clave (esta clave la usaras para conectarte)
- te emitirá un mensaje que logro crear la llave y la ruta donde esta creada /home/TU_USUARIO/.ssh/
ahora para obtener la key(llave) esta es la forma mas facil:Terminal:sudo apt-get install xclip
Terminal:xclip -sel clip < ~/.ssh/id_rsa.pub
oTerminal:cat ~/.ssh/id_rsa.pub
y con eso ya tienes en tu portapapeles la información de tu llave solo de pegar en el gitlab
- buscas con el file manager de tu Gnu/linux en /home/TU_USUARIO/.ssh/
- Coloca un titulo de referencia en Title
- ahora copia lo que contiene tu archivo id_rsa.pub en el campo Key
- listo ya agregamos correctamente la key
- ahora es necesario instalar el paquete git y para eso debes abrir una consola y ejecutar los siguienteTerminal:
sudo apt-get install git
te preguntara si deseas continuar la instalación y presiones que S
- luego que finalice la instalación vamos a ejecutar los siguientes comandos de gitlab
- OJO ESTE ES MI GITLAB USTEDES TIENEN OTRO USUARIO Y EMAIL
Terminal:
git config --global user.name "zcqopx"
Terminal:
git config --global user.email "zcqopx@gmail.com"luego
- Create a new repository
Terminal:
git clone git@gitlab.com:zcqopx/pruebaparablogger.git
- el comando anterior nos sincroniza con el proyecto gitlab creado.
- Entras en la carpeta del proyecto
Terminal:
cd pruebaparablogger
- Creas el archivo README.md
Terminal:
touch README.md
- listas los archivos para verificar que se crearon
Terminal:
ls
- ahora aunque no es necesario que lo hagas yo cree 2 archivos estilos.css y jquery.js para que vean como agregar mas archivos aparte del README.md al gitlab
- lista los archivos dentro de la carpeta
Terminal:
ls
- se agregan a la cola de subida o archivos a sincronizar con gitlab
Terminal:
git add README.md
Terminal:
git add estilos.css
Terminal:
git add query.jssi quieres añadirlos todos con un solo comando usa:
Terminal:
git add --all
- aplico los cambios en el README de los archivos a subir o sincronizar
Terminal:
git commit -m "add README"
- Subir Sincronizar los archivos en gitlab pedira la clave ssh que escribiste cuando ejecutaste el ssh-keygen ahora para realizar la acción de subida y sincronización con gitlab ejecutar:
Terminal:
git push -u origin master
- ve a Proyect selecciona tu proyecto y en la opción de file podrás visualizar tus proyectos
CREAR RAMAS
- Hay 2 cosas muy importante que debes tener en cuenta
- Branch (Ramas) ramas de desarrollo
Cada repositorio tendrá al menos 2 branches (Ventajas de usar un branch develop):
• master <- Versiones que fueron testeadas y tienen un tag asignado.
• develop <- Modificaciones en progreso, el contenido de esta rama puede no funcionar.
Luego opcionalmente pueden existir los siguientes branch:
• feature-* <- Características especiales, por ejemplo 'feature-soporte_efi'
• hotfix-* <- Corrección de bugs, por ejemplo 'hotfix-segfaul_al_abrir'
• release-* <- Últimos comits antes de crear un tag
- Crear branch develop y posicionarse en ese branch:
Terminal:
git checkout -b develop
Terminal:
git checkout develop
Terminal:
git add --all
Terminal:
git commit -m "original"
Terminal:
git push -u origin develop # El -u solo es necesario en el primer pushsi quieres eliminar el branch creado usa
Terminal:
git push origin --delete develop
- Con los comandos anteriores ya tendras sincronizados tu archivos en el branch (rama) develop
- ahora para agregar todos los archivos modificados y sincronizarlos al repositorioTerminal:
git add --all
Terminal:git commit -m "prueba blogger"
Terminal:git push origin develop
- de igual forma lo puedes hacer con master pero es mas recomendable subir siempre en develop y a master cuando sepas que ya esta bien testeado
si deseas sincronizar en otra computadora por ssh-key
#creas la ssh-key la agregas como en los pasos anteriores y ejecutas los comandosTerminal:git config --global user.name "zcqopx"
Terminal:git config --global user.email "zcqopx@gmail.com"
Terminal:git clone git@gitlab.com:zcqopx/pruebaparablogger.git
#entramos en la carpeta del proyecto antes creadoTerminal:cd existing_folder
Terminal:git init #inicializamos git
#añadimos el repoTerminal:git remote add origin git@gitlab.com:zcqopx/pruebaparablogger.git
ahora sincronizamos el repo remoto con el localTerminal:git fetch
#o puede seleccionar directamete el branchTerminal:git fetch origin test
#al final nos mostra lo siguiente- * [new branch] develop -> origin/develop
* [new branch] master -> origin/master
* [new branch] test -> origin/test
y seleccionamos el que deseamos sincronizar
ejemplo
Terminal:
git checkout test
- SUBIR ARCHIVOS EN UN PROYECTO YA CREADO
logearnos en la configuracion local de nuestra pcTerminal:git config --global user.name "zcqopx"
Terminal:git config --global user.email "zcqopx@gmail.com"
OJO ESTE ES MI GITLAB USTEDES TIENEN OTRO USUARIO Y EMAIL
#entramos en la carpeta del proyecto antes creado
OJO es importante tener en cuenta que vamos primero a obtener todos los archivos remotos si hay archivos modificados en el folder que crearemos a continuacion se perderarn, añadirlos despues del paso de checkoutTerminal:cd existing_folder
#inicializamos gitTerminal:git init
#añadimos el repoTerminal:git remote add origin git@gitlab.com:zcqopx/pruebaparablogger.git
#hacemos pull repoTerminal:git pull origin
#sincronizamos con nuestros repo en la rama (branch) developTerminal:git fetch origin develop
#sincronizamos con nuestros repo en la rama (branch) developTerminal:git checkout -f develop
AHORA SI PUEDEN AÑADIR LOS ARCHIVOS MODIFICADOS PARA SUBIR AL REPO SINCRONIZADO
#añadimos todos los archivos dentroTerminal:git add --all
#realizamos un commit(explicación de la subida o cambios en el repo)Terminal:git commit -m "desarrollador cirel ramos"
#subir los archivos en el repo con la rama developTerminal:git push origin develop
COMPARAR ARCHIVOS DE UN PROYECTO LOCAL CON EL REMOTO EN GIT
Terminal:
git diff
DESCARGAR UN REPO ACTUALIZAR UNA RAMA
ten en cuenta que esto es para un directorio sin archivos comenzando con
Terminal:
git init
Terminal:
git remote add origin git@gitlab:tuproyecto
la idea final de esto es que de repente tienes tu archivos en otra carpeta ya bien modificados pero quieres subirlos sin dañar el trabajo de otros o el tuyo mismo, creas una nueva carpeta te bajas el repo y realizas los pasos para subirlo como se debe.
podemos realizar un git pull general y nos descargara todas las ramas(branchs) del repositorio
Terminal:
git pullo seleccionar una en particular
Terminal:
git pull developahora realizamos fetch de la rama o general
Terminal:
git fetch origin develop
y con el checkout verificamos los archivos locales y los mostramos
Terminal:
git checkout develop
ahora si añadimos los archivos modificados y luego procedemos a ejecutar los pasos para la subida empezando por el siguiente
Terminal:
git add -uó
Terminal:
git add --all
Terminal:
git commit -m "fetch: inicio subida"
Terminal:
git push origin developlisto con eso deberia tener tu repo actualizado
REALIZAR UN MERGE DE UNA RAMA
Terminal:
git checkout master
Terminal:
git pull origin master
Terminal:
git merge testó para forzar al merge a remplazar todo sin resolver conflictos
Terminal:
git merge -s ours
Terminal:
git push origin master
SI QUIERES RESTAURAR LOS ARCHIVOS DEL REPO SOBRE LOS LOCALES
Terminal:
git fetch origin master
Terminal:
git reset --hard origin/master
SI QUIERES RESTAURAR ARCHIVOS ESPECIFICOS
restaurar a un commit especifico
Terminal:
git checkout 9b059ae routes/web.php
restaurar a un commit especifico
Terminal:
git checkout origin/Feature-T11-add-filter-product routes/web.php
SI QUIERES MIGRAR DE UNA RAMA A OTRA SIN REALIZAR MERGE, de master a develop
Terminal:
git branch -f develop master
Terminal:
git push origin master:develop
REALIZAR UN MERGE CUANDO: “Already up-to-date”
personalmente prefiero borrar la carpeta donde tengo el repo en mi pc y luego realizar el merge
Terminal:
git init
Terminal:
git remote add origin git@gitlab.com:root/tu-repo
Terminal:
git pull origin master
Terminal:
git checkout master
Terminal:
git pull origin el-repo-que-quieres-merge
Terminal:
git mergetool
Nota: te recomiendo instalar meld es un excelente gestor para comprar entre los archivos del merge
Terminal:
find -iname "*.orig*" -delete
Terminal:
git checkout el-repo-que-quieres-merge
Terminal:
git merge master
Terminal:
git commit
Terminal:
git push origin el-repo-que-quieres-merge
BORRAR COMMITS REMOTOS
personalmente prefiero borrar la carpeta donde tengo el repo en mi pc y luego realizar el merge
listar los commits
Terminal:
git log --decorate --pretty=format:"%ad %h by %an, %s" --date=iso | sort -r | lessreiniciar localmente el repo al commit en especifico
Terminal:
git reset --hard HEAD~%number%aplicar los cambios
Terminal:
git push origin %rama% -f
FORZAR UN GIT PULL
Ver los Commits es posible que tu local este desactualizado master
Terminal:
git log --decorate --pretty=format:"%ad %h by %an, %s" --date=iso | sort -r | lessreiniciar localmente el repo al commit en especifico
Terminal:
git reset --hard HEADbajar los cambios a los directorios origin del .git
Terminal:
git pull origin
ahora hacer reset en base al master actualizado remoto que seria origin
para que todo sea de forma original, hacemos el git pull normal
Terminal:
git reset --hard origin/master
Terminal:
git pull origin master
Si el .gitignore no funciona
Terminal:
git rm . -r --cached
Terminal:
git add .
Terminal:
git commit -m "fixed untracked files"
Terminal:
git push origin master
verificar si hay un repositorio
Terminal:
git remote -v
Verificar la rama donde estas o el commit
Terminal:
git show --name-status
Terminal:
git show --name-status <commit>
Mostrar los commit y elementos añadidos en cada commit
Terminal:
git show --stat --oneline
o
Terminal:
git log --stat --oneline
Limpiar archivos basura o sin limpiar
Terminal:
git clean -f
Visualizar archivos a Limpiar
Terminal:
git clean -n -f
Limpiar Archivos
comandos utiles
Terminal:
git commit --amend
reescribir el ultimo comit
Terminal:
git add -p
agregar por pedazos o partes codigo al commit
Terminal:
git rebase -i
ordenar o depurar commits
Mostrar Diferencias entre ramas
primero chequeamos las ramas locales y remotas que tenemos
Terminal:
git branch -a
luego seleccionamos la rama local o remota a comparar seguido por 2 puntos entre cada una ejemplo
Version Consolax
Terminal:
git diff master..develop
Version Grafica
Terminal:
git difftool master..remotes/origin/desarrollo
para cambiar la herramienta de comparacion
Terminal:
git difftool --tool-help
Realizar un Merge
ejemplo quiero hacer merge con master y mi rama modificada es develop
Terminal:
git checkout master
Terminal:
git pull origin master
ahora tenemos bien actualizado master, procedemos hacer mergecambiamos a la rama develop
Terminal:
git checkout develop
Sincronizamos con master
Terminal:
git pull origin master
te pedira que confirmes el commit o que resuelvas los conflictos y luego hacer pust
Terminal:
git push origin develop
Configurar para copiar commits a otro repo
Terminal:
git remote add cirelramos git@gitlab.com:cirelramos/blog-production
Terminal:
git push -u cirelramos --all
Terminal:
git push -u cirelramos --tags
borrar ramas locales
Terminal:
git branch | grep -v "master" | xargs git branch -d
BORRAR RAMAS REMOTAS
IMPORTANTE LO QUE ESTA MARCADO EN AZUL SON LAS RAMAS QUE VA A EXCEPTUAR DE LA ELIMINACION
Terminal:
git checkout -f master && git branch -r | grep -v -e master -e stable -e upload-version-laravel-to-7 | cut -d '/' -f2- | xargs git push origin --delete
Comparar cambios de una rama en otra.
tendremos 3 ramas presentes: rama_cambios_nuevos, rama_de_comparacion, master.partiendo de la premisa que ya tenemos modificaciones en rama_cambios_nuevos
Terminal:
git checkout master
Terminal:
git checkout -b rama_de_comparacion
Terminal:
git checkout rama_cambios_nuevos ./ -f
Terminal:
git restore --staged ./
Terminal:
git status | grep "modified:" | cut -d ":" -f2 | xargs grep -L "string_not_exist_in_files"
borrar commits de una rama, supongamos que el commit hasta donde queremos restaurar es c26fbb30
ejecutamos los siguientes comandos en la rama, en este caso seria testTerminal:
git checkout test -f
Terminal:
git pull origin test
Terminal:
git reset --soft c26fbb30
Terminal:
git push origin test -f
los commits posteriores a estaran eliminados del historico del repositorio.
Fuente: https://drive.google.com/file/d/0B-2FDrPc5MapN2Y5cU9QX2lhMGs/view?usp=sharing
Fuente: https://www.atlassian.com/git/tutorials/syncing/git-push
Detallado, claro y fácil... mil gracias!!
ResponderEliminarGracias, lo andaba buscando ¡¡
ResponderEliminarGENIAL !
ResponderEliminarMuy resumido, por lo que es breve, claro y conciso. Gracias.
ResponderEliminarBuenisimo aporte, de principio a fin... Gracias
ResponderEliminarImposible de instalar. No funciona. La explicación no es nada clara.
ResponderEliminary como hago eso sin tanto comando, como elimino y agrego ficheros a mi proyecto?
ResponderEliminares sencillo humberto, solo necesitas modificar los archivos en tu directorio actual luego con el comando "git add --all" se agregan todos los cambios detectados(sea agregar, editar, eliminar el contenido), posterior realizas el "git commit -m 'cambios realizados' " que es una descripcion de la version que subiras a continuacion y con el "git push origin master" subes los cambios al servidor
Eliminartambien hay interfaces en windows bien completas que te facilitan bastante el manejo de los repositorios, suerte y que encuentres algo mas facil jeje
https://www.gitkraken.com
Eliminarhttps://tortoisegit.org/download/
ResponderEliminar