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

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

6/43
Recursos

Un editor de código o IDE es una herramienta que nos brinda muchas ayudas para escribir código, algo así como un bloc de notas muy avanzado. Los editores más populares son VSCode, Sublime Text y Atom, pero no es obligatorio usar alguno de estos para programar. Conoce más a fondo sobre qué es un IDE.

Tipos de archivos y sus diferencias:

  • Archivos de Texto (.txt): Texto plano normal y sin nada especial. Lo vemos igual sin importar dónde lo abramos, ya sea con el bloc de notas o con editores de texto avanzados.
  • Archivos RTF (.rtf): Podemos guardar texto con diferentes tamaños, estilos y colores. Pero si lo abrimos desde un editor de código, vamos a ver que es mucho más complejo que solo el texto plano. Esto es porque debe guardar todos los estilos del texto y, para esto, usa un código especial un poco difícil de entender y muy diferente a los textos con estilos especiales al que estamos acostumbrados.
  • Archivos de Word (.docx): Podemos guardar imágenes y texto con diferentes tamaños, estilos o colores. Al abrirlo desde un editor de código podemos ver que es código binario, muy difícil de entender y muy diferente al texto al que estamos acostumbrados. Esto es porque Word está optimizado para entender este código especial y representarlo gráficamente.

Recuerda que debes habilitar la opción de ver la extensión de los archivos, de lo contrario, solo podrás ver su nombre. La forma de hacerlo en Windows es Vista > Mostrar u ocultar > Extensiones de nombre de archivo.

Conceptos importantes de Git

  • Bug: Error en el código

  • Repository: Donde se almacena todo el proyecto, el cual puede vivir tanto en local como en remoto. El repositorio guarda un historial de versiones y, más importante, de la relación de cada versión con la anterior para que pueda hacerse el árbol de versiones con las diferentes ramas.

  • Fork: Si en algún momento queremos contribuir al proyecto de otra persona, o si queremos utilizar el proyecto de otro como el punto de partida del nuestro. Esto se conoce como “fork”.

  • Clone: Una vez se decide hacer un fork , hasta ese momento sólo existe en GitHub. Para poder trabajar en el proyecto, toca clonar el repositorio elegido al computador personal.

  • Branch: Es una bifurcación del proyecto que se está realizando para anexar una nueva funcionalidad o corregir un bug.

  • Master: Rama donde se almacena la última versión estable del proyecto que se está realizando. La rama master es la que está en producción en cada momento (o casi) y debería estar libre de bugs. Así, si esta rama está en producción, sirve como referente para hacer nuevas funcionalidades y/o arreglar bugs de última hora.

  • Commit: consiste en subir cosas a la versión local del repositorio. De esta manera se puede trabajar en la rama de forma local sin tener que modificar ninguna versión en remoto ni tener que tener la última versión remota, cosa muy útil en grandes desarrollos trabajados por varias personas.

  • Push: Consiste en enviar todo lo que se ha confirmado con un commit al repositorio remoto. Aquí es donde se une nuestro trabajo con el de los demás.

  • Checkout: Acción de descargarse una rama del repositorio GIT local (sí, GIT tiene su propio repositorio en local para poder ir haciendo commits) o remoto.

  • Fetch: Actualiza el repositorio local bajando datos del repositorio remoto al repositorio local sin actualizarlo, es decir, se guarda una copia del repositorio remoto en el local.

  • Merge: La acción de merge es la continuación natural del fetch. El merge permite unir la copia del repositorio remoto con tu repositorio local, mezclando los diferentes códigos.

  • Pull: Consiste en la unión del fetch y del merge, esto es, recoge la información del repositorio remoto y luego mezcla el trabajo en local con esta.

  • Diff: Se utiliza para mostrar los cambios entre dos versiones del mismo archivo.

Aporte creado por: Nestor Rojas

Aportes 577

Preguntas 61

Ordenar por:

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

¡¡¡me troleaste 3 veces!!! jajajajajaj :

Vamos a instalar un editor de código
atom, atom es creado por los creadores de git, instalar atom es muy sencillo(pauso el video, descargo atom). continuo viendo…
pero en este caso no lo vamos a usar… .-. jajajajaj
el otro que es muy común y es el que yo prefiero usar cuando estoy en mac es Sublime Text, (pauso el video, instalo, abro sublime text) … le doy play al video
pero no lo vamos a usar porque en este caso vamos a usasr visual studio code
jajajajjajajaj

