Introducci贸n a Git

1

驴Por qu茅 usar un sistema de control de versiones como Git?

2

驴Qu茅 es Git?

3

Instalando Git y GitBash en Windows

4

Instalando Git en OSX

5

Instalando Git en Linux

6

Editores de c贸digo, archivos binarios y de texto plano

7

Introducci贸n a la terminal y l铆nea de comandos

Comandos b谩sicos en Git

8

Crea un repositorio de Git y haz tu primer commit

9

Analizar cambios en los archivos de tu proyecto con Git

10

驴Qu茅 es el staging y los repositorios? Ciclo b谩sico de trabajo en Git

11

驴Qu茅 es un Branch (rama) y c贸mo funciona un Merge en Git?

12

Volver en el tiempo en nuestro repositorio utilizando reset y checkout

13

Git reset vs. Git rm

Flujo de trabajo b谩sico en Git

14

Flujo de trabajo b谩sico con un repositorio remoto

15

Introducci贸n a las ramas o branches de Git

16

Fusi贸n de ramas con Git merge

17

Resoluci贸n de conflictos al hacer un merge

Trabajando con repositorios remotos en GitHub

18

Cambios en GitHub: de master a main

19

Uso de GitHub

20

C贸mo funcionan las llaves p煤blicas y privadas

21

Configura tus llaves SSH en local

22

Conexi贸n a GitHub con SSH

23

Tags y versiones en Git y GitHub

24

Manejo de ramas en GitHub

25

Configurar m煤ltiples colaboradores en un repositorio de GitHub

Flujos de trabajo profesionales

26

Flujo de trabajo profesional: Haciendo merge de ramas de desarrollo a master

27

Flujo de trabajo profesional con Pull requests

28

Utilizando Pull Requests en GitHub

29

Creando un Fork, contribuyendo a un repositorio

30

Haciendo deployment a un servidor

31

Hazme un pull request

32

Ignorar archivos en el repositorio con .gitignore

33

Readme.md es una excelente pr谩ctica

34

Tu sitio web p煤blico con GitHub Pages

Multiples entornos de trabajo en Git

35

Git Rebase: reorganizando el trabajo realizado

36

Git Stash: Guardar cambios en memoria y recuperarlos despu茅s

37

Git Clean: limpiar tu proyecto de archivos no deseados

38

Git cherry-pick: traer commits viejos al head de un branch

Comandos de Git para casos de emergencia

39

Git Reset y Reflog: 煤sese en caso de emergencia

40

Reconstruir commits en Git con amend

41

Buscar en archivos y commits de Git con Grep y log

Bonus sobre Git y Github

42

Comandos y recursos colaborativos en Git y GitHub

43

Tu futuro con Git y GitHub

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Configura tus llaves SSH en local

21/43
Recursos

En este ejemplo, aprenderemos c贸mo configurar nuestras llaves SSH en local.

C贸mo generar tus llaves SSH

1. Generar tus llaves SSH**

Recuerda que es muy buena idea proteger tu llave privada con una contrase帽a.

ssh-keygen -t rsa -b 4096 -C "[email protected]"

2. Terminar de configurar nuestro sistema.

En Windows y Linux:

  • Encender el 鈥渟ervidor鈥 de llaves SSH de tu computadora:
eval $(ssh-agent -s)
  • A帽adir tu llave SSH a este 鈥渟ervidor鈥:
ssh-add ruta-donde-guardaste-tu-llave-privada

En Mac:

  • Encender el 鈥渟ervidor鈥 de llaves SSH de tu computadora:
eval "$(ssh-agent -s)"

Si usas una versi贸n de OSX superior a Mac Sierra (v10.12), debes crear o modificar un archivo 鈥渃onfig鈥 en la carpeta de tu usuario con el siguiente contenido (ten cuidado con las may煤sculas):
Host *

AddKeysToAgent yes
UseKeychain yes
IdentityFile ruta-donde-guardaste-tu-llave-privada
  • A帽adir tu llave SSH al 鈥渟ervidor鈥 de llaves SSH de tu computadora (en caso de error puedes ejecutar este mismo comando pero sin el argumento -K):
