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

Haciendo deployment a un servidor

30/43
Recursos

Deploy es el proceso que permite enviar al servidor uno o varios archivos. Este servidor puede ser de prueba, desarrollo o producción.

En el siguiente ejemplo veremos cómo se realiza el deployment de un documento en un servidor web básico.

Pasos para hacer deployment en un servidor web:

  • Entrar a la capeta de los archivos del servidor.
  • Copiar link en clone, elegir entre HTTPS o SSH del repositorio a contribuir.
    -En la carpeta deseada se clona el repositorio:
git clone url
Deploy:
  • Realizar cambios y commit en GitHub.
  • Traer al Repositorio local las actualizacion para el servidor en la capeta de los archivos del servidor.
git pull ramaRemota main

Nota: Siempre se debe proteger el archivo .git. Dependiendo del software para el servidor web, existen diferentes maneras. La conexión entre GitHub y el servidor se puede realizar mediante: Travis (pago) o Jenkis (Open source).

Aporte creado por: Brayan Mamani, chedl

Aportes 257

Preguntas 40

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

En cada clase se aprende más de git y git hub pero aprendes a que no sabes NADA de otras ramas, éste es el mundo de la tecnología, cada paso que des te abre 4 puertas del desconocimiento.

Cuando Freddy asume que sabes montar un servidor y tu solo sabes html a medias :'V

Aquí ya estamos asumiendo que tú ya sabes como montar un servidor en Linux y yo…

creo que me perdi un poco en la clase del fork. me quede en que fork significa “tenedor” jjajaja

Cordial saludo Devs.

Utilizo una herramienta para administrar ramas y observar el flujo de git.

  • Permite enlazar con las cuentas de GitHub, GitLab, BitBucket, entre otras.
  • Permite hacer push, pull

GitKraken

Para practicar de forma fácil pueden levantar un servidor local con python. Primero nos ubicamos en la carpeta del proyecto que queremos inicializar en el servidor y luego ejecutamos el comando según sea python2 o 3.
con Python 2:
python -m SimpleHTTPServer 8000
con Python 3.x:
python3 -m http.server 8000
El 8000 indica el puerto donde va a iniciar, entonces en el navegador vamos a 127.0.0.1:8000 y saldrá nuestro proyecto.
Se puede clonar el repo tranquilamente desde la terminal y para acceder, agrego en la barra de direcciones la ruta a la que quiero ir como hizo Freddy.

Me sirvio de mucho para darme cuenta que me falta mucho de aprender :v

Yo, durante toda la clase:

Seria genial que se actualizara el curso, ya que la pagina de github esta actualizada y se ve completamente diferente a la que freddy tiene, en mi caso realizo las practicas y me voy familiarizando con la pagina actualizada de github. Genial, muchas gracias!!

SI son como yo que necesitan elementos más gráficos para entender lo que sucede en cada comando tal vez esto les pueda ser de ayuda

http://marklodato.github.io/visual-git-guide/index-es.html

📌 Deploy es el proceso que permite enviar al servidor uno o varios archivos. Este servidor puede ser de prueba, desarrollo.

