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

Volver en el tiempo en nuestro repositorio utilizando reset y checkout

12/43
Recursos

El comando git checkout + ID del commit nos permite viajar en el tiempo. Podemos volver a cualquier versión anterior de un archivo específico o incluso del proyecto entero. Esta también es la forma de crear ramas y movernos entre ellas.

También hay una forma de hacerlo un poco más “ruda”: usando el comando git reset. En este caso, no solo “volvemos en el tiempo”, sino que borramos los cambios que hicimos después de este commit.

Hay dos formas de usar git reset: con el argumento --hard, borrando toda la información que tengamos en el área de staging (y perdiendo todo para siempre). O, un poco más seguro, con el argumento --soft, que mantiene allí los archivos del área de staging para que podamos aplicar nuestros últimos cambios pero desde un commit anterior.

Cómo usar Git Reset

Para volver a commits previos, borrando los cambios realizados desde ese commit, podemos utilizar:

  • git reset --soft [SHA 1]: elimina los cambios hasta el staging area
  • git reset --mixed [SHA 1]: elimina los cambios hasta el working area
  • git reset --hard [SHA 1]: regresa hasta el commit del [SHA-1]
    Donde el SHA-1 es el identificador del commit

Aporte creado por: Johan Mosquera

Aportes 727

Preguntas 267

Ordenar por:

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

Acá les dejo mis anotaciones, para quienes les puedan servir 😃

Ánimo compañeros! 😄

Me gustaría recomendarles una configuración para git log que vimos en un curso anterior de Platzi de Git. Con esta configuración conseguiremos ver nuestro log se vea de una forma un poco más amigable y fácil de leer.

Para ello simplemente tenemos que agregar a nuestra configuración de git un alias: un alias es un atajo para no escribir tanto código. Para ello lo que tenemos que hacer es escribir el siguiente comando en nuestra terminal:

$ git config --global alias.superlog log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all

Con esto agregaremos un “nuevo comando” para git llamado: git superlog. Recuerden que pueden asignar el alias que quiera, en mi caso fue superlog. Ahora cada vez que escribamos dicho comando nos aparecerá el log de la siguiente manera:

En la parte izquierda de color azul viene el identificador del commit (SHA) para que podamos movernos en el tiempo de manera rápida. (Por supuesto se pueden cambiar los colores a unos diferentes de los que puse.)

Este es el tercer curso de Git que doy aquí en Platzi y siempre mejora al anterior en sencillez y claridad. Gran curso y gran trabajo por parte de Freddy y del equipo de Teaching 😊

A nunca parar de aprender !

Al principio es muy dificil entender los conceptos del stage y el commit, lo se. Pero a mi me funciono verlo como una tienda. Les comparto:
Pensemos en una tienda donde comprar un plato de ensalada preparado con tus propias manos. Tu eliges los vegetales y tambien puedes comprar mas de uno.

  • En el momento que entras a la tienda es tu git init, todo ahi esta pero no todo lo vas a comprar, solo lo tienes a disposicion.

  • Entonces preparas un plato poniendo los vegetales e ingredientes. Haces lo mismo con dos o mas platos. Pero solo los que al final vas a comprar los pones en el carrito de compras, ese es tu git add plato_1. Lo que no lo ignoras git ignore plato_2.

  • Tal ves quieras sacarlos del carrito, eso seria git reset HEAD, pero si queres deshacer un plato que ya elaboraste, como que le quitas todo y pones todos lo vegetales en su lugar de regreso seria git rm --cached

  • Al final, llevas tu carrito de compras (stage) a la caja para pagar, el cajero te pide un texto o algo para ponerlo en tu recibo de compra, eso seria tu git commit -m “Mi primera compra aqui”. El cajero te da tu numero de recibo (JH6GFD67KJB889JJJNH…)

  • Asi, si quisieras volver a crear un plato en especifico que creaste en alguna de tu compras anteriores usas git checkout JH6GFD67KJB889JJJNH… plato_X para volver a tenerlo en tu mano, pero recuerda que tienes que volver a ponerlo en el carrito antes de pasar a la caja. O si pensandolo bien no lo querias, lo regresas con git checkout master plato_x

Con esta analogia, se me ha hecho mas facil ir entendiendo las cosas nuevas que voy aprendiendo de git conforme pasa el tiempo. Solo es cosa de ir encajando todo en su lugar, espero que les sirva a alguno de ustedes tambien.

Por no saber lo de la bendita Q, no saben las veces que reinicié la terminal jajaj 😦

