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 “servidor” de llaves SSH de tu computadora:
eval $(ssh-agent -s)
  • Añadir tu llave SSH a este “servidor”:
ssh-add ruta-donde-guardaste-tu-llave-privada

En Mac:

  • Encender el “servidor” 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 “config” 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 “servidor” 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 “tilde 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 “nombre_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 “miedito” 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 “tu 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 “variable” 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 “OpenSSH 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 “la tilde de la ñ” y es totalmente válido. También se le puede llamar “virgulilla” 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 ‘passphrase’ 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 “id_rsa.pub”.

  • Jamás, jamás se deve compartir la llave Privada “id_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 “cd ~/.ssh” para situarnos en la carpeta .ssh.
Utilizamos “ssh-add ~/.ssh/id_rsa”

Hola compañeros aca les dejo un link con informacion de como hacerlo…esto 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 “signo 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 “son 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 “correo”:
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 😅