ssh-add -K ruta-donde-guardaste-tu-llave-privada

Aporte creado por: Juan Luis Rojas

Aportes 827

Preguntas 335

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Generar una nueva llave SSH: (Cualquier sistema operativo)

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Comprobar proceso y agregarlo (Windows)

  • eval $(ssh-agent - s)
  • ssh-add ~/.ssh/id_rsa

Comprobar proceso y agregarlo (Mac)

  • eval "$(ssh-agent -s)"

驴Usas macOS Sierra 10.12.2 o superior?
Haz lo siguiente:

  • cd ~/.ssh
  • Crea un archivo config鈥
  • Con Vim vim config
  • Con VSCode code config
  • Pega la siguiente configuraci贸n en el archivo鈥
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

Agrega tu llave

ssh-add -K ~/.ssh/id_rsa
馃コ

t茅cnica vieja pero efectiva jajaja 馃槃

Apuntes

Recomendable para repasar el tutorial Configurar llaves SSH en Git y GitHub

Saludos!

La 鈥渢ilde de la 帽鈥 se llama Virgulilla.

Freddy: No me mandes email o-o
my mind: Hazlo o<o

![](

SSH o Secure Shell: Es un protocolo de red que permite acceso remoto seguro a trav茅s de una conexi贸n encriptada. Este m茅todo de autenticaci贸n requiere un passphrase (contrase帽a) o tambien puede funcionar sin passphrase sobre la clave.
.
En el directorio Home ~

$ git config -l: Muestra la configuraci贸n dentro de Git(user y email), Este comando funciona por que Git esta instalado en todo el equipo local.
.
$ git config --global user.email 鈥渘ombre_email_cambiado鈥 : Se puede utilizar este mismo comando para cambiar el email.
.
Creamos la llave SSH

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
  1. -t = Especifica cual es el algoritmo que vamos a usar para crear esa llave.
  2. rsa = Algoritmo a usar, hasta el momento el mas popular.
  3. -b = Especifica que tan compleja es la llave.
  4. 4096 = Complejidad de la llave desde una perspectiva matem谩tica.
  5. -C = Indica a que correo electr贸nico va estar conectado esta llave
  6. "[email protected]" = Correo electr贸nico.
    .

Dato: Guardar la llave en la direcci贸n predeterminada.
Dato2: Passphrase: Password con espacios o Contrase帽a adicional de texto que le vas a poner a tu llave p煤blica y privada.
.
1er Paso:
Una ves que tengamos la llave, tenemos que agregarlo al entorno, y el entorno es b谩sicamente que el sistema operativo donde tu trabajas sepa que la llave existe. Para ello ejecutamos lo sgte:
.
revisar el servidor de llaves / Eval煤a que un comando se dispare.

$ eval $(ssh-agent -s)

Dato: Agent pid 4724

  1. Agent = Significa que el servidor de SHH esta corriendo.
  2. pid = Process id o identificador del proceso.
  3. 4724 = N煤mero que al sistema operativo le dice que el proceso esta corriendo.
    .

2do Paso:

Agregamos la llave privada a nuestro sistema o al servidor por que no basta con que la llave solo exista, sino debemos decirle que existe. Para ello ejecutamos el siguiente comando:

$ ssh-add ~/.ssh/id_rsa
  1. ~ = Home
  2. .ssh = carpeta ssh
  3. id_rsa = llave privada la que nunca debemos de mostrar.

Por cultura general, Este s铆mbolo se llama Virgulilla

~

Para las aquellos que les pueda generar un mensaje al momento de crear la llave como este:

id_rsa already exists.
Overwrite (y/n)? n

Es por que en alg煤n momento ya hab铆amos tenido alguna interacci贸n con git. (en mi caso con proyectos laborales) Entonces si queremos dejar ese SSH ah铆 por que nos da 鈥渕iedito鈥 borrarlo, podemos crear otro de forma f谩cil.
Simplemente al momento de ejecutar el comando

ssh-keygen -t rsa -b 4096 -C "[email protected]"

En la consola inmediatamente se visualiza esto:

Enter file in which to save the key (/c/Users/[Usuario]/.ssh/id_rsa):

No presiones ENTER!!!
Ah铆 en eses input, escribe la ruta del home(~) y luego el nombre con el que quieres que crear el nuevo ssh.

Espero que les sirva a personas miedositas como yo.

No se porque, pero necesito mandar un correo a [email protected] jajaja

Comparto mis anotaciones para quienes les puedan servir:

Una nota sin importancia, pero que quiz谩s pueda ayudar a alg铆n compa帽ero:
La tide de la 帽 la encontrareis como car谩cter "virgulilla"
En mi teclado, para escibirlo en Ubuntu (sobre Windows), en el Bash, es:
<ALT Gr> + 4 y despu茅s un espacio
Espero haber ayudado con mi comentario a alg煤n compa帽ero, con el mismo problema. Gracias

freddy: por favor no me mandes emails鈥
yo: que le mande dice

驴C贸mo verificar si ya existen llaves SSH?

Pueden ejecutar el siguiente comando en git bash:

ls -al ~/.ssh

Casi no puedo poner este s铆mbolo (~) jaja, para los que no les aparezca con el teclado se hace con ALT+126.

Soy el 煤nico que le dieron ganas de mandarle un Email a Freddy? :C

alt + 126 = ~

Configuraci贸n de llaves SSH en Windows:

  1. Comando para generar llaves SSH
    ssh-keygen -t rsa -b 4096 -C 鈥渢u correo鈥
  2. Encender el servidor de las llaves SSH
    eval $(ssh-agent -s)
  3. Nos colocamos en la ruta donde tenemos la llave privada
    cd ~/.ssh para situarnos en la carpeta .ssh
    Nota: el s铆mbolo 鈥渵鈥 es una 鈥渧ariable鈥 de una ruta predefinida.
  4. Una vez en la ruta vamos a a帽adir la llave SSH con el comando
    ssh-add ~/.ssh/id_rsa

NOTA: Si muestra el mensaje: "Could not open a connection to your authentication agent"
Utilizar el comando: exec ssh-agent bash y volver a intentar.

jajajaja tranquilo Freddy no te vamos a enviar emails

Hay que tener en cuenta que este curso ya tiene dos a帽os, el algoritmo rsa ya es viejo, aunque es soportado por muchas otras plataformas adem谩s de Github. Pero en este momento, finales de 2021, Github soporta otros nuevos y mejores algoritmos como el nuevo ED25519 pero es importante se帽alar que si lo quieres usar m谩s alla de Github es necesario comprobar en la documentaci贸n de los clientes y servidores SSH, para saber si soportan este algoritmo.
Inclusive es el algoritmo que Github recomienda en este momento es su documentaci贸n para generar una llave SSH.

Este es el comando para generar una llave con este nuevo algoritmo.

$ ssh-keygen -t ed25519 -C "[email protected]"

馃檪


Si su servicio ssh est谩 detenido lo deben activar/iniciar en servicios, buscan 鈥淥penSSH Authenication Agent鈥, seleccionan inicio autom谩tico e inician el servicio.

Si les sale este error tienen que poner eval ssh-agent tal cual y luego si ssh-add ~/.ssh/id_rsa ya con eso queda la identidad a帽adida

![](

Pasos para crear conexi贸n ssh:

  1. generar par de llaves (p煤blica y privada) en el home de la m谩quina de preferencia(~)
    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    2)verificar que el servicio se este ejecutando
    eval $(ssh-agent -s)
    3)agregar la llave privada a nuestro sistema (servidor)
    ssh-add ~/.ssh/id_rsa