¡¿Usted está loco?!

y para profundizar en todo lo relacionado con desarrollo web, https://platzi.com/cursos/programacion-basica/
https://platzi.com/cursos/html5-css3/
entra a esos cursos!

Préstenle muchísma atención a esta clase. En serio, jueguen con el Git Reset todo lo que puedan, yo he borrado un montón de cosas que no quería por utilizar mal el git reset.

Eliminar archivos

$git rm --cached: Elimina los archivos que estén en staging.
$git rm --force: Elimina los archivos tanto de Git como en el disco duro.

Comparar commits de archivos

$git diff commit1 commit2.

Volver a versiones anteriores del archivo

$git reset --soft: Elimina las versiones posteriores a la que queremos volver, sin embargo, los archivos staging siguen intactos.
$git reset --hard: Elimina las versiones posteriores a la que queremos volver, incluyendo los archivos staging.
$git reset HEAD: Hace que los archivos staging se vuelvan unstaged.
$git checkout: Al contrario de los $git reset, este es solo darle un vistazo a como era el archivo, ya que no elimina los comits, hay dos formas de usarlo:
1)$git checkout ID DEL COMMIT NOMBRE DEL ARCHIVO: vuelves a la versión anterior, puedes hacer que esa versión sea la última usando $git add.
2)$git checkout master: Hace que volvamos a la versión del último commit.

Para volver a commits previos borrando los cambios realizados desde ese commit podemos usar.

  • git reset --soft [SHA 1]: elimina los cambios hasta el staging area
  • git reset --mixed [SHA 1]: elimina los cambios hasta el working area
  • git reset --hard [SHA 1]: regresa hasta el commit del [SHA-1]

Donde el SHA-1 es el identificador del commit

Me siento todo un pro usando git:3

Al final hice un cagadero con las versiones, creo que tendré que volver a empezar jajaja.

el repositorio de Freddier con todos los commits que el hace lo puedes encontrar aquí:
https://github.com/freddier/hyperblog

Recomiendo que hagan la practica de este ejercicio, se va utilizar mucho mas adelante. NO LO PASEN POR ALTO POR FAVOR. Lo digo por experiencia propia.

Para no escribir todo el codigo html basta con escribir html:5 en un archivo html y darle enter


Un dato curioso: realmente si se puede revertir un git reset --hard, pero solo si tienes el hash del commit del head que estaba antes de que lo hicieras (por eso es muy importante antes de hacer git reset --hard, primero hacer un git log y guardar los hashes en alguna parte si te arrepientes)