![](

Este es el curso mas pesado que he tomado hasta ahora, ya llevo dos semanas y no se si lo termine en esta. ha este punto creo que ya estoy bastante enredado.

Me sentí perdido en esta clase.... No tengo un servidor. Existe alguno gratuito?

Apuntes 😅

Nota: Freddy me mató cuando dijo que debía saber de servidores 😕

Admito que me spoilie y trate de llegar a hacer algo similar a lo de esta clase, haciendo de mi servidor un repositorio que al mismo tiempo actualice una web que tengo en linea ahora mismo, a esa web le llegan todos los cambios en master que voy a haciendo, que esos cambios son ya los de producción final.
Lo logre gracias a este tutorial: https://medium.com/@francoisromain/vps-deploy-with-git-fea605f1303b
Recomiendo mucho comprarse un servidor linux para hacer estas pruebas, Linux funciona igual que la consola de git bash así que no es tan lioso como parece.
A parte un servidor puede costar muy poco al mes, especialmente si compran un servidor virtual privado, y puede ser bueno tenerlo para ir practicando poco a poco este tipo de cosas en un ambiente más profesional y sin depender de sitios web de pruebas que pueden llegar a ser ultra confusos a veces por no ofrecer acceso al sistema de archivos o a la consola

¿Quién más puso el URL de la página de Freddy y ya no le salió nada? :c

¿Por qué es importante DevOps?
Primero, vamos a definir ¿qué es DevOps? no es un cargo o una persona, es una cultura que agrupa una serie de prácticas y principios para mejorar y automatizar los procesos entre los equipos de desarrollo e infraestructura (IT) para hacer el lanzamiento de software de una manera rápida, eficiente y segura.

Un concepto importante y uno de los pilares fundamentales en DevOps es la automatización de procesos, que incluye los procesos de construcción, pruebas y lanzamiento del software con herramientas como Git, Jenkins, Circle CI, Travis, Terraform, entre otras.

Estas herramientas hacen pruebas a nuestra aplicación, antes de salir a producción, para identificar errores y solucionarlos, con esto los usuarios no se verán afectados.

En la empresa que trabajo solemos poner tags con el número de versión que salieron las apps móviles, así si algún usuario nos reporta un error en una versión previa podemos revisar la versión congelada correspondiente a la versión del usuario y así revisar sobre lo que tenga el usuario

Para practicar si no tienes un servidor como Freddy ya previamente configurado. De manera fácil con NPM que es el gestor de paquetes de node. Descargas un paquete que te sirve como servidor local
Comandos para descargar desde npm

Desde la consola de windows ponen esto:

Nota: Deben tener previamente instalado Node.js, porque allí viene npm

  • npm install --global http-server

Este comando lo que hace es que instala de manera global el paquete http-server

Una vez descargado lo ejecuta de la siguiente manera:

http-server

Luego les saldrá que su servidor está en operación y se podrá acceder a través de dos direcciones.

Listo

OK. Volveré cuando pueda habilitar mi primer servidor 😃

20/08/2020:
http://www.freddier.com/hyperblog/blogpost.html --> 404 not found

F.

http://www.freddier.com/hyperblog/blogpost.html

Ya no está disponible 😢

Tanto GitLab como GitHub cuentan con un servicio gratuito para publicar sitios web estáticos de manera sencilla:

GitHub Pages
GitLab Pages

Ya que Freddy se olvido de pagar la cuenta de su servidor, lo subiré a mi propio servidor compartido.

jossiequintero.ga/hyperblog

Deployment me pareció demasiado interesante, siempre subo mis archivos a servidores mediante Filezilla y no sabia que se podía hacer de una manera tan sencilla y rápida.

Buena clase, no se mucho de servidores pero podemos descargar Apache gratuitamente y crear un servidor temporal en nuestro computador para hacer pruebas de este estilo. 🙂

404 Not Found
nginx/1.14.0 (Ubuntu)

¿Qué paso Freddy? ¿Aprobaste un request incorrecto?

Es un chiste 😋

En 2021 ya se perdió esa dirección. Un soldado caído.

las perosnas que estan usando OSX (no se si linux o windows tambien) pueden ejecutar el siguiente comando: python -m SimpleHTTPServer 8000 en el directorio hyperblog y pueden correr el blog y probar cambios de codigo, git y todo eso en caliente.

Like si corriste a ver freddier.com… no me lo esperaba

En lo personal yo use para un proyecto CircleCi, tiene una capa gratuita que sirvio para mis necesidades y quedo satisfecho. Otra alternativa de CI/CD a Travis

Yo monte un servidor utilizando NPM (Node Package Manager) y express.js un frawework web.

Lo primero es crear una carpeta llamada MiServidor, ustedes le pueden llamar como quieran, accedemos a la carpeta por medio de la consola con el comando $ cd MiServidor.

Ahora vamos a iniciar el proyecto utilizando el siguiente comando:

$ npm init que nos genera un archivo package.json

Luego vamos a instalar express.js que nos permitirá crear nuestro servidor rápido con el comando : $ npm install express --save

Ya teniendo express instalado, vamos a crear nuestro servidor web creando el archivo index.js ya sea en consola o por el editor de codigo dentro de las carpeta MiServidor, y escribiremos lo siguiente:

const express = require(‘express’);
const app = express();

app.use(express.static(__dirname + ‘/public/’));

app.listen(‘3000’, function() {
console.log(‘Servidor web escuchando en el puerto 3000’);
});

Luego vamos a crear la carpeta public con un archivo index.html y en el escribiremos lo siguiente:
<!DOCTYPE html>
<html lang=“es”>
<head>
<meta charset=“UTF-8”>
<meta name=“viewport” content=“width=device-width, initial-scale=1.0”>
<title>Mi primer servidor web</title>
</head>
<body>
<h1>HOLA, mi primer servidor web</h1>
</body>
</html>

Ya con todo listo nos vamos a la consola y ejecutamos el comando $ node index.js; el cual nos debería salir que está escuchando en el puerto 3000.

Vamos a localhost y el puerto 3000 y listo.

Mis apuntes
Pasos para colocar el trabajo en un servidor web:

  1. entrar a la capeta de los archivos del servidor.
  2. Copiar link en clone, elegir entre HTTPS o SSH del RR a contribuir.
  3. En la carpeta deseada se clona el repositorio:
    git clone url

Deploy:

  1. Realizar cambios y commit en github.
  2. Traer al Repositorio local las actualizacion para el servidor en la capeta de los archivos del servidor.
        git pull ramaRemota main
        
NOTA: proteger el archivo .git, dependiendo del software para el seridor web existen diferentes maneras. Conexion entre github y el servidor se puede realizar mediante: Travis pago, Jenkis Open source.

Entonces esto hacer un deployment a un servidor es hacer pull al servidor?
como si el servidor es otro repositorio?

Son impresionantes las ventajas que tiene el utilizar o implementar DevOps en el flujo de trabajo, ahora veamos cómo encaja DevOps dentro de este flujo:

Desarrollo: nuevas características, mejoras, corrección de errores.
Se crea el Pull Request.
Se compila o construye lo que sea necesario y se ejecutan las pruebas: automatización de procesos con GitHub y herramientas como Jenkins, Travis, CircleCI, entre otras.
Se aprueba el Pull Request.
Se hace merge con Master.
Se compila o construye lo que sea necesario para un entorno de staging o producción y se ejecutan las pruebas
Deploy: lo ejecuta automáticamente Jenkins, o la herramienta utilizada, una vez las pruebas pasan.

deployment: agregar el proyecto git al server; no es una buena practica; hay que protejer el .git.
paginas que conectan automatcamente las ramas de gitHub a tus servidores: travis.ci jenkins (integracion continua/desarrollo continuo)

demasiado que digerir x3

si les interesa aqui esta el blog para que lo visiten 😉

🤯🤯🤯🤯

Compañ[email protected], si alguien quiere hacer esta practica y no puede por que hasta el momento no sabe de Linux o no tiene un servidor Linux como web, no se compliquen, instalen un apache en su maquina local y listo, lo pueden hacer con xampp https://www.apachefriends.org/es/download.html luego en la carpeta C:\xampp\htdocs clonan el repositorio

Para poder simular lo mas parecido posible el ejemplo, para la parte del servidor, recomiendo instalar en Linux (ubuntu) el servidor web con sencillos pasos: www. digitalocean .com/community/tutorials/como-instalar-el-servidor-web-apache-en-ubuntu-18-04-es

Estos cursos te dejan muy claro todo el desconocimiento que tenemos. Sin embargo la gente de esta comunidad siempre tiene conocimiento de algo. Pero es hermoso saber que hay mas por descubriri. ¡Que emocion!

No me quedo muy claro y lo investigare por mi cuenta pero quisiera saber por parte de la comunidad o un colaborardor, ¿Cual es la utilidad de esta herramienta o proceso?, me disculpo pero me desoriento un poco.

Todo eso es lo que quiero aprender, pero apenas comenze, esta largo y dificil el camino pero asi es siempre cuando se quiere llegar al exito

Ni lo intenten, saludos.

Los que quieran ver el proyecto de Freddy en internet

http://freddier.com/hyperblog/blogpost.html

Esto es muy cool 😮 😄

demasiado que digerir x2

Como que ya debo saber de servidores? 😦

cada vez que nombra un curso lo agrego para verlo pero ya ni se cuantos llevo y en que orden debo hacerlo xD

Esta calse me voló la cabeza

En lo personal prefiero usar la consola para trabajar es mas rapido y sencillo

aabando mi ruta d bakend en django, voy por la carrera de servidores

F. Ya no está el Hyperblog del futuro en el sitio de freddier :c

Efectivamente, Freddy dejo caer el sitio.

La rama master es la que normalmente se envía al servidor de producción, depende del flujo de trabajo de cada persona, por ejemplo hay grupos de trabajo que lo que hacen es que le ponen tags a la rama que se envía a producción y ese es el tag que se envía a producción.

No he visto el curso de servidores, yo simplemente habilite Apache en Xampp para poder hacer los cambios de manera local, todo quedo claro ya después veo ese curso. 😃

Hace unos minutos mientras tomaba una clase pense en esto y Ohh! sorpresa toma tu respuesta, esto solo me hace pensar en la calidad de los cursos y que ellos piensan en todo aun sabiendo que la gran mayoría no puede hacer esta practica

hay muchos servicios de pago y algunos free para **hacer deploy “automático” **al hacer commit.
Yo hago mis commits y mis Fetchs en Github-Desktop y automáticamente se hace el deploy usando este servicio www.deployhq.com

Cuando dijo “Alguien puede acceder a nuestra base de datos en .git, por lo que la debemos proteger”, me dije: rayos, cómo no pensé eso antes. Es realmente importante todo lo que se va aprendiendo y lo que se menciona en el curso.

Interesante lo de hacer el deployment a un sever estándar con Linux, aunque yo en cambio uso https://netlify.com pues me abstrae es aparte de administración de servidores para que me puede centrar solamente en desarrollar el website y no en el mantenimiento del servidor. Además es gratis y puedes hacer deploy fácilmente vinculado tu cuenta de GitHub o GitLab

Con los workflows de GitHub actions es relativamente sencillo hacer deployment. Yo tengo mi propia tarea para hacerlo;

name: Despliegue

on: [pull_request]

jobs:
    deploy:
        runs-on: ubuntu-latest
        name: Subida archivos a VPS
        steps:
            - uses: actions/[email protected]

            - name: Desplegar proyecto
              uses: appleboy/[email protected]
              with:
                  host: ${{ secrets.SERVER }}
                  username: ${{ secrets.USERNAME }}
                  password: ${{ secrets.PASSWORD }}
                  port: 22
                  source: "."
                  target: ${{ secrets.DEPLOY_FOLDER }}

Normalmente la rama master es la que se envia al servidor de producción, incluyendo tags de las versiones de los realeses. Una vez configurando el servidor, con Git instalado, vamos a traer el repositorio copiando la URL de HTTPS.

git clone <url>

Lo podemos visualizar dentro del servidor

ls -al

Y visitar la página apuntando al archivo html.
sitioweb . com /hyperblog/blogpost.html
Cada que se hagan cambios a la rama master del repositorio en GitHub, también se tiene que hacer pull en el servidor.

git pull origin master

Hay muchas consideraciones de seguridad, que no mencionan en este curso, solo se muestra un deploy básico.

Hay muchos que se sienten perdidos con las clases. Freddy explica muy bien pero de igual forma hay que leer por fuera para empaparse más del tema. Esto es una maratón no una carrera de velocidad. Vamo’ con calma muchachos. #NuncaParemosDeAprender

saben que recientemente como microsoft compro github pueden abrir visual studio dando “…” en git hub

Hay mucho por aprender, el camino es largo

git me suena a la serie de Loki con todo esto de las ramas

Creo que esta clase es para mostrarnos de manera minimalista como se realizan los procesos en un servidor y como se interactúa.

like si buscas la pagina y aparece error 404

F.

hahahaha

Ya no está disponible la página blogpost.html de Freddy 💔

https://freddyvega.com/john-freddy-vega/
Que bonito es ver que después de los años Freddy si cumplió con darle mantenimiento… grande Freddy

Yo no se servidores volvere cuando aprenda y seguire con los demas clases

Deberían actualizar el curso. Sería de gran ayuda

En 2021 ya no existe Hyperblog 😦

Cuando abra mi servidor volveré a esta clase.

No tengo mi propio servidor D: y meeenos se hacerlo en linux XD igual hare apuntes para tener la idea en general

Si se tiene una máquina virtual, normalmente a esta también se le instala git, para llevar los cambios que hay en el proyecto. Es más sencillo en ese aspecto pero tiene sus desventajas.

Para hacer deploys bien hechos, se tienen que tener una buena base de microservicios, para que se tenga seguridad en la página, por ello y para que nuestros archivos, no queden expuestos, sobretodo el .git, entonces podemos utilizar travis o el más facha, jenkis.

Como montar un servidor desde python 3.x

Esto es un mundo que desconocía totalmente. Gracias Platzi por tanto!

Deploy o Deployment es cuando montas tu codigo en un servidor y este ya es funcional y visible para todo el mundo.

no le dio mantenimiento 😦

Wow git y todo el mundo que los engloba, en verdad que es un super poder

Otro curso más a mi lista para continuar aprendiendo 😃

Entre mas avanzo, menos sé jaja

Ya no esta 😦

No sobrevivió a la prueba del tiempo :c

Ya no esta online el blogpost.html jaja yo fui a ver si habian echo cosas al archivo 💔

Yo, luego de hacer un pull a mi server y ver que todo cambia xD

Ya me llamó la atención la carrera de DevOps de Platzi

La plena si van al link si esta el proyecto todavia PROYECTO FREDDY

Excelente! este curso es genial!

Platzi es un mundo el cual cada vez me gusta mas.

Para aprender a subir paginas web debo hacer el curso de DevOps?