Creo que el usa psicologia inversa para que les envien. Emails

Lo c贸mico del signo ~ es que no sabemos como llamarlo. Pero pueden decir 鈥渓a tilde de la 帽鈥 y es totalmente v谩lido. Tambi茅n se le puede llamar 鈥渧irgulilla鈥 pero las virgulillas son un conjunto de signos como los apostrofes 鈥 y las cedillas (cedilla la colita de esta letra 莽). S茅 que no tiene nada que ver con la clase, pero eso solo una curiosidad. La clase fue fant谩stica!

pueden utilizar el ascii Alt + 126 y sacaran la virgurilla (~)

C:\xampp\htdocs\debug>eval $(ssh-agent -s)
"eval" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

Alguna idea de por d贸nde solucionarlo?

solo por si alguien cerro el git bash y cuando lo intento abrir le salio este error

Error: could not fork child process resource temporarily unavailable (-1)

solo debe ir a administrador de tareas > procesos y buscas ssh-agent.exe y lo matas y ya puedes abrir git bash otra vez

Me quedo con Linux xD

驴Y que aprendiste en el curso?
Pues a no mandarle emails a Freddy

En Mac, si necesitas ver las carpetas o archivos ocultos, puedes mostrar u ocultar con COMMAND + SHIFT + PUNTO (.)