Creo que estoy super **enamorado de Git ** uno de mis hobbies es la animación y carpetas como estas eran super comunes y fastidiosas para mi.
![](
Y es que tengo que hacer un montón de cambios a un proyecto por ejemplo, que si un actor de voz no grabo las lineas completas o que al final hay que hacer un inserto , retrackear los fotogramas que si hay que insertar o quitar mas fotogramas para sincronizar una escena en fin un monto de cosas que al final generan un monton de carpetas.
Estuve probando ** Git ** con estas carpetas y archivos de animación y funciona mega bien, me parece super fantástica la herramienta.
![](
No se como pude estar tanto tiempo sin conocerte GIT estoy super emocionado y feliz de seguir con el curso. “para los curiosos si quieren ver mi trabajo solo visiten mi perfil XD”

Dos comandos para tener en cuenta

<git log --stat>

Te muestra los commits realizados y los cambios que se hicieron en cada uno de ellos.

<git checkout "número de commit" "nombre de archivo">

Te cambia ese archivo [“nombre del archivo”] a ese momento de la historia [“número de commit”], si haces git status te dice que ese archivo esta modificado y si haces git commit borras todo lo actual. Para volver basta con git checkout master “nombre del archivo”

Esto indica, además, que el comando checkout no solo sirve para crear o moverse entre ramas, sino para moverse en la linea de tiempo de los commits.

Es un log personalizado que detalla los archivos modificados en cada commit. Se crea de ejecutando el siguiente comando:

$ git config --global alias.superlog “log --decorate --all --stat --date-order --date=format:’%Y-%m-%d %H:%M:%S’ --pretty=format:’%C(203 bold)%h%Creset %C(39 bold)%ad%Creset %C(green bold)(%ar)%C(reset) - %C(220)%an%C(reset) %C(auto)%d %s’”

Para ver el resulta ejecutar:
$ git superlog

Otra manera de mostrar el log de una manera intersante de mostrar el log es usando log-foresta, queda asi:

Para quiénes quieran usar teclado y no usar el mouse tan seguido (que en mi humilde opinión, interrumpe un poco el flujo de trabajo al estar cambiando la mano izquierda hacia el mouse desde el teclado y viceversa), pueden usar los siguientes shortcuts
Copiar: Crtl + insert
Pegar: Shift + insert
Cabe destacar que el pegar, si no hay nada en el clipboard, pegará automáticamente lo seleccionado en la linea de input de comandos

SOLO si por casualidad se preguntaron por que al poner
"$ git diff" en el minuto 05:57
no muestra los cambios que se hicieron en el archivo de css.
es por que git solo compara lo que esta en el directorio y en el staging. ya que el archivo de css solo esta en el directorio no se muestra en la comparación.

En Visual Studio Code solo tienen que poner un signo de exclamación ( ! ) y presionar enter para que automáticamente se ponga ala estructura básica de html.

los comandos utilizados fueron los siguinetes:

-git log --stat: para ver el listado de los commit realizados y mas informacion como los bits que fueron agregados al archivo.
-git reset: para borrar commits y trasladarte al pasado del archivo. Existen distintos tipos de git reset, el mas utilizado es el git reset --hard.
-git checkout: para visualizar un commit el cual trae la version al cached
y se puede visualizar lo que tiene el archivo del commit seleccionado. (No puedes hacer commit en este estado, ya que todo se borra y se actualiza con el commit seleccionado)
-git checkout master: para devolver el commit y el archivo a su ultimo estado.

si hicieron… $git reset code --hard //y luego
$git log
//y no les muestra todos los commit usen el comando
$git reflog
//este les da todo los commit que habian hecho antes

git log Archivo.txt // mostrara los ID de los commits realizados al archivo

git checkout (idcommit) // nos regresara  los cambios commit deseado
git reset (idcommit) -- soft /*Mantiene los cambios en staging para que 			podamos aplicar los cambios en un commit anterior.*/
git reset (idcommit) --hard /*Borra toda la anterior incluyendo la que esta en staging*/

Una particularidad que note es que puedes crear los archivos más comunes con el comando touch y añadiendo la extensión, por ejemplo escribe touch blogpost.html y se generará.

git log --oneline
Para ver los commit en una linea es mas conveniente a mi parecer

Como dato el comando git log puede tener el argumento ** -n**, donde n es el numero de commits que quieres que te muestre a partir de la versión HEAD. Por ejemplo
git log -4
solo mostrara los últimos 4 commits.

Comparto los comandos que apunté:

git add --all / git add .
git commit -am "Mensaje"
git log nombre_archivo.extension/nombre_carpeta (Muestra un perfil de los commit de un archivo, carpeta o rama)
git log --stat (Muestra datos adicionales de lo modificado)
git show (Muestra todos los cambios realizados en el último commit)
git reset numero_commit 
git checkout nombre_branch/numero_commit
git diff (Muestra los cambios untracked)
git reset --hard/--soft numero_commit
git reset <numero_del_commit> --hard  /* Forza un reset duro*/

git reset <numero_del_commit> --sort /* Hace un reset, sin embargo deja en el proceso stating los cambios o archivos agregados */

Cuando quieran aprender un poco más sobre alguno de los elementos de Git, o tengan dudas sobre cómo usarlo, escriban en la consola el elemento que desean investigar, seguido de “help”. Ejemplo:

$  git  log  --help

¿Soy el único que se divierte un montón cada vez que Freddy dice “¿USTED ESTÁ LOCO?”

esta clase reafirma el amor propio de freddy jajaja

Me copa como te enseña freddy

Si viajan al pasado no olviden regresar con

git switch -

Cuando uno coloca el comando git log --stat muestra las lineas que cambiaron y no la cantidad de bytes

por favor expliquen lentamente los pasos de lo que realizan en la clase, dicen super rápido y tecleando creo carpeta css voy vs code creo archivo, cambio nombre, tan sumamente rápido que no se ven ni los pasos ni como se va haciendo. yo al menos tengo nivel básico y me ha costado mucho seguirle, gracias

Si solo quieren rescribir el mensaje del ultimo commit apliquen este comando git commit --amend --no-edit “Aquí el nuevo mensaje que quieren enviar”.

Ya solucione mi problema siempre es bueno leer la documentación del tema que estemos tratando recuerden que leer es aprender .

Aqui les dejo el link de la documentación de git para mas dudas .

https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History

A veces en otros cursos pongo el video a velocidad 1.25x o 1.5x; pero con Freddy es mejor dejarlo a velocidad normal o te pierdes un poco 😂 (Eso hace el curso un poco mas emocionante)

<h4>Versionado</h4>

Cada commit crea una nueva versión del repositorio en la rama en la que nos encontremos.

  • git commit -m "": Crea una nueva versión con los cambios realizados.
  • git log: Muestra el historial de commits.
    • --stat: Muestra el mismo historial de commits pero con un resumen de los cambios.
  • git show <archivo>: Muestra el historial de los cambios realizados en un archivo.
  • git diff: Muestra las diferencias entre la versión del directorio y la del staging.
  • git diff <commit> <commit>: Compara dos versiones y muestra las diferencias.
  • git reset <commit>: Nos permite volver a versiones anteriores, tiene dos argumentos:
    • --hard: TODO vuelve a la versión indicada. (PUEDE SER PELIGROSO)
    • --soft: Se vuelve a la versión indicada, pero la versión en staging sigue ahí, lista para hacer commit.
  • git checkout <commit || branch> <archivo>: Permite el salto entre versiones, manteniendo este último movimiento en el staging.
    • Omitir el archivo permite que el salto de versiones afecte a todos los archivos del proyecto.

📌 git diff permite llevar a cabo una función para establecer las diferencias en los orígenes de datos de Git. Dichos orígenes de datos pueden ser confirmaciones, ramas y archivos, entre otras posibilidades.

Algunos comando básicos de git que vale tener a la mano.

Comandos git a la mano

Les comparto mi repositorio de los comandos mas utilizados de git y la terminal.

https://github.com/guajardo/Comandos-git

Espero y les sirva!

Acá es donde es bueno ir haciendo un uso ordenado de versiones, que si bien git te ayuda a mantener todo organizado, es muy fácil perderse y cometer errores graves.

Cuando hice el git checkout me salio un mensaje diciendo
"You are in ‘detached HEAD’ state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
"
Es normal? hice los cambios y todo y al final me di cuenta que borro mi html y mi css

Cuando quieran aprender un poco más sobre alguno de los elementos de Git, o tengan dudas sobre cómo usarlo, escriban en la consola el elemento que desean investigar, seguido de “help”. Ejemplo:

$  git  log --help

Como tip adicional:
git reset archivo.txt
Saca del staging a cualquier archivo que tengan en el staging, por si hay algo en particular (como un archivo de configuración) que no quieran mandar al commit

git reset: nos permite volver a una version anterior a la que estamos trabajando
git log --stat
git checkout +ID commit +nombreArchivo.txt: me permite regresar a una version anterior
git reset +id commit: nos permite regresar en el tiempo pero ademas borramos los cambios que hicimos despues del commit
git reset idcommit --hard borramos la informacion en el area de staging
git reset idcommit --soft mantiene los archivos all en el area de staging para aplicar nuestros ultimos cambios pero desde un commit anteior.

git-reset --soft “sha-1”: Lo que hace esta función es restaurar todos los cambios que se hayan hecho desde ese codigo sha-1 en adelante. Pero deja los archivos en staging para hacer un nuevo commit.
git-reset --mixed “sha-1”: Lo que hace esta función es restaurar todos los cambios que se hayan hecho desde ese codigo sha-1 en adelante. Incluso saca los archivos de staging osea que quedan en woeking directory.
git-reset --hard “sha-1”: Lo que hace esta función es eliminar los cambios y archivos del working directory y staging area desde ese codigo sha-1 en adelante. En caso de haber eliminado todo erroneamente, introducir git reset --hard con el codigo sha-1 que queremos recuperar y volvera todo hasta ese codigo, eso solo se puede hacer si tenemos el codigo. Siempre escribir git log y no limpiar pantalla para poder tenerlo al codigo por las dudas

Recordatorio: si se les cierra el bash, para regresar a la carpeta, solo deben poner: cd proyecto1

Después de poner “git log --stat” deberán presionar Q para continuar con los comandos.

“git checkout master historia.txt” se emplea para regresar al archivo de origen.

Relacionado al comando git log --stat, me parece que los números que vemos tienen que ver con líneas de código más que con bytes propiamente dichos. Así tambien lo dice la documentación:

“…la opción --stat imprime tras cada confirmación una lista de archivos modificados, indicando cuántos han sido modificados y cuántas líneas han sido añadidas y eliminadas para cada uno de ellos…”

Freddy repitió esto un par de veces en otros comandos hasta ahora y probablemente sea para simplificarlo pero es para tenerlo en cuenta.

Volver en el tiempo en nuestro repositorio utilizando reset y checkout

git reset #commit tag --hard Si usamos este todo vuelve al estado anterior es el mas peligroso pero es el mas común y el que mas la gente usa. Al usar este nos notifica el cambio de cabeza
git reset #commit tag --soft Este nos permite volver a la versión anterior pero lo que tengamos en staging sigue en staging, es decir si hemos hecho cambios y hemos hecho un git add estos archivos siguen en staging disponible para el próximo commit, simplemente que en el directorio de trabajo vuelve a la versión anterior.

Al usar un reset hard y hacer git log nos muestra como si todo lo que hubiéramos trabajado antes hubiera desaparecido por completo. Esto realmente borra todo lo que hicimos antes, esta es una forma de volver al pasado de una manera agresiva.

Ahora que tenemos cosas en el directorio de trabajo, staging y repositorio distintas podemos usar simplemente git diff, esto nos muestra los cambios que tenemos en staging vs lo que tenemos en el disco duro (directorio actual)

git log --stat Nos permite ver los cambios específicos hechos en cuales archivos a partir del commit

git checkout #committag historia.txt Con este podemos ver como era el archivo elegido en la primera versión o el commit tag que elijamos, esto nos modifica el archivo que teníamos en master a la versión que elegimos, de manera que si hacemos un commit borraremos todo lo que hicimos antes.

git checkout master historia.txt Esto nos devuelve a la versión master de historia.txt que es la ultima versión que yo había commiteado la ultima vez.

Esta es la forma para volver a ver lo que había en una versión anteriormente con el git checkout pero esto es muy peligroso. En el ejemplo vemos que se vuelve a una versión anterior del archivo .txt, se hacen modificaciones, se agrega a staging y luego se envían a la rama master (git checkout #committag historia.txt, modifica el archivo txt, git add ., git commit -m “mensaje”).

Jajaja me siento como McFly volviendo al pasado para arreglar el futuro!
ME gusta mucho!

falta el uso del comando git switch - , en caso entraste a una verson entera de un anterior commit, es para regresar y recuperar todos los archivos nuevos que agregaste al dar commit

¿Entonces git checkout tiene la misma utilidad que git reset?

Pro tip: si modificas o eliminas archivos que ya estaban siendo seguidos (tracked) por Git y quieres agregarlos todos al stage, para después hacer commit, puedes utilizar un solo comando:

git commit -am "Mensaje del commit"

En vez de:

git add .
git commit -m "Mensaje del commit"

Ojo: los archivos nuevos (untracked) necesitan ser agregados al stage con git add <file>

Cada vez que dejo archivos sin commit escucho la voz de Freddy diciendo Usted esta Loco!!!

Si se rieron como yo cuando Freddy dijo : “Ud esta loco”

Alguien mas reduciendo la velcidad del video para seguir a Freddy? El seria un gran subastador

Desde hace como 5 videos no sabía como salirme del vizualizador xd. Gracias por la “q”

Solo para que lo tengan en cuenta:
Git no hace tracking de directorios vacíos. Tienen que ponerle algún archivo adentro para que la ruta quede en el repositorio.

Sigan en estudio.

Para crear un html basico puedes escribir:

html:5

y a continuacion aparecera una estructura basica para empezar a editar

Yo creo que la documentación de git es super completa es por esto que recomiendo verla por esta razón dejo el link Spanish Book aqui pueden descargar el libro en el idioma que ustedes quieran.

Si tienen problemas con el visor y les crea un “:” en ves del signo “$” para seguir escribiendo los comandos, aquí les dejo algunas soluciones.
Crtl + q
Crtl + z
Q

Si el problema se solucionó pero ahora no puedes ver el comando que ingresas, entonces escribe (a ciegas) “reset”
-Se reiniciará Git Bash. No te preocupes, no perderás nada.

Tengo 5 commits hechos a mi archivo, y quiero volver al commit 2 y borrar para siempre los 3 commits restantes.

Tengo 5 commits y quiero volver al commit 2 pero mantener los 3 commits restantes en el staging area.

$ git reset --hard es el comando más utilizado comúnmente.

Latam para el mundo

De la misma manera es interesante visualizar los cambios realizados por medio de Visual studio code.

Manejar o sobre escribir versiones

  • git checkout id_commit : ver como era la version antes de los cambios
  • git checkout master nombre_archivo : obtener nuevamente la ultima version a la que se hizo commit

IMPORTANTE: si quiero regresar a una version anterior ocupo git checkout id_commit realizo mis cambios y vuelvo a subir la version con git add nombre_archivo_ y git commit -m “regreso a version anterior”, si quiero respetar la ultima version regreso con git checkout master nombre_archivo

Para el git checkout no es necesario escribir todo el número, solo con los 6 primeros números que identifican el commit se puede hacer de igual manera.

Comando util

git reset HEAD^

te borra del staging el ultimo commit sin borrar los cambios , situacion ejemplo hiciste commit antes de tiempo con nombre equivocado o simplemente no querias hacer commit puedes usar este comando arreglar tus cambios y hacer commit normalmente.

  1. git log --stat: Commit descriptivo con cantidad de líneas agregadas y removidas por archivo
  2. git reset --soft <commit>: Mantener cambios recientes pero borrarlos del historial del repo
  3. git reset --hard <commit>: Borrar cambios recientes sin mantenerlos en el historial del repo
  4. git diff: Revisar cambios entre staging y modificaciones no agregadas a staging
  5. git checkout <commit|branch>: Cambiar todos los cambios desde el commit actual al commit seleccionado sin borrar historial
  6. git checkout <commit|branch> <file>: Traer los cambios seleccionados de un archivo establecido desde otro commit
Debes ver los vídeos un par de veces más para que entiendas. Recuerden, la repetición es la madre del aprendizaje.

Hice un checkout sobre el HEAD y ahora me sale $ HEAD detached from 3de2a43, ¿Como puedo arreglar este error?

git no te mueras nunca, es mágico todo lo que puedes hacer con esta herramienta

Le recomiendo profundamente a cada estudiante visitar el sitio web de Atlassian Bitbucket para profundizar cada concepto de clase.

Para ver un resumen de todos sus comitts intenten git log --oneline, es poderoso este comando

Algo interesante que vi es que si hacer un git checkout + el nombre de un commit, te crea una rama alterna y te explica que puedes hacer cambios a los archivos y hasta commitearlos. Si lo haces y después quieres cambiar de rama te recuerda que aún puedes rescatar los cambios al crear otra rama pero si lo olvidas y después quieres regresar se eliminan los cambios. Super interesante! Solo una cosa, alguien sabe a que se refiere este warning?

warning: LF will be replaced by CRLF in archivo.txt.
The file will have its original line endings in your working directory

Les dejo mis apuntes.

Git reset - hard (borra commit y devuelve archivo a la versión solocitada)

Git reset -soft (Borra commit más no modifica el archvo sino que deja los cambios en staging listos para ser enviados a repositorio por medio de commit)

Git reset (Borra commit, no modifica los archivos pero sí los saca de staging. Es necesario agregarlos de nuevo por medio de git add)

… " (y perdiendo todo para siempre)"…

acabo de ponerlo a prueba y no es así ya que puedes volver a cualquier version siempre q tengas el id del commit.

it reset + número de identificación + --hard (borra todo alv)
git reset + número de identificación + --soft (lo que está en staging sigue ahí y si se le da add, se agrega)

estas clases cada ves me envician mas y mas

Spoiler alert!:
No todo esta perdido con el reset --hard
Guarda tus commits 😄

cuidado porque el checkout master también eliminar lo que se encuentra en staging, ya no puedo recuperar lo que tenía ni en staging ni en el repositorio antes del checkout master

La forma en la que Freddy da clase hace que entienda aún mejor!

Freddy, que bien explicado todo esto! Ya había llevado un curso de GIT y primero me perdí y deje el curso, este lo terminaré, estoy seguro!!!

Era la Q!!!

con la letra Q te sales del "git log --stat", esto pasa porque los cambios son mas largos delo que te permite ver la pantalla.

Si usan MAC y el comando ‘code’ no les funciona en consola, pueden hacer lo siguiente:

  1. Entrar a visual studio code
  2. Presionar shift + cmd + p
    3.Escribir y seleccionar la opcion
    Shell Command: Install comand ‘code’ in PATH
  3. Reiniciar la consola y ¡Listo!
    😄

Encontré de casualidad una forma de copiar y pegar los commits mucho mas rápido.
Cuando seleccionamos el commit que queremos copiar, en vez de darle copy, damos paste y queda pegado en donde lo necesitamos, sin necesidad de copiar y luego pegar.

A veces me confundo con algunos comandos, trato de no volver a los apuntes al practicar.
Que buenas clases!!