Si ya tienen conocimiento en Visual Studio les recomiendo aprender a usar Vim, es un editor que funciona en la terminal y si (eventualmente) entran al mundo de las DevOps les será de mucha ayuda.

Que falta que me hacía ver clase con Freddy. Todes les profesorxs de Platzi son excelentes, pero hay un carisma y energía de Freddy para explicar que vuelve los temas demasiado fácil de aprender.

Tu cara cuando Freddy usará VS code en el curso

“Instalar Atom es muy sencillo y es súper bonito…” me emociono “…pero en este caso no lo vamos a usar” poker face

like si tu primer editor de código fue Atom, pero te cambiaste a VSC

Aca les dejo mis notas ojala les ayude a alguien:
![](

Otra razón para no subir archivos binarios es su peso, son mucho más grandes que los archivos de texto de nuestro código y al hacer commit de ellos a nuestro repositorio, el tamaño de este se volvería muy grande. Esto es un detalle muy importante, no porque el almacenamiento sea un problema, ¿Para que utilizamos un Sistema de Control de Versiones? El punto de tener un Sistema de Control de Versiones distribuido es que sea rápido clonar y navegar entre las ramas. Siempre queremos coger una nueva máquina y clonar el repositorio tan rápido como sea posible. Queremos ser capaces de cambiar de ramas tan rápido como sea posible, pero si haces commit de un número significativo de archivos binarios, pronto te darás cuenta de lo lento que estas tareas se vuelven.

Solo u ndetalle curioso que no se si todos sepan. Si le cambian la extension a un archivo de word/excel a .zip/.rar, pueden extraer el contenido y revisar de lo que esta compuesto el archivo, lo descubri jugando con las extensiones hace mucho

En relación a los Editores de Código, si ya usas y conoces uno pues síguelo usando, pero decir cual es mejor es difícil, ya que cada desarrollador es distinto, al final cuando llegas a conocer un Editor te sientes cómodo ya que dominas sus atajos, trucos, interfaz, etc., y de entrar en la discusión de cuál es el mejor, tendríamos que probarlos todos, ya que uno te dirá: “Atom es el mejor”, otro dirá “no, Sublime Text es el mejor”, “no, Visual Studio Code es el mejor”. Pero si estas iniciando en este mundo tecnológico y nunca has usado uno, pues trabaja con el que el instructor te recomienda.


**Conceptos bàsicos para trabajar con Git y dentro de un grupo de desarrolladores:
**
Repository: Donde se almacena todo el proyecto, el cual puede vivir tanto en local como en remoto. El repositorio guarda un historial de versiones y, más importante, de la relación de cada versión con la anterior para que pueda hacerse el árbol de versiones con las diferentes ramas.

Fork: Si en algún momento queremos contribuir al proyecto de otra persona, o si queremos utilizar el proyecto de otro como el punto de partida del nuestro. Esto se conoce como “fork”.

Clone: Una vez se decide hacer un fork , hasta ese momento sólo existe en GitHub. Para poder trabajar en el proyecto, toca clonar el repositorio elegido al computador personal.

Branch: Es una bifurcación del proyecto que se está realizando para anexar una nueva funcionalidad o corregir un bug.

Master: Rama donde se almacena la última versión estable del proyecto que se está realizando. La rama master es la que está en producción en cada momento (o casi) y debería estar libre de bugs. Así, si esta rama está en producción, sirve como referente para hacer nuevas funcionalidades y/o arreglar bugs de última hora.

Commit: consiste en subir cosas a la versión local del repositorio. De esta manera se puede trabajar en la rama de forma local sin tener que modificar ninguna versión en remoto ni tener que tener la última versión remota, cosa muy útil en grandes desarrollos trabajados por varias personas.

Push: Consiste en enviar todo lo que se ha confirmado con un commit al repositorio remoto. Aquí es donde se une nuestro trabajo con el de los demás.

Checkout: Acción de descargarse una rama del repositorio GIT local (sí, GIT tiene su propio repositorio en local para poder ir haciendo commits) o remoto.

Fetch: Actualiza el repositorio local bajando datos del repositorio remoto al repositorio local sin actualizarlo, es decir, se guarda una copia del repositorio remoto en el local.

Merge: La acción de merge es la continuación natural del fetch. El merge permite unir la copia del repositorio remoto con tu repositorio local, mezclando los diferentes códigos.

Pull: Consiste en la unión del fetch y del merge, esto es, recoge la información del repositorio remoto y luego mezcla el trabajo en local con esta.

Diff: Se utiliza para mostrar los cambios entre dos versiones del mismo archivo.

Bug: Error.

El Team VSC
le da corazón aquí!!!❤

jajaja la cara de Freddy una mirada que penetra el alma

Instalar Visual Studio Code en Ubuntu mediante la terminal.

sudo apt-get update
sudo snap install --classic code
code .

Es un placer entrar a un curso con Freddy, realmente la oratoria que tiene hace que todo se aprenda más fácil, a pesar que ya hice los cursos anteriores de git, entre porque sé que con Freddy puedo aprender git a más profundidad. Gracias Tio Freddy (?) por este curso.

Hola, vengo del futuro! Visual Studio Code será el editor de código más usado y el más recomendado para realizar trabajos en equipo. Se los recomiendo 😄

"Y eso lo hace especial :3"
Me encanto ❤️

👊👊👊TEAM ATOM👊👊👊

Sublime Text 👌

Freddy es el mejor profesor, me motiva muchísimo para continuar estudiando. De hecho, me motive inscribirme en Platzi justo por el curso de programación básica, como estoy segura que le paso a muchos otros.

Para mostrar las extensiones de una carpeta en Mac debes abrir una ventana de Finder y presionar a la vez las teclas Comand + Shift + punto (.)

VS Code es muy buen editor, combina características de Sublime text y de Atom, se complementa muy bien con JS

si quieren instalar rápido visual studio code desde la terminal ubuntu les dejo este comando para que lo ejecuten -> sudo snap install --classic code, luego ingresan su contraseña de usuario en ubuntu y listo dejan que se instale, espero haberles ayudado 😃

Resumen de la clase

  • Es importante que el editor sea de texto plano.

  • No es lo mismo un archivo de texto plano y un archivo binario que parece de texto.

  • Un archivo de Word es un archivo binario y un archivo .txt es una de texto plano

  • Un archivo de Word puedes incluir imágenes y estilos al texto

  • El archivo de texto plano tiene texto sin estilos

Editores de texto:

  • Atom , de los desarrolladores de github
    sublime text, no código abierto y en Mac

  • visual studio code, de Microsoft y optimizado para Windows.
    Instalamos VSC y le damos a la opción de abrir con clic derecho.

Las diferencias entre tipos de texto

  • Si abrimos el archivo de texto plano con VSC veremos todo normal

  • Si abres el archivo de Word con VSC veras un montón de símbolos . eso signfica que la estructura interna de Word es binaria.

Terminaba de desinstalar Atom, (pause el video)…ya esta acabando la instalación en sublime y me salen con VS Code xD, lo bueno es que lo manejaba xD

VS Code ❤️

  • .docx = texto con estilos y imagenes.
    .rtf = texto con estilos.
    .txt = texto normal.

Fragmento de noticia publicada hace un año por https://news.microsoft.com/es-xl/microsoft-github-impulso-para-los-desarrolladores/ :

“Anunciamos un acuerdo para adquirir GitHub, la plataforma líder mundial en desarrollo de software. Quiero compartir lo que esta adquisición significará para nuestra industria y para los desarrolladores”

Sé que me estoy arriesgando pero tengo que decirlo: Visual Studio Code es el mejor . De verdad, es una supereditor. Sublime y Atom se quedan cortos a mi gusto, vscode simplemente tiene lo necesario. Pero como siempre, el mejor es con el que se sientan más cómodos.

TIP para abrir archivos con Visual Studio Code desde la terminal en Mac:

Después de la instalación, abran VS Code. Luego presionan (F1 o ⇧+⌘+P en Mac) y escriben “Shell Command: Install ‘code’ command in PATH command”, lo instalan y listo.

Ahora sólo deben navegar desde la terminal a la ruta deseada y escribir “code .” para abrir dicho directorio/archivo.

El mejor profesor junto a Leonidas, explican perfectamente y hacen las clases de una manera divertida y fácil de aprender.

El mejor editor de todos: VSCode (en mi opinio)

“No tiene nada especial, y eso lo hace especial” Freddy 😃

.rft => Rich Text Format

Es super recomendado Visual Studio Code!

Git está diseñado para guardar y versionar archivos de texto plano. También puede trabajar con archivos binarios para no será tan útil.

Team Atom

Visual Studio Code me convence mas

RECUERDEN QUE LOS ARCHIVOS DE LA CLASE ESTAN EN LA PARTE DE ABAJO DEL VIDEO.

De hecho, los archivos de Microsoft Word (.doc o .docx) no son binarios sino comprimidos.
Si tomas cualquiera de estos archivos y lo cambias a .zip, verás que por dentro tiene varias carpetas y archivos XML.

A mi me encanta visual studio code, pero ahora estoy usando IntelliJ IDEA, es genial! lo recomiendo mucho 😃

¿Qué hice, y como lo arreglo?

Los suricatos de la foto nos parecemos a los alumnos tratando de seguir a Fredy

Si escribes Code en git Bash automáticamente te abrirá Visual Studio Code.
Que trucazo no

Yo por el momento voy a usar Atom por una muy simple razón, no tengo internet residencial así que la velocidad de mi internet es de 256kbps.

Creo que a pesar de ser un tema sencillo de entender FREDDY nos refuerza de una forma muy amigable los conceptos principales. Un gigante!!

Prefiero y seguiré prefiriendo Atom, que es totalmente gratis, sublime Text es muy bueno pero esta demasiado caro, Visual studio code no me gusta visualmente , no me he podido acostumbrar a esa interfaz y los colores se opacan demasiado extraño en ese editor en algunos casos. Prefiero Atom, y por los lados estoy aprendiendo a utilizar Web Storm que es de pago pero regalan versiones full si tienes correo del SENA,

help: Muestra para que sirve el comando y los parametros que se le pueden pasar. (Solo para terminales bash)

man: Te permite visualizar un pequeño manual de los comandos, API functions, conceptos o programas. Es el sistema de documentacion tradicional de UNIX

info: Sistema alternativo que provee información de los comandos basados en GNU emacs. No es muy utilizado.

En el mundo de git lo que podemos editar es teto plano, lo que podemos editar y guardar como version es texto plano, git permite guardar archivos binarios pero no es tan precioso para indicar donde se llevaron a cabo dichos cambios como lo hace en un archivo de texto plano

Me encanta la apariencia de Atom, sin embargo me es más útil en mi día a día como programador usar Visual Studio Code. Pero, hack…

A VS Code le puse el tema de Atom! y tengo lo mejor de los dos editores!
Pueden encontrar el tema de Atom para VS Code aca

@luisround De Acuerdo, Visual Studio Code es el mejor, pero también usé Vi cuando programaba en Informix 4gl en UNIX hace unos años cundo no existían tantos editores, luego use uno muy bueno EditPlus 3 creo que van en la versión 5.

Realmente Visual Studio Code me siento familiarizado, ya que fue el editor que usé en unas lecciones introductorias de html y css en un instituto tradicional de mi localidad, pero era solo eso, unas clases de básicas de programación dentro de un cursos de sistemas. No nos enseñaron cosas importantes, como la diferencia entre texto plano y texto binario.

Para quienes quieran aprender a usar Vim les dejo este pequeño tutorial:

También hice un pequeño recopilatorio de vim para que tengan una referencia rápida con los comandos más básicos:

---- Vim Cheat Sheet ----

In Any Mode

Esc - Return to Normal mode

In Normal Mode

i - Enter to Insert mode
$ - Go to the End of Line
dd - Delete the current line
u - Undo
v - Visual (Selection for text copying)
y - Yank (Copy)
p - Paste
o - Insert a New line below actual line and enter to Insert Mode

In Command Mode

:q! - Quit without save (ZQ)
:x! - Quit saving changes (wq)
:w - Save without quit
:set number - Enable line numbers
:<LINE_NUMBER> - Go to LINE_NUMBER
😒 - Go to the last line
:/<SEARCH_KEYWORD>. <- Period is mandatory
n - Looks for the next occurrence of <SEARCH_KEYWORD>
:split <FILENAME> - Open a new file inside vim in horizontal tiling and enter into Split Mode
:vsplit <FILENAME> - Open a new file inside vim in vertical tiling and enter into Split Mode

In Split Mode

Ctrl + ww - Changes between vim window tiles

----- End of Vim Cheat Sheet -----

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

Editores de código:
Los editores de código son las herramientas que todo desarrollador debe tener a mano. Permiten editar código fuente en diversos lenguajes de programación y ofrecen múltiples herramientas para facilitar el trabajo y aumentar la productividad.
DIferencia entre archivo de texto plano y binario
Todos los archivos se pueden clasificar en uno de dos formatos de archivo – binario o de texto. Los dos tipos de archivos pueden tener el mismo aspecto en la superficie, pero codificar datos de forma diferente. Mientras tanto archivos binarios y texto contienen datos almacenados como una serie de bits (valores binarios de 1s y 0s), los del los trozos en archivos de texto representan caracteres, mientras que los bits en archivos binarios representan datos personalizados .Mientras que los archivos de texto contienen sólo datos de texto, archivos binarios pueden contener tanto datos binarios y texto con diseño personalizado.

visual studio Code sin duda el mejor editor de texto plano, muy recomendado, por defecto ya viene con muchas integraciones a comparación de otros editores, además te permite insertar un sin fin de extensiones para que mejores tu entorno dé desarrollo y tengas una mejor experiencia

texto plano -> son aquellos archivos formados exclusivamente por texto (sólo caracteres), sin ningún formato.
Archivo binario -> es un archivo informático que contiene información de cualquier tipo codificada en binario para el propósito de almacenamiento y procesamiento en ordenadores.

Yo inicie con Sublime Text, Empece a usar VSC hace un tiempo y creo que si es mejor.

servicio recomendado
⭐⭐⭐⭐⭐

Ja! Windows y Mac, Windows y Mac y la gente de linux… Se olvidan que VSCode también funciona en Linux

VScode 😃

Emacs!!!

Git es precisamente para archivos de texto plano

realmente solo he usado ATOM y me gusta mucho. Pero demosle la oportunidad a Visual Studio a ver qué

Viva Visual studio Code!

Team Visual Studio Code, yeeeah!

Visual Studio Code es muy poderoso

Usaré VSC.

Recomiendo mucho Visual Studio o Visual Studio Code

Me quedo igual con VS Code

Les recomiendo trabajar en visual studio code porque es amigable e interesante.

#TeamVisualStudioCode

Visual Studio Code, excelente editor.

Interesante la información proporcionada sobre que tipo de archivos trabaja git.

Que emoción, usaremos mi editor de codigo favorito 😄

VSCode ya funciona en Linux

"Esto es un texto plano
No tiene nada de especial
Y eso lo hace especial :3 "
-El CEO cacheton

Esto me esta costando, será cuestión de ver el curso varias veces 😃

VS code el mejor!!!

Datos✍🏻

📌 Archivo rtf (Rich Text Format)

Es un archivo enriquecido que soporta estilos en el texto como lo es negritas, colores, tipo de letra, tamaño. También soporta imágenes de manera sencilla.

📌 Archivo binario

Un archivo binario es aquel que contiene una información codificada en lenguaje binario. Estos archivos pueden ser hojas de cálculo, fotografías, audios, e incluso los ejecutables de otros programas.

📌 Editor de código

Programa que facilita a los programadores a escribir código, soporta multiples lenguajes de programación y tienen la opción de agregar plugins. Ejemplo VSC, Atom, Sublime.

📌 IDE (Integrated Development Environment)

A diferencia de un editor de código un IDE contiene herramientas más especificas para algún lenguaje o tecnología. Ejemplos Android Studio, Visual Studio.

📌 Visual Studio Code (VSC)

Es un Editor de código desarrollado por Microsoft.

Notas 📒

✏️ Archivos binarios y archivos de texto plano en git

Git trabaja con archivos de texto plano, guarda los cambios de manera precisa.
Git puede trabajar con archivos binarios, pero no será tan preciso en decir donde ocurrió el cambio.

El editor de texto no influye demasiado en nuestro trabajo, nos puede ayudar cuando necesitamos alguna herramienta extra y utilizamos un plugin

Por el momento me estoy asustando con la complejidad del curso, pero eso no me desanimará para seguir aprendiendo nuevos conocimientos.

Ahhhh Sos re trolll ¡¡¡¡

en Gnu/Linux usamos Vim pero si quiere algo mas sencillo nano es la mejor opción

editores de texto

  • Atom
  • Sublime Text 3
  • Visual Studio Code

VSC es genial, y añadiendo algunas extensiones es muy útil para escribir código

Yo uso vim

Git devops

Cuando decides no usar ningún editor de código como VS,Atom o Sublime y te vas directo a Vim y Nano en la terminal 😩👌🏻

este man va a mil por hora, jajajaj pero me agrada que en eta parte sea así para no perder tanto tiempo, ojalá en las partes complicadas le baje al acelerador

Voy a intentar avanzar con el curo usando Atom como editor.

@freddier si ves esto, por favor saca más cursos de programación 🙏🙏.
Me atrevo a decir, que todos lo queremos 🙇
Nunca pares de aprender… y nunca pares de enseñar

exelente clase.

Gracias por estas 48 Horas, nunca se me olvida que lo básico es saber GIT, por eso estoy aqui.

super! entendido lo que es un archivo binario!

Un archivo de word(.docx) no es texto plano(.txt). 😉

¿ Cuál es la diferencia real entre visual studio code y visual studio code - insiders ?

Genial!!

increible