En windows para usar el simbolo ~ se usa,
Alt + 126

OJO: Si agregan una contrase帽a cuando les pide el 鈥榩assphrase鈥 esto har谩 que siempre que hagan pull/push les pida esa misma contrase帽a.
Vengo de clases adelante y es muy tedioso que te pida eso cada instante, recomiendo poner una contrase帽a f谩cil o directamente no poner nada ya que con la configuraci贸n de la llave SSH es seguro de por s铆.
Pero en el caso que si pusieron y quieren cambiarla o directamente eliminarla les comparto el siguiente comando:

ssh-keygen -f ~/.ssh/id_rsa -p

Con esto modificar谩n la contrase帽a o no poner nada directamente.
Saludos. 馃槃

Dicen que quienes le enviaron correos a Freddy desaparecieron鈥

20 min y aprendi mas de seguridad informatica que en toda mi vida

Que se deber铆a hacer si al ejecutar
**eval $(ssh-agent -s)
**

No retorna un agent pid ?

recuerda nunca enviar un email a [email protected]

jajajajaja NO LE ESCRIBAN A FREDDY

En windows ~ es con Alt Gr + la tecla de asterisco

Podr铆amos pasar a utilizar Ed25519 en vez de RSA para generar nuestros SSH porque es el algoritmo de Clave p煤blica m谩s recomendado disponible hoy en d铆a.

馃攼 SSH nos permite tener el acceso remoto a un servidor por medio de un canal seguro en el que toda la informaci贸n est谩 cifrada.

Freddy tengo una pregunta pero mejor te escribo un correo :v Excelente video.

驴Cuantos e-mails le habr谩n mandado?

Excelente clase, la verdad me tarde m谩s de lo esperado, pero por fin me quedo configurado mi entorno, Excelente clase.

Tips a recordar

  • Las llaves SSH no son por repositorio o por proyecto, si no por Persona.

  • Buenas practicas proteger tu llave privada con una contrase帽a (passphrase).

  • La llave P煤blica es la que se puede compartir 鈥渋d_rsa.pub鈥.

  • Jam谩s, jam谩s se deve compartir la llave Privada 鈥渋d_rsa鈥.

CONFIGURACION PARA WINDOWS/LINUX

CONFIGURACION DE LLAVES SSH EN LOCAL

Utilizamos "ssh-keygen -t rsa -b 4096 -C "TU CORREO ELECTRONICO"
Utilizamos "eval $(ssh-agent -s)
Utilizamos 鈥渃d ~/.ssh鈥 para situarnos en la carpeta .ssh.
Utilizamos 鈥渟sh-add ~/.ssh/id_rsa鈥

Hola compa帽eros aca les dejo un link con informacion de como hacerlo鈥sto para reforzar los conociemientos de la clase o tmabien como un plus a la clase. Saudos.

https://help.github.com/es/github/authenticating-to-github/connecting-to-github-with-ssh

Si quiren las cosas un poquito f谩ciles como lo hace windows est谩 el GIT GUI que se instala autom谩ticamente con GIT.

Abres GUI, en el men煤 HELP, seleccionas show keys y all铆 ves la KEY de GIT o de GITLAB en tu PC si no la generas con el bot贸n generate key, la copias y listo.

Esta bien Freddy no te vamos a enviar un e-mail
ssh-keygen -t rsa

