Introducción a Git
¿Por qué usar un sistema de control de versiones como Git?
¿Qué es Git?
Instalando Git y GitBash en Windows
Instalando Git en OSX
Instalando Git en Linux
Editores de código, archivos binarios y de texto plano
Introducción a la terminal y línea de comandos
Comandos básicos en Git
Crea un repositorio de Git y haz tu primer commit
Analizar cambios en los archivos de tu proyecto con Git
¿Qué es el staging y los repositorios? Ciclo básico de trabajo en Git
¿Qué es un Branch (rama) y cómo funciona un Merge en Git?
Volver en el tiempo en nuestro repositorio utilizando reset y checkout
Git reset vs. Git rm
Flujo de trabajo básico en Git
Flujo de trabajo básico con un repositorio remoto
Introducción a las ramas o branches de Git
Fusión de ramas con Git merge
Resolución de conflictos al hacer un merge
Trabajando con repositorios remotos en GitHub
Cambios en GitHub: de master a main
Uso de GitHub
Cómo funcionan las llaves públicas y privadas
Configura tus llaves SSH en local
Conexión a GitHub con SSH
Tags y versiones en Git y GitHub
Manejo de ramas en GitHub
Configurar múltiples colaboradores en un repositorio de GitHub
Flujos de trabajo profesionales
Flujo de trabajo profesional: Haciendo merge de ramas de desarrollo a master
Flujo de trabajo profesional con Pull requests
Utilizando Pull Requests en GitHub
Creando un Fork, contribuyendo a un repositorio
Haciendo deployment a un servidor
Hazme un pull request
Ignorar archivos en el repositorio con .gitignore
Readme.md es una excelente práctica
Tu sitio web público con GitHub Pages
Multiples entornos de trabajo en Git
Git Rebase: reorganizando el trabajo realizado
Git Stash: Guardar cambios en memoria y recuperarlos después
Git Clean: limpiar tu proyecto de archivos no deseados
Git cherry-pick: traer commits viejos al head de un branch
Comandos de Git para casos de emergencia
Git Reset y Reflog: úsese en caso de emergencia
Reconstruir commits en Git con amend
Buscar en archivos y commits de Git con Grep y log
Bonus sobre Git y Github
Comandos y recursos colaborativos en Git y GitHub
Tu futuro con Git y GitHub
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
La creación de las SSH es necesario solo una vez por cada computadora. Aquí conocerás cómo conectar a GitHub usando SSH.
Luego de crear nuestras llaves SSH podemos entregarle la llave pública a GitHub para comunicarnos de forma segura y sin necesidad de escribir nuestro usuario y contraseña todo el tiempo.
Para esto debes entrar a la Configuración de Llaves SSH en GitHub, crear una nueva llave con el nombre que le quieras dar y el contenido de la llave pública de tu computadora.
Ahora podemos actualizar la URL que guardamos en nuestro repositorio remoto, solo que, en vez de guardar la URL con HTTPS, vamos a usar la URL con SSH:
ssh
git remote set-url origin url-ssh-del-repositorio-en-github
-Mac:
pbcopy < ~/.ssh/id_rsa.pub
clip < ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa.pub
Aporte de: Juan Luis Rojas
Aportes 480
Preguntas 290
Acá les dejo mis anotaciones:
Si tienen duda de como cambiar o quitar el passphrase, les comparto este link:
https://www.simplified.guide/ssh/set-remove-passphrase
Comandos para copiar la llave SSH:
Mac:
pbcopy < ~/.ssh/id_rsa.pub
Windows (Git Bash):
clip < ~/.ssh/id_rsa.pub
Linux (Ubuntu):
cat ~/.ssh/id_rsa.pub
Nose a quien le pueda servir pero cunado yo intente cambiar mi url de repositorio remoto no me dejo con el comando “git remote set-url origin” entonces investigue y encontré este “git config remote.origin.url + la url SSH” y si funciono perfecto
Espero que les sea de ayuda ❤️
si se va cargar de git al github, recuerden que master cambio por main
<
debes de poner:
git push origin master
se debe poner:
git push origin master:main
>
En Windows: si, al hacer git pull obtiene este warning: Warning: Permanently added the RSA host key for IP address ‘xxx.xx.xx.x’ to the list of known hosts. La solución es crear un archivo config en ~/.ssh/ y colocan esta línea: UserKnownHostsFile ~/.ssh/known_hosts
CONEXIÓN A GITHUB CON SSH.
Les comparto la documentacion de Github donde tambien se explican estos pasos, asi de que en caso de que algo cambie, creo que esto se mantendria actualizado.
🤗
me encanta que freddy haga voces. mi vida es perfecta conecte Git con Github y ya esta corriendo SSH
Al minuto 6:05 donde hacemos el
$ git pull origin master
2 veces seguidas tuve que esperar unos cuantos segundos más de lo normal y me aparecieron estos errores:
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Si a alguien más le sucede le comento que la solución en mi caso fue solo esperar un par de minutos y volver a intentar. Espero que no se repita porque puede ser tedioso, pero al menos nada critico.
$ git pull origin master
Enter passphrase for key ‘.ssh/id_rsa’:
A la clave ssh se me ocurrio ponerle una clave y me la pide cada vez que quiero traer algo de Github, busque un poco y no he sido el unico jaja, asi que aprendi algo mas…
$ssh-keygen -p
confirmar
clave vieja
clave nueva(ninguna obviamente)
confirmar
Hay que practicar mucho!, esta bien que freddy es muy claro en su explicación pero esto no es solo de dar play.
🐱💻 Usar GitHub con SSH nos permite conectarnos sin suministrar nuestro nombre de usuario ni contraseña en cada visita y clonar de forma segura.
Esta clase dura 8 minutos pero estuve mas de una hora practicandole y haciendole para que me salga 😃 estoy contenta porque ya aprendi como hacer cambios y subirlos a mi Git hub
Para los que establecieron un “passphrase” les pedirá adicional que la ingresen, solo introducen su passphrase y listo del resto funciona perfecto!
Una pregunta amigos…
Si tengo dos particiones, una con Ubuntu y otra con linux; ¿Debo configurar mis llaves SSH para los dos sistemas operativos?
Quizá sea tonta la pregunta disculpen mis novatadas 😅
ohh por Dios ya me estaba dando algo muchos errores me toco devolverme como tres clases me di cuenta que había corregido los errores en visual code uhh lo logre de los errores se aprende
-Se usa
git pull origin main
-Por cambios en github
-Y no el
git pull origin master
-No debes de poner:
git push origin master
-Se debe poner:
git push origin master:main
Hasta Aquí todo bien, uno se siente [email protected] cundo los comandos y/o códigos funsionan y no generan error ☺️ 🤩
Hasta comer uno se olvida 😅 😂
Comandos de Conexión a GitHub con SSH
$ pwd //Nos muestra la ruta donde nos encontramos.
$ ssh-keygen -t ed25519 -C "[email protected]" // Para crear una llave en GitHub del proyecto
$ eval $(ssh-agent -s) //Encender el "servidor" de llaves SSH de tu computadora
$ ssh-add ~/.ssh/id_ed25519 //Donde esta la llave SSH
$ [email protected]:DesiTechgo/compras.git //Copiar del SSH GitHub
$ git remote -v //
$ git remote set-url origin [email protected]:DesiTechgo/compras.git //Para cambiar de HTTPS a GIT
$ git push origin main //Enviamos al Remoto
$ git pull origin main //Traemos los cambios del Remoto
$ git status //Modificamos Index.html
$ git diff // Para ver que se cambió en index
$ git commit -am "Una version de compras" //
$ git push origin main //Enviamos al Remoto los cambios
Diferencias entre utilizar HTTP y SSH
Documentación de GIT Protocolos
Dato curioso por si tienen problemas con el pull:
No le coloque passphrase a las llaves y cuando hice el git pull me mostró el siguiente error:
.ssh/config: line 3: Bad configuration option: userkeychain
.ssh/config: terminating, 1 bad configuration options
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Busqué en la documentación de git y encontré esto:
Note: If you chose not to add a to your key, you should omit the UseKeychain line.
Elimine esa linea y luego funcionó. 😃
Hey compañeros que están en el 2021, empezando con este tema, si les envía error a pesar de aplicar todos los demás consejos aquí les dejo algo que me ayudo a establecer bien la conexión.
Recuerden que GitHub tuvo cambios y ya no es master, sino que ahora es main. Aquí un artículo Cambios en GitHub: de master a main
en que caso amerita que las url sean distintas (FETCH Y PUSH) ??
si a alguien le sale el siguiente error
<pusherror: failed to push some refs to>
la solucion es :
<git push origin master:main>
Por si a alguien le ayuda. Tuve un problema, PC Windows en mi Universidad:
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.
.
Solución: crear un archivo config y añadir:
Host github.com
Hostname ssh.github.com
Port 443
-Link–> https://help.github.com/en/articles/using-ssh-over-the-https-port
Si ejecutamos el comando:
git remote set-url origin url-ssh-del-repositorio-en-github
sin antes haber hecho la conexión por https, marcará un error ya que no existe origin, el comando que tiene que ser ejecutado es:
git remote add origin url-ssh
Ahora conecto el repositorio local al remoto:
# ingreso al repositorio remoto y uso la opción 'clone'
# cambio https por ssh y copio en enlace
# abro consola y voy al directorio de mi proyecto
# evaluo la conexion actual
$ git remote -v
#cambio la conexion tanto para fetch como para push
$ git remote set-url origin [pego enlace]
# vuelvo a validar
$ git remote -v
# hago pull para traer la última versión del proyecto ahora usando llaves
$ git pull origin master
# El sistema pregunta si estoy seguro de continuar. Indico que si
# Hago un cambio en mi directorio local y lo subo al repositorio remoto
$ git status
$ git commit -am "Nueva version de mi blogpost"
$ git push origin master
buenas tardes chicos yo tenia este prolema
$ git pull origin master
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
esto pasa por que a veces, los firewalls se niegan a permitir conexiones SSH por completo. Si el uso de la clonación HTTPS con almacenamiento en caché de credenciales no es una opción, puede intentar clonar utilizando una conexión SSH realizada a través del puerto HTTPS. La mayoría de las reglas de firewall deberían permitir esto, pero los servidores proxy pueden interferir
y la solucion es esta
Lo que hice para resolverlo fue editar la configuración de git (o agregarla si no existe).
$ nano ~/.ssh/config
Y agregué lo siguiente
Host github.com
Hostname ssh.github.com
Port 443
Luego, ejecute el comando ssh -T [email protected] confirmar si el problema está solucionado.
Espero que esto ayude a cualquier otra persona que tenga el mismo problema que yo.
Dato curioso:
Si haces el commit con el correo de otra persona en el git config user.email, el commit en el repositorio remoto queda como si lo hubiera hecho esa persona, tengas o no acceso a esa cuenta.
Solo una pequeña correccion, el comando “git pull origin master” (y push) especifica con la palabra “origin” que apuntamos al repositorio remoto, y con master le indicamos la rama de donde vamos a hacer el pull o hacia donde haremos el push (en este caso master, que es una rama mas).
Es decir, si tenemos varias ramas en el repositorio remoto, y queremos hacer pull o push de o hacia esa rama remota, vasta con “git pull origin EL_NOMBRE_DE_LA_RAMA_QUE_QUIERAS”
En local, la rama desde donde se hara la operacion, sera la actual, es decir, la ultima a la que hayamos hecho checkout!
Hola Cada que se reinicia mi compu se pierde la contraseña de la llave, hay algún comando especial para mantenerla o siempre que renice tengo que usar el comando ssh-add?
Fredy dice que por cada computador hay que tener una llave ssh pero tambien hay que crear una por cada repositorio.
me podrian explicar bien esa parte??
hola a todos, no logro conectar mi ssh, me pueden ayudar?, ya cree la llave y la coloqué en mi cuenta de github pero cuando intento subir algo se queda cargando y al rato sale esto:
como me puedo mover mover a una carpeta por medio de la terminal pero el nombre de la carpeta tiene un espacio, ejemplo se llama proyectos pagados?
Solo como observación.
El siguiente comando, te modifica las url’s, para tu proyecto:
git remote set-url origin url-ssh-del-repositorio-en-github
Es decir, si al darle el comando
git remote -v
No regresa un listado, tienes que hacer con:
git remote add origin URL-de-Github
Después de ver el video me dispuse a replicar todo lo que había hecho Freddy y nada me salió igual, me toco volver a generar mis llaves y realiza la conexión a GitHub otra vez.
Lo que aprendí fue: “La practica hace al maestro”
En el caso de que quieran hacer una Conexión por SSH sin tener que hacerlo por HTTPS primero, solo deben escribir:
_git remote add origin (URL SSH) _
No olviden agregar tu clave privada a la PC y tu clave publica a tu perfil de GitHub*.
Todo me esta funcionando correctamente, de hecho incluso pude hacer el push hacia mi repositorio pero en la terminal se me esta imprimiendo lo siguiente, alguien podría ayudarme identificando que es y si debería de hacer algo al respecto. El mensaje que me muestra luego del git pull origin master
es el siguiente:
You can replace "git config" with "git config --global" to set a default preference for all repositories. You can also pass --rebase, --no-rebase, or --ff-only on the command line to override the configured default per invocation.
Estoy en Mac OS
Para que sea más rápido el proceso de copia de la llave pública pueden utilizar el siguiente comando y como último paso pegarla en el repositorio.
clip < ~/.ssh/id_rsa.pub
Para que no batallen con el editor y la consola en la pantalla, les recomiendo usar la terminal que VSCode trae integrada (View -> Terminal)
Muy interesante , conexión establecida.
Nada de esto servirá si no practicas
Para aquellos que están usando WSL y no tienen una forma grafica de observar la llave publica mas que la terminal pueden hacer lo siguiente
cat ~/.ssh/id_rsa.pub
Y ya la tienen a la llave en su terminal y la copian a GitHub
Sí en vez de estar usando git bash estan usando una terminal de ubuntu.
Para abrir la llave pública, pueden seguir los siguientes pasos:
Si con el cambio de master a main les sale este error al tratar de hacer un pull o no les permite hacer push
fatal: refusing to merge unrelated histories
pueden usar este comando
git push origin main --force
Esto probablemente borre su archivo “Readme” de Github pero es fácil volver a crearlo, y ya después hacen un pull con normalidad c:
En nuestro perfil de Github se debe agregar nuestra llave pública en el menú “Settings” -> “GPG Keys” y allí agregamos nuestra llave. Hay que tener en cuenta que es una llave que deberíamos de tener por computador, para evitar que sea intervenida y seamos victimas de cyberdelincuentes.
Hola, a mi me trae esto, me pueden ayudar.
$ git pull origin master
Warning: Permanently added the RSA host key for IP address ‘140.82.114.4’ to the list of known hosts.
From github.com:PaulMoro/exercise-GitHub
Anteriormente tuve un error
Hola saludos a todos si al mandar el comando
eval $(ssh-agent -s)
me retorna esto bash: ssh-agent: command not found
Y no es un error de sintaxis por que ya busque bien como se escribe tengo windows 7
Ayudenme `por favor gracias.
Investigue y investigue y no solucione el problema pero dije no me voy a rendir voy a seguir adelante no puedo perder tiempo de aprendizaje .
Y hice el resto conecte mi llave en github y me funciono segui adelante y al parecer asta ahora solucione el problema.
Estoy en windows 7 pero me cambiare a linux pronto.
Gracias y saludos a todos .
Ayuda, me aparece este mensaje cada que hago un pull o un push ya conectado con ssh correcto:
Warning: Permanently added the RSA host key for IP address ‘140.82.114.4’ to the list of known hosts.
Como solo es una advertencia no afecta, pero que es y como corrijo o hago para que no salga? Gracias.
Todo listo. Les recomiendo que antes de seguir con el curso, si trabajan en mas PCs dejen todas sus llaves listas ahora así les es más fácil continuar después. Personalmente sigo los cursos de Platzi desde dos pcs diferentes y es muy útil ya dejar todo listo en las 2 para continuar
Una consulta, al hacer git pull o git push todo funciona normal, pero alguien sabe ¿por qué aparece un mensaje que dice Warning? y ¿si es algo “malo”? 🤔😃
[email protected]1EJ88AC MINGW64 ~/proyecto1 (master)
$ git pull origin master
Warning: Permanently added the RSA host key for IP address '140.82.113.3' to the list of known hosts.
From github.com:Alincut/hyperblog
* branch master -> FETCH_HEAD
Already up to date.
Conexión a GitHub con SSH
Importante aclarar: cada usuario, cada computadora tiene que tener una llave única conectadas con el repositorio o no funcionara. No es buena idea compartir las llaves de una computadora a otra porque pueden ser interceptadas.
Para añadir la llave vamos a Github en la opción Settings y luego a la opción SSH and GPG Keys en el titulo ponemos la descripción de cual computador será y en el recuadro de abajo pegamos la llave, le damos agregar y ponemos la contraseña de nuestra cuenta Github.
De esta forma ya tendríamos conectado nuestro repositorio de github con la llave publica del computador de donde hayamos generado las llaves, luego vamos a nuestros repositorios, la opción clone or download (Code) y luego damos click al boton Use SSH y copiamos esa url para setearla como el repositorio al cual nos conectaremos.
git remote set-url origin ExampleSSHurl Esto nos permite cambiar la url de origin (del repositorio origin). Podemos confirmar que ya cambio usando nuevamente git remote-v
git pull origin master Con este le decimos que traiga de origin (mi repositorio remoto) y lo vamos a fusionar con la rama master.
git push origin master Este nos permite enviar commits que hicimos en master al repo origin
Debido al cambio de master a main, aveces tenia conflictos porque en Git Bash la rama principal seguia llamandose “master”, para solucionar eso renombre la rama local con el comando (git branch -m master main). Y ya puedo hacer push y pull siempre con la palabra main
¿En este caso que debería hacer? Leyendo en la pagina de github encontré las recomendaciones , pero ninguna me fue útil.

Github ahora cambio el nombre default de master a main para evitar referirse a la esclavitud, tal vez sea útil para alguien por allí
He hecho algunos apuntes de lo que llevamos del curso hasta el momento. Si gustan pueden verlos, de pronto puede ser útil.
Apuntes
Nunca dejes de usar las voces Freddy xD
Qué pasa si por error elimine mi key 😦
Hola gente, solo quería decirles que si ustedes tuvieron problemas con el comando :
git pull origin main
A mi me aparecía un error que decía algo así como que debía guardar mis cambios o confirmaslos antes de que git fusionara los cambios, por lo tante le tuve que hacer commit al archivo blogpost.html antes de volver a intentar hacer el pull. Suerte
Ahora github aparte de la key SSH necesita un token que se puede crear en la configuración, este token se puede crear por un lapso de tiempo (fecha inicial - fecha final)
Funciono !! 😃
me tuve que remitir al curso de Prework de windows para hacer este push porque con lo que explican en este curso no pude, si alguien mas no le sale el push con lo de esta clase lo invito a devolverse
Si en mac les aparece este error “.ssh/config: line 1: Bad configuration option: host*” y no configuraron un passphrase, a mi me funcionó dejando el código del archivo config así:
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
IgnoreUnknown UseKeychain
Casi no encuentro solución a este problema y es que cuando hacemos
git pull origin main
Y la terminal no hace nada es decir se queda colgada o simplemente no hace nada, se debe hacer lo que dice EL COMPAÑERO
JUSTO AQUI
Compañeros comparto los apuntes de como crear la llave SSH
Clic para ver apuntes creación llave ssh
Para que sepan que funciona sin hacer cambios:
ssh -T [email protected]
Observando la sección desde que se toma el link para la clonación del repositorio, me aparece la sección Github CLI y aparece una especie de comando, mi pregunta si yo utilizo dicho comando, se clonaria el repositorio remoto sin utilizar el comando que hemos visto en las últimas clases, de no ser así. ¿Exactamente que hace este comando?
Hola a todos, a mi me apareció el siguiente error al ejecutar git pull:
error: no se puede abrir .git/FETCH_HEAD : Permiso Denegado
Lo resolví con el siguiente comando:
chmod a + rw .git/FETCH_HEAD
al ejecutar el comando:
eval `ssh-agent -s`
me salía el siguiente error:
unable to start ssh-agent service, error :1058
La forma en que lo solucioné fue abrir los servicios y poner en automático los servicios OpenSSH, para esto:
Por si a alguien le sale el mismo error.
😃
Ahora tienes que dar en blame en github y luego te sale la opcion de history para ver quien hizo los cambios 😃
Esa mirada de Freddy, Jajajaja.!
Comparto mis apuntes para quien los requiera
https://www.notion.so/GitHub-bfc3c1d098414ad48e2668eb9ed20cb1
El repositorio que estamos usando se llama origin; sin embargo origin es un estándar de la industria, puede tener cualquier nombre.
Cada usuario, cada computadora, cada persona tiene que tener una llave única, si tienes tres laptops tienes que tener tres llaves conectadas con tu repositorio.
El resumen fue genial:
“Mi vida es perfecta”
.
.
.
Dato de color
git pull origin master
Pasa a ser
git pull origin main
Por fin entendi esto! Era un dolor de cabeza 😄
origin es el estandar para llamar a los repositorios remotos.
Recuerda ponerle al git remote set-url (nombre) (nuevo link)
al git remote hay que acompañarlo de set-url si queremos cambiar el link del repositorio remoto.
Mi vida es perfecta, no se como putas lo hice, pero lo logre!!!
¿El servidor que verifica si las llaves estan funcionando queda en los archivos del repositorio? ¿dónde queda o dónde corre?
Cómo puedo hacer si al designar la llave no le puse “passphrase” y deseo ponerle después, qué debo hacer?
Con el protocolo SSH tenemos mas seguridad y garantía de nuestros envíos a GitHbub, reemplazar una conexión HTTPS por una SSH es demasiado fácil y rápido, solo se trata de seguir paso a paso.
podemos tener una variable similar a origin para hacer pull y push a un repositorio diferente al primero que creamos?
Tambien ejecute un montón de comandos locos pero segui adelante y lo solucione asta ahora
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.