GitHub es una plataforma de desarrollo colaborativo para alojar proyectos utilizando el sistema de control de versiones Git. Se utiliza principalmente para la creación de código fuente de programas de ordenador. El software que opera GitHub fue escrito en Ruby on Rails. Desde enero de 2010, GitHub opera bajo el nombre de GitHub, Inc. Anteriormente era conocida como Logical Awesome LLC. El código de los proyectos alojados en GitHub se almacena típicamente de forma pública.
El 4 de junio de 2018 Microsoft compró GitHub por la cantidad de 7500 millones de dólares, al inicio el cambio de propietario generó preocupaciones y la salida de algunos proyectos de este repositorio, sin embargo no fueron representativos. GitHub continúa siendo la plataforma más importante de colaboración para proyectos Open Source
Para crear un proyecto desde Github hay al menos dos formas de hacerlo
Desde el propio site de Gitub
Desde linea de comandos
Crear un proyecto desde la web de github
Creamos un nuevo repositorio en https://github.com. Le damos nombre, descripción, seleccionamos si va a ser un proyecto publico o privado si es el caso, y dejamos el check de crear README sin marcar. Le damos a crear repositorio y con esto ya tenemos el repositorio donde alojaremos nuestro proyecto.
Crear un proyecto desde la terminal del equipo donde esta el proyecto que queremos subir a github
Nos vamos a la carpeta del proyecto y ejecutamos estos comandos.
para eliminar ficheros al hacer push en vez de git add . usar git add -u
para deshacer un git add . git reset si seguido de git commit ... git reset HEAD~
para deshacer varios commit locales que no han sido pushedados: git reset --hard <codigo del commit> para obtener el codigo hacer: git log para salir del log pulsa q
ERRORES
Ese error que te arroja se refiere a que tu rama remota -alojada en github- posee contenido que tu rama local no contiene.
Si quieres ir un paso más allá y no deseas que se cree ese commit merge automático, existe un método parecido que te crea una estructura de ramas ligeramente diferente, lineal. (Pierdes la trazabilidad de las fusiones de ramas, así que no se recomienda en exceso cuando es trabajo colaborativo… vamos, que hay que saber utilizarlo).
git fetch
git rebase origin/master
git push
Fetch: te trae todos los cambios sin integrarlos (pull los integra, fetch sólo da constancia a tu repositorio local de que en la rama oculta origin/master existe determinado commit). Ósea, digamos que abres ese árbol pero en local, y tu rama de trabajo sigue apuntando a tu commit local y la rama origin/master a los contenidos bajados del remoto. En tu rama de trabajo local no tendrás integrados esos contenidos remotos que sí existen en la rama origin/master. rebase origin/master : apuntas a origin como nuevo punto inicial para tu rama e integras los cambios de tu commit local. (Si existen conflictos, tendrás que resolverlos) push : subes esa integración. No se sube tu commit local original, sino la mezcla de ambos.
Dejando una estructura similar a esta, todos al mismo nivel:
º Commit X (previo commit al error) º Commit 1 (el que existe en remoto y no tienes en local) º Commit 3 (el merge de commit 1 + tu commit local)
Con el ejemplo del gráfico, tu local es el color verde; has seguido desarrollando, mientras paralelamente en la rama azul (remoto) existen otros cambios que no posees.
Como indica el error, te sugiere que primero integres esos cambios en tu rama local, haciendo un git pull. Si integras los cambios y si no existen conflictos a corregir, se creará automáticamente un último commit con el merge de ambas ramas. Si existen conflictos -te lo indicará- deberás resolverlos antes y luego se creará el commit de merge. Tras ello podrás hacer un git push sin problema.
Eso dejará una estructura de ramas similar a esto (imagínate el commit X abriéndose en 2 y volviéndose a cerrar al llegar al commit merge).
º Commit X (previo commit al error) ºº Commit 1 (el que existe en remoto y no tienes en local) ºº Commit 2 (el que existe en local y contiene commit X, pero no commit 1) º Commit 3 (el merge de commit 1 + commit 2)
GitHub es una plataforma de desarrollo colaborativo para alojar proyectos utilizando el sistema de control de versiones Git. Se utiliza principalmente para la creación de código fuente de programas de ordenador. El software que opera GitHub fue escrito en Ruby on Rails. Desde enero de 2010, GitHub opera bajo el nombre de GitHub, Inc. Anteriormente era conocida como Logical Awesome LLC. El código de los proyectos alojados en GitHub se almacena típicamente de forma pública.
El 4 de junio de 2018 Microsoft compró GitHub por la cantidad de 7500 millones de dólares, al inicio el cambio de propietario generó preocupaciones y la salida de algunos proyectos de este repositorio, sin embargo no fueron representativos. GitHub continúa siendo la plataforma más importante de colaboración para proyectos Open Source
Para subir un proyecto en Github hay al menos dos maneras de hacerlo
Desde el interfaz grafico de la web de github
Desde linea de comandos
Crear un prooyecto desde la web de Github
Creamos un nuevo repositorio en https://github.com. Le damos nombre, descripción, seleccionamos si va a ser un proyecto publico o privado si es el caso, y dejamos el check de crear README sin marcar. Le damos a crear repositorio y con esto ya tenemos el repositorio donde alojaremos nuestro proyecto.
Crear un proyecto desde la terminal del equipo donde esta el proyecto que queremos subir a github
Nos vamos a la carpeta del proyecto y ejecutamos estos comandos.
Para eliminar ficheros al hacer push en vez degit add .usar git add -u
para deshacer un git add . git reset si seguido de git commit ... git reset HEAD~
Para deshacer varios commit locales que no han sido pushedados: git reset --hard <codigo del commit> Para obtener el codigo hacer: git log Para salir del log pulsa q
Pequeño tutorial cortesia de volta2016 para uso en terminales linux
CONFIGURACIÓN PROYECTO CON GIT
*Siempre al empezar un proyecto primero primero inspecciono los elementos : ls Luego cd Desktop – y me ubico en la carpeta del proyecto en la cual voy a trabajar git —version git config —global user.name “Volta” git config —global user.email “[email protected]
$ git –version
$ git config --global user.name "TU NOMBRE"
$ git config --global user.email "TU CORREO DE GITHUB"
$ git config --global --list
$ git help [comando a buscar]
*Siempre al empezar un proyecto primero primero inspecciono los elementos : ls Luego cd Desktop – y me ubico en la carpeta del proyecto en la cual voy a trabajar Una vez ubicado en el Desktop inspecciono la carpeta del proyecto cd proyecto web
*clear es para ir borrando todo git add -A Primer commit git commit -m “archivos de proyecto instalados Git log : me muestra Historial del proyecto con los datos del usuario
*Una vez comienzo a editar con el editor de texto puede ser “sublime o atom” Aplico git status para ver que cambio hay, en que archivo y puedo comentar directamente git commit–m “cambios de footer” puedo preparar un archivo con git add “nombre del archivo git commit “nombre del archivo” —amend
git init -> crea el repositorio en local que es un directorio .git que contiene todo el historial
git status ->para ver que esta en el repo y que no
git add [archivos] -> stagin area, preparar lo que sera el commit
git add –A ->alista todos los archivos para el commit (agrega todos los archivos de golpe)
git commit–m «que es estecommit» -> crea el commit y queda agregado al historial del repo
Git y git hub cd para llamar la carpeta Ls para ver la lista Git ini para comenzar
git help te muestra como funciona los parapeto es un parámetro
git help commit
git config –list para revisar listado git help add commit
git init –> crea el repositorio en local que es un directorio .git que contiene todo el historial
git status ->para ver que esta en el repo y que no
git add [archivos] -> stagin area, preparar lo que sera el commit
git add -A ->alista todos los archivos para el commit
git commit–m «que es estecommit» -> crea el commit y queda agregado al historial del repo
*git status te muestra en rojo los cambios del código en el html
git status te muestra que archivos puedes ir guardando git add -A lista todo los archivos git log git superlog
BORRAR git reset borra todo el proyecto git reset —hard “mas el ID del commit de ahi hacia arriba borra todo, si borro de arriba hacia bajo vuelve a los commit anteriores, si borro de abajo hacia arriba borra todo ejemplo ultimo de ID “ git add -A guardar git commit -m “123” git log
git reset mix recopila todos recopilo todos los commit y el e iguala el repositorio con el standing area Y en vez de tener 3 commit creado recopila todo en 1
git reset soft hace cambio solo en repositorio pero iguala el standing con el working siempre se trabaja con el commit base git rest commit directamente el mix hay preparar los archivos para los commit en soft están todos los archivos preparados para el comino
git checkout viaja en ele tiempo pegas el commit ID
git add subir uno a uno al work staging area git add – nombre del archivo
CUANDO REALIZO CAMBIOS en el html git status
Giovannis-MBP:platzigit-master volta$ git status On branch master Changes not staged for commit: (use "git add …" to update what will be committed) (use "git checkout -- …" to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a") Giovannis-MBP:platzigit-master volta$
Al cambio del index.html realizado o pagina x .html debemos agregar los siguientes después de darle git status para integración básica git add index.html git commit -m “cambios Nombre y descripción”
“ git log ” te permite ver el nombre del la carpeta del proyecto el autor la fecha de commit y más Variantes de comando de git log git log — online te muestra el “sin detalles el commit id con el titulo” git log — decorate “te muestra en que punto estas con head” git log —online —graph git log —stat “numero de linea que se editaron, cuales fueron los cambios a nivel de archivo” git log -p “muestra los cambios y cuales fueron los cambios a nivel de código” git shortlog “puedes ver en que esta trabajando cada desarrollador muestra los commit” git log —prety=format
cd Desktop , luego ls , cd platzigit-master, ls vemos los archivos .
git config —global alias.superlog git status git add -A , agregar todos los archivos git commit -m “0” agrega todos los archivos
git log para ver los commit git super log git checkout -b experimental – “ para crear ramas y entrar en ellas “
PARA AGREGAR COMMIT Iteración básica es para agregar archivos archivo 1.txt git add -A git commit -m “1”
archivo 2.txt git add -A git commit -m “2”
archivo 3.txt git add -A git commit -m “3”
RAMAS para crear una rama 1-.git checkout -b “experimental”
git branch “nombre de la rama”
git log para ver las commit ramas y features del master
HEAD ES LA ubicación donde uno esta programando.
Git merge
Para fusionar ramas git merge experimental
Va a fusionar la rama experimental pero quiero que le coloques un nombre PULSAR LA TECLA O , UNA VEZ COLOCAS EL NOMBRE ESC :X QUE ES CERRAR Y GUARDAR
PARA VER COMMIT
Luego git superlog git log para restificación de commit de estar seguro y que sea el ultimo Git commit -am “descripción cambiada” —amend
BORRAR RAMAS
git branch -d experimental
Merge crea un nuevo commit con los cambios de las ramas que estás fusionando.
Rebase se «trae» los cambios de la otra rama (Master) y los fusiona con los suyos.
git branch “para ver las ramas”
FUSIÓN
solucionar el conflicto , con git status vemos el archivo en rojo luego esta en rojo apene hay que subirlo a Luego git add -A Git status Git commit -m “Fusión realizada”
REINICIAR PROYECTO
Entrar a las carpetas ocultas ls -la La git guarda el proyecto en una carpeta y el registro lo tiene una carpeta llamada .git Con el siguiente comando puedes eliminarla: rm – rf ls -la para ver todo el repositorio
git checkout master es para volver atrás de un cambio en alguna rama
git merge “para la fusión” decidir con que titulo queda o modificación Despues comentas interacción básica fusión ejecutada
se puede hacer un reset –hard al inicio del proyecto o commit inicial sin tener el id del commit de esta forma: git fetch origin git reset –hard origin/master
REBASE
En las fusiones se crea un solo commit En rebase pasa esto : a-b se colocan antes del commit de master Por ejemplo si vuelvo mi ejemplo a git checkout master vuelven deprecar los commit de la rama del rebase a – b vuelves atrás “por que master esta en el commit con nombre cuarto” como subirlo: git merge rama rebase
Ramarebase va acompañado de merge se va atacando de varias formas , cuando trabajas con rebase tienen que hacer “merge” git merge rama rebase Crear ramas git checkout -b “nombre de la rama”
$ ssh-keygen -t rsa -b 4096 -C «[email de GitHub]»
Dar enter. Aceptar la localización por defecto.
Contraseña.
$ cd ~/.ssh
$ cat id_rsa.pub
Copiamos la llave y la pegamos en Settings > SSH, dentro de GitHub.
WORK GITHUB Creo la carpeta mkdri nombre carpeta Entro a la carpeta con cd git init Agrego el primer archivo: touch 1.txt git remote add origin “nombre del repositorio remoto
Cued realizas fetch no cae en la rama master “ la local “ si no cae en origin master rama escondida Luego de placa una fusión : git merge origin/master
PROCESO DE REPOSITORIOS “FORKED” Pasos en orden
Crear ó entrar a la carpeta del proyecto cd git init
git remote add origin [HTTPS ó SSH del proyecto forked]
git remote add upstream [HTTPS ó SSH del proyecto principal]
git fetch upstream
git merge origin/upstream “como conectamos la rama del repositorio original”
git fetch origin
git merge origin/master
Hacer cambios en local
git fetch upstream. “Ramas escondidas “
git merge origin/upstream
git push origin master
Debe estar conectado para enviar un comentario.