la virgulilla se hace ~ alt + 126 en windows.

tantas veces que dice no me mandes un mail, que dan ganas de hacerlo xd.

Signo de la 帽 (~), se llama virgulilla

Si necesitan crear m谩s de una llave (m谩s de una cuenta de git)
https://platzi.com/tutoriales/1557-git-github/1751-multiples-cuentas-de-git/

Para sacar el signo de la 帽: alt+126

Cosas que aprend铆 en esta clase:

  • La utilidad del protocolo SSH
  • NUNCA enviarle un email a Freddy
  • Como crear mi llave p煤blica y privada
  • No enviarle correos a Freddy
  • Que el protocolo SSH es la mejor manera de conectarse a un servidor o a otras computadoras
  • y por supuesto NUNCA, JAMAS, POR NING脷N MOTIVO enviarle emails a Freddy

En caso que les interese:

Yo uso dos llaves en mi computador; una llave para accesar un jumpbox y otro para accesar mi otro repositorio en github (Diferente emails). Recuerda que si quieres hacer esto debes tener la llave que quieras usar activada en el agent.

Para mostrar las llaves activas en el agent:
ssh-add -l

Para Borrar Todas las llaves del agent (Cuidado! solo usar si sabes agregar otra vez; Seria la misma q ya borraste o el siguiente comando )
ssh-add -D

Para Agregar la llave (Deseada) al Agent:
ssh-add -K ~/.ssh/id_rsa

Dato curioso: El 鈥渟igno de la 帽鈥 tiene nombre, es virgulilla

Las llaves SSH no son por repositorio o por proyecto, son por personas

  • Con alt gr + les sale la virgulilla ~ o tambi茅n con alt + 126 en windows

Aqui la forma nas actual y segura de hacerlo con el algoritmo que ocupan los cool kid

ssh-keygen -t ed25519 -C "[email protected]"

Hay un error en el video explicativo de Freddy

cd /
Hace referencia al directorio RA脥Z (root), no el HOME

cd ~
Si hace referencia al HOME.

Nada eso.

Para los que no encuentran como escribir el s铆mbolo 鈥渵鈥 lo hacen presionando Alt + 126

es mas facil crear la llave SSH que ganarme la llave de tu Coraz贸n. XD

tratando de encontrar el ~ me di cuenta que con Ctrl + aumenta el zoom y de la consola y Ctrl - lo disminuye, yo no lo sabia y me pareci贸 curioso

Dato r谩pido: La tilde de la 鈥溍扁 se le llama Virgulilla

Redactando correo a [email protected]

Para los que est谩n en Mac la virgulilla ~ se puede hacer pulsando las teclas:
鈱 + 脩

Saludos!!

si no encuentras la tecla de ~ la puedes escribir presionanndo simultaneamente la tecla alt + 126

AltGr + 4 + espacio = ~

Por cultura general, el cosito de estos ~ se llama virgulilla 馃槂

Se tienen que crear llaves publicas / privadas al crear un nuevo proyecto? O es una config general?

El signo de la 帽 (~) : Es una atajo que tiene la direcci贸n de la carpeta home.

jajajajjaaj me encanta la frase 鈥渟on cosas de mac鈥

EHHHH listo!!!
~ Alt+126

Despu茅s de que agregamos la llave privada al entorno global, es indifrente lo que le pase al archivo? Podemos borrarla?

sali redura de entender!

15:35 Ac谩 empieza la configuraci贸n de la llave para MAC, es bastante importante agregarla al SSH, aprend铆 muchas cosas en este v铆deo que no ten铆a en cuenta.

Por qu茅 me aparece master estando en la carpeta de mi usuario, cuando a Freddy recien le aparece cuando entra a la carpeta de proyecto?

Me encontr茅 con este error en Windows 10 al ingresar el primer comando ssh-keygen -t rsa -b 4096 -C 鈥渃orreo鈥:
bash: $鈥橽302\226ssh-keygen.exe鈥: command not found
Soluci贸n:
Abrir Git Bash como administrador.

muy importante: en el comando en linux 鈥-c鈥 es may煤scula o de lo contrario no funciona, asi:
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Me imagino a todos los desgraciados que le est谩n enviando emails a Freddy鈥 No quiero ser pesimista, pero subjetivamente por el tiempo que llevo en internet, creo que le va a pasar.


Configura tus llaves SSH en local

  • tener el mismo email en git y en github

  • crear llave: $ ssh-keygen -t rsa -b -C "[email protected]"

  • revisar si hay llaves existentes: $ ls -al ~/.ssh

  • revisar el servidor de llaves: $ eval $(ssh-agent -s)

  • agregar llave privada: $ ssh-add ~/.ssh/id_rsa

Aprendido: como crear nuestras llaves publicas y privadas
Primero configuramos nuestro e-amil con el que tenemos en gitHub (git config --global user.email "[email protected]").

Despues creamos las llaves (ssh-keygen -t rsa -b 4096 -C "[email protected]").

eval $(ssh-agent -s), es para saber si el servido de llaves esta prendido

Para finalizar devemos de agregar nuestra llave privada a nuestro sistema, par que el sistme sepa que existe (ssh-add ~/.ssh/id_rsa).

~ Virgulilla es el nombre de este signo

para los usuarios de mac , si quieren ver los archivos ocultos en el finder tiene que hacer esto.
1-Abrir el terminal
2- poner este comando defaults write com.apple.Finder AppleShowAllFiles TRUE
3- Presionar ENTER
4-Presiona alt y clic derecho sobre el finder , luego haz clic en REINICIAR.
5-listo.

Las llaves SSH no son por repositorio o por proyecto, son por persona.

Para establecer una conexi贸n de doble camino cifrada con el protocolo ssh con GitHub:
//Proceso

Enviar tu llave publica a GitHub.
GitHub (utiliza tu lleva publica en el repositorio que le indiquemos) te env铆a su propia llave publica cifrada con tu llave publica.
Creaci贸n de las llaves:

Configurar el email que tiene Git con tu email de Github:

$ git config --global user.email "__________"
//                                  ^鈹鈹 email de GitHub

Dirigirse a home / bash y ejecutar el comando:

$ git ssh-keygen -t -rsa -b 4096 -C "_______________" 
//				                           ^鈹鈹email de GitHub

Para indicarle al sistema operativo que las lleves existen:

Revisar si el servidor de las llaves ssh est谩 prendido:

$ eval $(ssh-agent -s) 

Finalmente, agregar tu llave privada:

$ ssh-add ~/.ssh/id_rsa

//Lo anterior aplica para Windows y Linux.

Si est谩s en Mac y no sabes como poner ~ usa option + 帽, y si estas en windows usa Alt + 126, y si estas en linux , pues ustedes saben mucho mas que yo de linux 馃槃

Recordemos que este curso tiene unos cuantos a帽os! Si no pudieron crear su llave es porque seguramente no se los permite por la falta de actualizacion del algotimo rsa, actualmente pude crear la mia con esta nueva llamada ED25519.

$ ssh-keygen -t ed25519 -C "[email protected]"

tuve un problema con

eval $(ssh-agent -s) 

No funcionaba y daba error 1058
busqu茅 en stackoverflow y dec铆a que hab铆a que activar el servicio manualmente. Primero se hace un chequeo del servicio con:

Get-Service ssh-agent

saldr谩 el estado del servicio que puede ser Stopped o Running, si no est谩 corriendo se hace esto:

Get-Service -Name ssh-agent | Set-Service -StartupType Manual

y luego se puede activar con:

Start-Service ssh-agent

Las key rsa -b 4096ahora son utilizadas para sistemas Legacy, aunque el procedimiento pude ser el mismo que en la clase, la documentaci贸n de Github recomienda el uso de:

$ ssh-keygen -t ed25519 -C "[email protected]" 

Todo lo dem谩s sigue tal cual

Aqu铆 la Documentaci贸n de GitHub

No s茅 si fui al 煤nico que le toco hacer esto antes de iniciar el curso de git y github, claramente lo hice en el curso de prework de linux, muy recomendado hacerlo

Virgulilla 馃槄