Introducci贸n a Git

1

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

2

驴Qu茅 es Git?

3

Instalando 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?

11

驴Qu茅 es 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

C贸mo funcionan las llaves p煤blicas y privadas

19

Configura tus llaves SSH en local

20

Uso de GitHub

21

Cambios en GitHub: de master a main

22

Tu primer push

23

Git tag y versiones en 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

C贸mo usar Git Stash: guarda cambios temporalmente

37

Git Clean: limpiar tu proyecto de archivos no deseados

38

Git cherry-pick: traer commits antiguos al head del 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

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Flujo de trabajo b谩sico con un repositorio remoto

14/43
Recursos

Cuando empiezas a trabajar en un entorno local, el proyecto vive 煤nicamente en tu computadora. Esto significa que no hay forma de que otros miembros del equipo trabajen en 茅l.

Para solucionar esto, utilizamos los servidores remotos: un nuevo estado que deben seguir nuestros archivos para conectarse y trabajar con equipos de cualquier parte del mundo.

Estos servidores remotos pueden estar alojados en GitHub, GitLab, BitBucket, entre otros. Lo que van a hacer es guardar el mismo repositorio que tienes en tu computadora y darnos una URL con la que todos podremos acceder a los archivos del proyecto. As铆, el equipo podr谩 descargarlos, hacer cambios y volverlos a enviar al servidor remoto para que otras personas vean los cambios, comparen sus versiones y creen nuevas propuestas para el proyecto.

Esto significa que debes aprender algunos nuevos comandos

Comandos para trabajo remoto con GIT

  • git clone url_del_servidor_remoto: Nos permite descargar los archivos de la 煤ltima versi贸n de la rama principal y todo el historial de cambios en la carpeta .git.
  • git push: Luego de hacer git add y git commit debemos ejecutar este comando para mandar los cambios al servidor remoto.
  • git fetch: Lo usamos para traer actualizaciones del servidor remoto y guardarlas en nuestro repositorio local (en caso de que hayan, por supuesto).
  • git merge: Tambi茅n usamos el comando git merge con servidores remotos. Lo necesitamos para combinar los 煤ltimos cambios del servidor remoto y nuestro directorio de trabajo.
  • git pull: B谩sicamente, git fetch y git merge al mismo tiempo.

Adicionalmente, tenemos otros comandos que nos sirven para trabajar en proyectos muy grandes:

  • git log --oneline:Te muestra el id commit y el t铆tulo del commit.
  • git log --decorate: Te muestra donde se encuentra el head point en el log.
  • git log --stat: Explica el n煤mero de l铆neas que se cambiaron brevemente.
  • git log -p: Explica el n煤mero de l铆neas que se cambiaron y te muestra que se cambi贸 en el contenido.
  • git shortlog: Indica que commits ha realizado un usuario, mostrando el usuario y el t铆tulo de sus commits.
  • git log --graph --oneline --decorate y
  • git log --pretty=format:"%cn hizo un commit %h el dia %cd": Muestra mensajes personalizados de los commits.
  • git log -3: Limitamos el n煤mero de commits.
  • git log --after=鈥2018-1-2鈥
  • git log --after=鈥渢oday鈥 y
  • git log --after=鈥2018-1-2鈥 --before=鈥渢oday鈥: Commits para localizar por fechas.
  • git log --author=鈥淣ame Author鈥: Commits hechos por autor que cumplan exactamente con el nombre.
  • git log --grep=鈥淚NVIE鈥: Busca los commits que cumplan tal cual est谩 escrito entre las comillas.
  • git log --grep=鈥淚NVIE鈥 鈥搃: Busca los commits que cumplan sin importar may煤sculas o min煤sculas.
  • git log 鈥 index.html: Busca los commits en un archivo en espec铆fico.
  • git log -S 鈥淧or contenido鈥: Buscar los commits con el contenido dentro del archivo.
  • git log > log.txt: guardar los logs en un archivo txt

Aporte creado por: HellenBar

Aportes 839

Preguntas 116

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Algunos comandos que pueden ayudar cuando colaboren con proyectos muy grandes de github:

  1. git log --oneline - Te muestra el id commit y el t铆tulo del commit.
  2. git log --decorate- Te muestra donde se encuentra el head point en el log.
  3. git log --stat - Explica el n煤mero de l铆neas que se cambiaron brevemente.
  4. git log -p- Explica el n煤mero de l铆neas que se cambiaron y te muestra que se cambi贸 en el contenido.
  5. git shortlog - Indica que commits ha realizado un usuario, mostrando el usuario y el titulo de sus commits.
  6. git log --graph --oneline --decorate y
  7. git log --pretty=format:"%cn hizo un commit %h el dia %cd" - Muestra mensajes personalizados de los commits.
  8. git log -3 - Limitamos el n煤mero de commits.
  9. git log --after=鈥2018-1-2鈥 ,
  10. git log --after=鈥渢oday鈥 y
  11. git log --after=鈥2018-1-2鈥 --before=鈥渢oday鈥 - Commits para localizar por fechas.
  12. git log --author=鈥淣ame Author鈥 - Commits realizados por autor que cumplan exactamente con el nombre.
  13. git log --grep=鈥淚NVIE鈥 - Busca los commits que cumplan tal cual est谩 escrito entre las comillas.
  14. git log --grep=鈥淚NVIE鈥 鈥搃- Busca los commits que cumplan sin importar may煤sculas o min煤sculas.
  15. git log 鈥 index.html- Busca los commits en un archivo en espec铆fico.
  16. git log -S 鈥淧or contenido鈥- Buscar los commits con el contenido dentro del archivo.
  17. git log > log.txt - guardar los logs en un archivo txt

馃挮Dejo esto por aqu铆. Una nota que resume la clase.

隆Nunca pares de aprender! (Y practicar)馃

Un resumen gr谩fico bastante 煤til!
Si consideran que le falta, avisen y lo mejoramos

Hay un concepto que a lo largo del curso esta mal. 鈥淓l staging area esta en memoria鈥, y eso es absolutamente incorrecto. El staging area esta en el disco. Es persistente. Podes apagar o resetear la computadora, dejarla prendida 1000 a帽os y no se va a borrar ya que esta en el disco, es persistente.
https://git-scm.com/book/en/v1/Getting-Started-Git-Basics
"The staging area is a simple file, generally contained in your Git directory, that stores information about what will go into your next commit. It鈥檚 sometimes referred to as the index, but it鈥檚 becoming standard to refer to it as the staging area."

Espero que a alguien le ayude.

隆Espero te guste! 鉂わ笍


@sebas.nop

Freddy deber铆a dar m谩s cursos!!

Mi forma de estudiar y asimilar los videos de platzi es la siguiente:

  1. Veo el video sin anotar ni codificar nada.
  2. Veo el video nuevamente y voy codificando a medida que va reproduciendo el video, as铆 asimilo lo nuevo. En caso de que el video vaya r谩pido y no me de tiempo de codificar lo mostrado, detengo el video, codifico y luego sigo.
  3. Obviamente algunas veces, el contenido del video no se entiende o es dificil de asimilar. En este caso repito el video nuevamente o la parte del video que no entiendo.
  4. Leo las notas del video y las copio en un archivito txt para consultar mas adelante por si se me olvida algo.
  5. Leo los comentarios y anoto o copio lo m谩s interesante.

Un ligero resumen con dibujos de esta parte :3
link

Hola, les dejo mis apuntes de la clase.

"fredy es el mejor profesor,pero ustedes no estan listos para esta conversaci贸n"

Hola a todos , les comparto un resumen que monte de mas o menos el orden l贸gico del proyecto y uso de los comandos en GIT, espero les sea 煤til para imprimir y tener a la mano para dominar mejor todo.

Esta es la tercera vez que llego a esta clase y siempre tengo un sustillo cuando veo a freddy diciendo No veas esta clase a menos que hayas practicado todos los comandos de las clases anteriores.
Pero miro los videos dos veces uno tomando apuntes y el segundo para ver que entend铆 todo correctamente.

Aqu铆 dejo un mapa conceptual que hice:

Recuerda que en la secci贸n de recursos encuentras los slides que Freddy utiliza en esta clase!

Apuntes

Hola!

Me preguntaba porqu茅 usar git fetch sobre git pull y bueno, encontr茅 una muy buena respuesta aqu铆:

https://www.atlassian.com/git/tutorials/syncing/git-fetch

En una conclusi贸n muy r谩pida, no est谩 de m谩s tener en cuenta que con pull llevas a cabo una actualizaci贸n un poco m谩s agresiva del repositorio local mientras que con fetch (y sus opciones) podr谩s hacer una revisi贸n de lo que est谩s trayendo antes de afectar la copia local.

En palabras de Atlassian: 鈥淓l comando git fetch es una pieza cr铆tica del flujo de trabajo colaborativo de git. git fetch tiene un comportamiento similar a git pull aunque git fetch puede ser considerado como una versi贸n m谩s segura y no destructiva鈥 [traducci贸n propia].

Saludos!!

una historia de terror sobre control de versiones mientras van repasando鈥

https://www.xataka.com/cine-y-tv/como-pixar-recupero-toy-story-2-borrar-toda-pelicula-error-copia-seguridad

Mis anotaciones

#To config the user

$ git config --global user.name 鈥渏ohan7perez鈥
$ git config --global user.email "[email protected]"

#To see the current config
$ git config --list

#To see where the git configuration is stored
$ git config --list --show-origin

#To start a new empty project with git
$ git init

#To see the status of the current project
$ git status

#To add a new file/modificated file to the staging area
$ git add

#To remove a new file/modificated file from the staging area (cached, remove the file from the ram memory also)
$ git rm --cached

#To see the history of a file
$ git show

#To show the log of the commit or a file, stat is to see the changes at a bytes level
$ git log [鈥搒tat]

#To confirm the changes that we have in the staging area
$ git commit -m 鈥淢essage鈥

#To see the differences of two files / if we do not pass any flag it will compare the current directory and the staging area
$ git diff [commit file code] [another commit file code]

#To back in the time, if it鈥檚 hard will delete everithing made, but if it鈥檚 not, will treat the file as a modificated/untracked file
$ git reset [commit code] [鈥揾ard]

#To see back in the pass and see the status of a file / for leave the file in the original state just use 鈥榞it checkout master鈥
$ git checkout [commit code] [file name]

en los proyectos reales, es muy recomendable hacer Pull, antes de hacer un add, un commit y un** push**, ya que as铆 vamos a tener la certeza que nuestro repositorio local, cuenta con todos los cambios y archivos que est谩n en el repositorio remoto actuales. y evitaremos entrar en alg煤n conflicto o error con nuestro repositorio local

la diferencia de freddy a otros maestros de platzi y otras plataformas es que el no anda con tecnicismos y se pone en el lugar de alguien que no conoce del tema, es muy buen maestro.

LOL ya me voy a practicar, regreso pronto.





Mi resumen:

Estupenda manera de motivar el aprendizaje Freddy, le agradezco nuevamente por los v铆deos.
Por cierto, para aquellos que tienen problemas para borrar los repositorios que ya no usan, ac谩 les comparto un post donde explican como hacerlo para los distintos sistemas operativos.

鈻篽ttps://stackoverflow.com/questions/1213430/how-to-fully-delete-a-git-repository-created-with-init鈼

He buscado algunos playgrounds para poder practicar en otros computadores en los cuales no debo instalar nada. El mejor que me he encontrado es este: https://www.katacoda.com/courses/git/playground

Flujo de trabajo en GIT:

Carpe diem:
En general la explicaci贸n es buena, pero IO, estoy utilizando linux con sus t铆picas terminales espartanas que ponen bello plateado en tu pecho. Por tanto hay que utilizar comandos para saber la rama y el HEAD, para lo primero est谩n dos comandos, a saber:
git branch
git show-branch
El segundo da un poco m谩s de informaci贸n. Para saber el HEAD est谩
git show HEAD
Si, hay que escribirlo con may煤sculas, sino tira un error.
Bueno todo este tr谩mite si te decides a utilizar la terminal a pelo, pero si no quieres esto puedes utilizar editores como vi, que es el que le sale a Freddy cuando no pone texto en los commit, en mi linux me sale el editor nano por defecto, pero realmente el editor m谩s recomendado es NEOVIM con sus m铆ticos plugins. Hay una enorme ventaja en utilizar un editor embebido en la teminal, ya que podr铆as desarrollar c贸digo sin utilizar ning煤n ambiente de ventanas (como a menudo est谩n configurados los servidores) o utilizar un ambiente de baldosas (un ejemplo es Qtile) relevando tu compu de utilizar muchos recursos. Se puede correr un linux con todos los jugetes de desarrollo en 250 MB de RAM!
Saluti,
Fabricio

Me gusta esta metodolog铆a, que cada tantas clases del curso hagan un repaso con algunas l谩minas indicando que es lo pr贸ximo que se va a ver y como se supone que se utiliza y que entra dentro de la ruta de aprendizaje. Es un mejora sustancial respecto al curso anterior de Git

<!-- basico -->
git init -> inicia un repositorio
git add $nombreArchivo -> a帽ade un archivo al repositorio local
git add . -> a帽ade todos los cambios al repositorio local
git commit -m 鈥渃omentario鈥 -> ejecuta un commit
git commit -am 鈥渃omentario鈥 -> ejecuta un commit y ejecuta el add al mismo tiempo (pero no agrega archivos nuevos, solo cambios a existentes)

<!-- rollback -->
git reset $idDeEstado --hard -> hace un rollback de un estado en repositorio local, elimina todos los commit hechos
git reset $idDeEstado --soft -> hace un rollback de un estado en repositorio local, No elimina los commits, estos quedan guardados en repositorio local
git checkout $idDelEstado --> hace un rollback a un estado

<!-- branch -->
git branch -> muestra todas las ramas
git branch $nombreDeLaNuevaRama -> crea un branch nuevos
git checkout $nombreDeBranch -> Cambia de branch
git merch $nombreDeBranch -> fuciona dos ramas

<!-- comandos para traer data del repositorio remoto -->
git fetch -> descarga un estado del repositorio remoto al repositorio local
git merge -> ejecuta en los archivos de un repositorio local
git pull -> descarga un estado del repositorio remoto al repositorio local y a los archivos (osea combina un fetch y un merge)

<!-- comandos para ver estados -->
git status -> muestra el estado del commit antes de enviarse
git log -> muestra un registro de los commits ejecutados

Los cursos con Freddy son demasiado interesantes.

Me convenciste, voy a practicar y vuelvo 馃槢

Gracias por recordarnos que debemos practicar y no s贸lo ver las clases como locos!

Nadie se hab铆a preocupado tanto por m铆.

Platzi 鉂わ笍

El premio al mejor maestro de Platzi es para: Freddy Vega.

M谩s profesores como Freddy por favor!

Esta entendible mi resumen?

<h1>Curso de Git en Platzi</h1>

Comandos para mover archivos entre los estados de Git:

  • $ git init - Inicializa un repositorio local.
  • $ git status: Nos permite ver el estado de todos nuestros archivos y carpetas.
  • $ git add: Nos ayuda a mover archivos del Untracked o Unstaged al estado Staged. Podemos usar git nombre-del-archivo-o-carpeta para a帽adir archivos y carpetas individuales o git add -A para mover todos los archivos de nuestro proyecto (tanto Untrackeds como unstageds).
  • $ git reset HEAD: Nos ayuda a sacar archivos del estado Staged para devolverlos a su estado anterior. Si los archivos ven铆an de Unstaged, vuelven all铆. Y lo mismo se ven铆an de Untracked.
  • $ git commit: Nos ayuda a mover archivos de Unstaged a Staged. Esta es una ocasi贸n especial, los archivos han sido guardado o actualizados en el repositorio. Git nos pedir谩 que dejemos un mensaje para recordar los cambios que hicimos y podemos usar el argumento -m para escribirlo (git commit -m 鈥渕ensaje鈥).
  • $ git rm: Este comando necesita alguno de los siguientes argumentos para poder ejecutarse correctamente:
  • $ git rm --cached: Mueve los archivos que le indiquemos al estado Untracked.
  • $ git rm --force: Elimina los archivos de Git y del disco duro. Git guarda el registro de la existencia de los archivos, por lo que podremos recuperarlos si es necesario (pero debemos usar comandos m谩s avanzados).
  • $ git show nos muestra los cambios que han existido sobre un archivo y es muy 煤til para detectar cu谩ndo se produjeron ciertos cambios, qu茅 se rompi贸 y c贸mo lo podemos solucionar. Pero podemos ser m谩s detallados.
  • $ git reset. 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.
  • $ 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. PELIGRO

Ven铆a haciendo el curso con Leonidas y me quedaron conceptos claros. Lo que hago es ver las clases 2 veces:

La primera, la escucho mientras estoy trabajando o haciendo alguna otra labor para familiarizarme con los temas.

La segunda, cuando estoy frente a mi m谩quina y aplico todo.

Si no se practica, no se aprende.

COMANDOS DE GIT UTILIZADOS AL MOMENTO

**$git init
**Inicia un repositorio Git en el directorio actual.

**$git add
**A帽ade al stage area la nueva modificaci贸n.

$git commit -m "un mensaje"
A帽ade la nueva versi贸n al repositorio.

$git status
Muestra el estado del repositorio para dicha carpeta, especificando qu茅 archivos han recibido modificaciones y cu谩les necesitan guardarse.

**$git log **
Muestra el historial de commits realizados a dicho archivo.

**$git show **
Muestra las diferencias entre la versi贸n actual (HEAD) y la versi贸n anterior.

$git diff Index1 Index2
Muestra las diferencias entre la versi贸n del Index1 y la versi贸n del Index2

$git reset ID --hard
TODO vuelve a la versi贸n de dicho ID, borrando el resto. Ahora el HEAD ser谩 esa nueva versi贸n.

$git reset ID --soft
Vuelve a la versi贸n de dicho ID pero lo de staging ah铆 permanece para su pr贸ximo commit. En el directorio es donde se vuelve a la versi贸n anterior.

$git reset HEAD
Este es el comando para sacar archivos del 谩rea de Staging.

$git diff
Muestra las diferencias entre lo que est谩 en staging y como lo tengo en mi directorio actual.

$git log --stat
Me muestra m谩s informaci贸n sobre los cambios.

$git checkout ID archivo.txt
Ahora en el directorio actual estar茅 viendo dicha versi贸n.

$git checkout master archivo.txt
Para volver al archivo m谩s nuevo.

$git rm --cached
Elimina los archivos del 谩rea de Staging y del pr贸ximo commit pero los mantiene en nuestro disco duro.

$git rm --force
Elimina los archivos de Git y del disco duro.

  • git fetch = nos trae al repositorio local peor no lo copia en los archivos
  • git merge = mezcla los archivos de tu local al directorio de trabajo.
    -git pull = baja todos los cambios del repositorio, en realidad este es un git fetch con un git merge.

Hice una lista de comandos usando como referencia la el post del amigo Roberto Ocando Morales (publicada m谩s abajo):

# Peque帽a lista de comandos Git (usando Markdown 馃檭)

En este documento Markdown voy a enumerar algunos comandos de Git.

## Pasos para crear un repositorio de [Git]

![Imagen de git](https://git-scm.com/images/logo@2x.png)

* **git init**
* **git add .** (o git add archivo.txt)
* **git commit m- 'Agregar un mensaje sobre el commit'**
* **git config --list**: muestra la configuraci贸n del repositorio.
* **git show archivo.txt**: muestra los cambios de un archivo, y hace una comparaci贸n entre los cambios.
* **git diff 'codigo viejo 'codigo reciente'**: hace una camparativa entre esos 2 commits, los cambios entre cada uno.
* **git diff**: es para ver todos los cambios, trae los 'trae los codigo hexadecimales de los cambios'
* **git reset 'codigo hexadecimal' -hard/soft**: para volver a una versi贸n anterior. Con -hard se pierden todos los commits hechos hasta ese punto. Con -soft se mantienen los cambios en el staging, se les pueden volver a hacer commit.
* **git checkout 'codigo hexadecimal' 'archivo.txt'**: trae una version vieja a la versi贸n actual.
* **git checkout master 'archivo.txt'**: trae el master.

*Esta lista la tom茅 de referencia de los apuntes del amigo Roberto Ocando Morales.*


[Git]:https://git-scm.com/

El comando 鈥済it clone鈥 agrega el repositurio remoto a tu area de trabajo.
El comando 鈥済it push鈥 agrega los cambios a tu repositorio remoto.
el comando 鈥済it fetch鈥 toma cambios del repositorio remoto y lo agrega a tu area de trabajo.
El comando 鈥済it merge鈥 toma los cambio y lo combina con tu respositorio remoto.
El comando 鈥済it pull鈥 es lo mismo que utilizar el comando fetch y merge al mismo tiempo, ya que agrega y envia al repositorio remoto los cambios realizados.

lo divertido que te digan que no sigas hasta que practiques es que cuando de verdad practicas y entiendes te das cuenta porque el te dice 鈥渁lto no sigas y practica鈥 en el mundo necesitamos mas profesores y profesionales como Freddy y todo platzi.

Para llegar aqui tuve que crear como tres repositorio nuevos xD, para poder hacer como ha dicho Freddy en las clases.

me encanta el intro y el final ajajjaa, nos motivas a no solo ver y ya 馃槃

Comparto mi diagrama de esta clase. Las lineas verdes representan el trabajo de manera local y las azules de manera remota.
Perd贸n por el git add con la 鈥淕鈥 que se me fue ah铆. 馃槄

Practica, Practica, Practica, Practica y Practica.

Un resumen gr谩fico enfocado s贸lo en algunos de los t贸picos m谩s importantes y algo confusos. El resto no son tan complicados si logramos visualizar este orden.

Freddy tiene una gran tecnica de ense帽ansa. Sabe como mantenerte enganchado y a su vez utiliza comparaciones para hacer las explicaciones que hacen el aprendizaje m谩s facil.

He practicado asi que me siento preparado para seguir si no cualquier cosa vuelvo para atras nuevamente 馃槂

![](

Muy buena explicaci贸n. A m铆 siempre me sirven los dibujos, los conceptos me entran mejor. Y s铆, ya ven铆a pausando y practicando lo que se iba haciendo, as铆 que a seguir nom谩s.

Mis Apuntes:
**git init: **iniciar una carpeta como repo

**git add 鈥渘ombre del Archivo鈥/ git add . ** : agregar archivos que se encuentran en el repositorio, pero no se estan trackeando. (Sin este comando git no va a trackear el archivo. Una vez que se aplica este comando los archivos entran a un estado denominado 鈥渟taging鈥.

git rm 鈥揷ached 鈥渘ombre del archivo: Mueve el archivos al estado sin trackear.

git commit -m 鈥渕ensaje del commit para saber de que se trata el comit鈥: con este comando se agregan los cambios a la rama master.

git log: muestra el historial de cambios del repositorio

git config --list: muestra la informaci贸n de configuraci贸n del repo

git config --global user.name 鈥渘ombre de la persona鈥: configura el repo local para que se sepa quien hace los cambios.

git config --global user.email 鈥渆mail鈥: configura el email del usuario

git show 鈥渘ombre del archivo鈥: mira los cambios de un archivo entre lo que se modifica y lo que se incluye

git diff 鈥渃odigo hexa decimal del commit mas viejo鈥 鈥渃odigo hexadecimal mas reciente鈥 Compara commit.

git diff: puede ver los cambios

git reset 鈥渃odigo del commit al que queremos volver鈥 鈥揾ard/鈥搒oft: sirve para volver a una version de commit que teniamos anterior.

git log 鈥搒tat: visualizar la informaci贸n de los cambios de manera especifica.

git checkout 鈥渃odigo hexa del commit 1鈥 鈥 nombre del archivo鈥: trae lo Viejo a la version actual

git checkout master 鈥渘ombre del archivo鈥: trae el master.

Les comparto lo que llevamos, creo que no se me ha olvidado ning煤n comando.
una vez veamos lo del repositorio remoto la idea es subir el archivo y tenerlo como archivo de consulta鈥

Ubicado dentro de un folder, se inicia el directorio de trabajo
git init

Ver el estado del folder
git status

Agregar un archivo al staging
git add PrimerArchivo.txt

Remover un archivo del staging
git rm PrimerArchivo.txt

Removerlo completamente del staging
git rm --cached PrimerArchivo.txt

Removerlo completamente del staging y el disco
git rm --force PrimerArchivo.txt

Enviarlo al master
git commit -m "Primer commit del archivo"

Ver la configuraci贸n de git
git config
git config --list
git config --list --show-origin

Agregar usuario y email

git config --global user.name "Camilo Ortiz"
git config --global user.email "[email protected]"

Ver cambios o historia de un archivo
git log PrimerArchivo.txt

Mostrar m谩s informaci贸n de las modificaciones del archivo 
git show NOMBREARCHIVO

Devolver un archivo a un punto en la historia
- Tener mucho cuidado porque este comando borra todos los cambios adicionales que se hicieron
git reset  -alfanumerico-   --hard o --soft

Permite visualizar los bits por commit
git log --stat

Permite visualizar un archivo con la informaci贸n de ese momento
se debe tener cuidado de no hacer commit en ese momento,
porque se perderia la informaci贸n
git checkout -alfanumerico- NOMBREARCHIVO

si quiero volver al archivo
git checkout master NOMBREARCHIVO

La diferencia entre 鈥淕it rm --cached y git reset HEAD鈥 es que:

git rm --cached

Elimina el archivo de staigin, es decir le quita el seguimiento, como si nunca le hubieras hecho el 鈥済it add鈥, pero te deja el archivo como esta en la carpeta.
Te pongo un ejemplo:
yo tengo un archivo 鈥減rueba.php鈥 que acabo de crear, y index.php que ya llevo usando y le hecho add y commit. Si le hago un 鈥済it status鈥 me dir铆a esto:

git status

Changes not staged for commit:
  (use"git add <file>..."toupdate what will be committed)
  (use"git checkout -- <file>..."to discard changes in working directory)

        modified:   index.php

Untracked files:
  (use"git add <file>..."toincludein what will be committed)

        prueba.php

Para indes.php me dice:
鈥淐hanges not staged for commit:鈥 Esto te dice que: hay cambio pero no han sido preparados para realizar un commit, y te da las opciones de prepararlos con 鈥渁dd鈥 o descartarlos con 鈥渃heckout鈥

En cambio para prueba.php, me dice:
鈥淯ntracked files鈥 Quiere decir que no lo esta siguiendo para ver los cambio, es decir el archivo esta ah铆, se que es nuevo pero no hago nada.

y si le hago un "git rm --cached index.php este sria el resultado:

git rm --cached index.php
rm 'index.php'

Oscar Yaniuk@CTYA MINGW64 ~/admin (admin)
$ git status
On branch admin
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    index.php

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        index.php
        prueba.php

Ves en el c贸digo te muestra que paso de estar en seguimiento a decir que existe pero que no hace nada, es decir lo quito del (indice, seguimiento, staigin) como te sea mas f谩cil, el asunto es que no sigue sus cambios.

En cambio 鈥済it reset HEAD index.php鈥 lo que hace es quitarlo del estado de preparado, es decir cuando hace un 鈥済it add index.php鈥 se queda en verde (preparado para el commit), esta comando lo deja en el estado anterior al 鈥済it add鈥 es decir, se le esta haciendo el seguimiento esta modificado pero no preparado para el commit鈥

Espero que se haya entendido. y que te sirva.

Saludos.

馃搶 git fetch permite obtener los metadatos del repositorio remoto u original y comprueba con tu repositorio local y te muestra si en el repositorio original existen cambios.

Ojala Freddy diera todas las clases8)

No me saque la lengua Freddy, no le hice nada, no sea grosero. 馃槮

Pens茅 que odiaba ** GIT** pero era porque no lo entend铆a. Freddy vuelve algo complicado a algo sencillo. 馃槂

Me pas茅 dos d铆as practicando con Git y me siento como Doctor Stange con el ojo de agamoto

Resumen hecho gracias a los aportes de los dem谩s compa帽eros. 馃槂
Si alguien desea agregar algo, por favor d茅jenme su comentario.

Yo pongo la clase ocupando solo media pantalla (tecla de windows + flecha) y en la otra mitad visual studio code, git o lo que sea.

Clase 14. Flujo de trabajo b谩sico con un repositorio remoto

鈥 git clone url_del_servidor_remoto: Nos permite descargar los archivos de la 煤ltima versi贸n de la rama principal y todo el historial de cambios en la carpeta聽.git.
鈥 git push: Luego de hacer聽git add聽y聽git commit聽debemos ejecutar este comando para mandar los cambios al servidor remoto.
鈥 git fetch: Lo usamos para traer actualizaciones del servidor remoto y guardarlas en nuestro repositorio local (en caso de que hayan, por supuesto).
鈥 git merge: Tambi茅n usamos el comando聽git fetch聽con servidores remotos. Lo necesitamos para combinar los 煤ltimos cambios del servidor remoto y nuestro directorio de trabajo.
鈥 git pull: B谩sicamente,聽git fetch聽y聽git merge聽al mismo tiempo.

Desde https://platzi.com/clases/1557-git-github/19935-flujo-de-trabajo-basico-con-un-repositorio-remoto/

RETOMANDO LAS CLASES ANTERIORES

鈥 Git init: Cuando ejecutamos el comando git init creamos tres capas de trabajo:
	鈼 Directorio de trabajo (Disco duro).
	鈼 Preparaci贸n o Staging (Espacio en memoria).
	鈼 Repositorio Local.
	
鈥 Git add: Cuando se ejecuta este comando se le hace un rastreo al archivo envi谩ndolo al Staging. (Temporal).
鈥 Git commit: Cuando se ejecuta este comando, se env铆a todo lo que est谩 en Staging (Memoria temporal) al repositorio local para ser guardado y no perder nada.

TRABAJAR EN EQUIPO

Cuando se trabaja en equipo se tiene otro repositorio pero esta vez es un repositorio REMOTO alojado en un servidor REMOTO.

Ejemplo: GitHub - GitLab - BitBucket

Para traer los datos de un repositorio remoto se ejecuta el comando:
鈥 Git clone (url) : Este comando se trae los archivos a dos lugares -> Trae una copia del Master al directorio de trabajo (Disco duro). Y crea la base de datos de todos los cambios hist贸ricos en el repositorio local y deja el Staging quieto.

El flujo de trabajo sigue siendo el mismo (git add - git commit) para enviar al repositorio local, pero para enviar los cambios al repositorio remoto se debe usar el comando git push.

Para traer una actualizaci贸n de un archivo del repositorio remoto al local (Porque alguien realiz贸 un cambio), se debe usar el comando git fetch.

git fetch: Me trae la actualizaci贸n del archivo pero solo al repositorio local y no a mis archivos del directorio de trabajo (Disco duro), para que se copie en mis archivos se tiene que fusionar la ultima versi贸n del repositorio local con la versi贸n actual y para eso se usa el comando git merge.

git merge: Lo que hace b谩sicamente es copiar la actualizaci贸n bajada del repositorio remoto a mi directorio local (Disco duro) para poder trabajar sobre ellos.

Pero existe otro comando que evita tener que usar git fetch y git merge al mismo tiempo, este comando se llamada git pull.

git pull: Este comando hace las dos funciones a la vez, copia la base de datos de cambios al repositorio local y copia el directorio en el disco duro.

Hola. Aqu铆 dejo este diagrama que me pareci贸 interesante. Le hice captura a la pantalla de un v铆deo de YouTube que hizo Freddy en 2018: 鈥10 errores comunes de programadores junior | PlatziLive鈥. El enlace es: https://youtu.be/YJ0u-MpYpM4. Espero le sirva a alguien. Saludos.

Excelente! qu茅 explicaci贸n tan al detalle, amo las clases de Freddy! nos dice que practiquemos y as铆 mismo le agarramos cari帽o a lo que hacemos porque afianzamos las bases. Ya hab铆a visto estos conceptos en otras clases pero ahora s铆 me queda super claro!!

Es importante saber cu谩l es el estatus de tus cambios, ya que al modificar un archivo, 茅ste no por defecto se va a git, sino que se modifica en el working directory, para que sea trackeado por git debe de pasar por el staging area y llegar al repositorio, opcionalmente podr铆a llegar al repositorio remoto. A continuaci贸n m谩s detalle.

  • Working directory (Local): El working directory es el espacio de trabajo no rastreado por git, al modificar un archivo, este se modificar谩 en el working directory andtes de que le des git add para agregarlo al staging area.

  • Staging Area: Es un espacio en memoria ram d贸nde est谩n guardados los cambios, pero todav铆a no est谩n en el repositorio (no son trackeados por git). para agregar al staging area se utiliza el comando git add

    git add archivo.txt #Agrega el archivo.txt al staging area
    git add . #Agrega todos los cambios de los archivos en las subcarpetas del directorio en el que te encuentras al staging area
    git add -A #Agrega todos los cambios del repositorio en el que est谩s trabajando al staging area
    
  • Git repository: Es el lugar d贸nde se trackean los cambios, cuando algo est谩 en el repositorio, ya est谩 en la historia de git y puedes acceder a ese historial mediante los commits. git commit

    git commit -m 'Commit 1' #Crea un commit (sube los cambios al repositorio local) con el nombre 'Commit 1'
    git commit #Se prepara para hacer commit y abre el editor por defecto de la terminal para ponerle nombre
    

    Es una buena pr谩ctica ser descriptivos con los cambios que se hicieron en cada commit.

  • Remote repository: Ac谩 entra github, el repositorio remoto es una copia de tu repositorio local, pero en Internet. Para mandar cambios al repositorio remoto es con el comando git push

    git push origin master #Empuja (env铆a) los cambios de la rama master al servidor remoto 'origin' 
    

Ligero resumen de los comandos que hemos visto hasta ahora. Si he olvidado alguna comenta馃憞

Comparto mis apuntes de la clase 馃槃

Si eliminaste un archivo con git rm <nombre_del_archivo>

Puedes Volver atras con

git restore --staged <nombre_del_archivo>
git restore <nombre_del_archivo>

Espero que le sirva a alguien 馃槃

Compartir茅 mi forma de aprender, la cual al menos a mi me resulta a la perfeccion y solo tengo que ver 1 vez el video.

Una vez que pasamos a otro video nuevo o 鈥渃lase鈥.

  1. Leo la descripcion del video y/o apuntes que deja el profesor.
  2. Leo los comentarios鈥 ya que muchos siempre dejan apuntes o links importantes.
    3)Apunto todo esto en dos archivos a uno le llamo 鈥淩epaso_Rapido.txt鈥 en donde apunto un resumen de todo y al otro Importante.word/pdf, en donde apunto cosas a mas fondo.
    #Al ya saber mas o menos de lo que trata la clase, me es mas facil entender el video#
    4)Reproduzco el video y hago todo lo que hace el profesor, en el caso que se me ocurra algun experimento, lo hago por mi cuenta mientras pauso el video, ademas, si hay alguna cosa relevante que el profesor diga y no se habia mencionado antes en los comentarios o la descripcion lo apunto en los archivos que mantengo abiertos dependiendo de la importancia que tenga dicha mencion.

Bien eso es basicamente lo que hago yo y me ayuda a comprender todo lo que pasa en la clase.

Ojal谩 alguien que no haya definido aun su metodo de aprendizaje le sirva.

Cabe recordar que no reproduzco el video hasta el paso 4).

Es la 4ta vez que llego hasta aqu铆, casi siempre me rindo y dejo los cursos, pero por alguna raz贸n pago platzi el siguiente mes y lo vuelvo a comenzar, eso se acabo, quiero continuar y terminar todo lo que venga, se que no tiene nada que ver pero as铆 espero recordarme x q tengo que continuar.

Tengo la costumbre de pausar los videos para hacer todo lo que hacen los maestros, es una buena pr谩ctica. Usando mis propias variables y textos.

Aunque no est谩 muy relacionado con el tema en especifico, como dicen en Platzi 鈥淣unca pares de aprender鈥: Dejando el cursor encima de la zona del v铆deo se puede subir o bajar el volumen mediante el scroll del mouse (en caso de los que tengan la ruedita del medio del mouse). Hasta por accidente aprendemos ja ja !

Ah铆 les va una breve historia de c贸mo cagu茅 una cosa y luego la arregl茅 en el video anterior:

Le d铆:

git checkout id

S铆, as铆 a lo salvaje sin ponerle el nombre del archivo y not茅 que me cambi贸 al branch de ese commit y los cambios no iban al branch master, entonces dije bueno y c贸mo salgo de ac谩?

Pues as铆:

git checkout master

Resulta que todos los cambios hechos en ese checkout no afectan pero est谩s cambiando lo que sucedi贸 en ESE LOG al que le est谩s cambiando cosas y le puedes hacer el commit de toda la vida y cambiarlo y estaba que brincaba del gusto porque no sab铆a qu茅 estaba haciendo hasta que s铆 supe y entonces comprend铆 que amo git

Despu茅s de la indicaci贸n, me puse a practicar con nuevos ejemplo y de verdad que ayudar a entender mejor los comandos (sobretodo los reset)

Aqu铆 les va mi resumen por si a alguien le sirve:

ls: ver archivos en la carpeta
ls -al: ver archivos (incluido los ocultos)

git status: estados de los archivos en la carpeta. En 鈥渟taging鈥 o 鈥渘ot staged鈥

git add .: Agregas todos los archivos modificados al staging
git rm --catched nombreArchivo.extensi贸n: Borras el archivo del staging pero no de tu carpeta
git commit -m 鈥渃omentarioEntreComillas鈥: Guardas los cambios del staging al repositorio git

git config --list: Ves configuraci贸n por defecto de tu git
git config --global user.name 鈥渢uNombre鈥: Agregas tu nombre para que aparezca en el log. Lo mismo se puede hacer para email

git log nombreArchivo.extension: Ver todos los commits de un archivo

git show nombreArchivo.extension: Muestra los 煤ltimos cambios de un archivo
git dif codigo1DelCommit codigo2DelCommit: Muestra los cambios entre 2 archivos

git reset codigoXDelCommit --hard: regresa en el tiempo hasta el commit se帽alado (modifica el git y borra todos los dem谩s archivos de la carpeta (Cuidado con este, borr贸 mi html y la carpeta css)
git reset codigoXDelCommit --soft: regresa en el tiempo hasta el commit se帽ala (modifica el git pero no modifica ni borra ning煤n archivo en la carpeta)
git reset HEAD: lo que estaba en staging, pasa a not staged

Hace 20 minutos quer铆a dar play pero escuche a Freddy y me ha hecho razonar.
Ya le estoy cogiendo el ritmo a Git 馃槃
Continuemos 鈥

entonces me regreso a practicar m谩s :V

Ya repet铆 varias clases y he estado leyendo el libro de Git Pro y me siento listo para continuar.

Que buen consejo!

No hay nada mejor y simple para apoderarse del conocimiento que tomando notas a mano, recomiendo mucho las notas de Cornell

print("EXCELENTE COMO EXPLICA ");

Yo voy viendo los v铆deos y tomando apuntes los voy leyendo y me queda todo mas claro, ademas voy haciendo los pasos al tiempo que Freddy cuando termino un v铆deo vuelvo a leer los apuntes y practico un poco y me quedan los cosas claras.

Por clases como esta Freddy es mi profesor favorito en Platzi!!!

En nuestro entorno de desarrollo personal el flujo de trabajo era:
-git init
-git add
-git commit
Si trabajamos con otros desarrolladores necesitaremos un repositorio remoto, por tanto el flujo de trabajo cambia:
-git clone url (nos traemos una copia del master al directorio de trabajo y el repositorio local)
Luego el flujo continua muy parecido al anterior
-git add
-git commit
-git push (env铆amos la ultima versi贸n de los commits al repositorio remoto)
Si ya estamos conectados al remositorio remoto y queremos traer una actualizaci贸n entonces usamos
-git fetch
Ojo: solo lo trae al repositorio local, no lo copia en los archivos, para que se copien en los archivos se usa
-git merge
Sin embargo, podemos usar
-git pull
Este comando combina los dos conceptos anteriores.

# Configuraci贸n global de Git
git config --global user.name "nombre" # Establece el nombre del usuario
git config --global user.email "email" # Establece el correo electr贸nico del usuario

# Inicializar un repositorio Git
git init # Inicializa un repositorio Git vac铆o

# Clonar un repositorio remoto
git clone url_repositorio # Clona un repositorio remoto

# Verificar el estado del repositorio
git status # Muestra el estado de los archivos en el repositorio

# A帽adir archivos al 谩rea de preparaci贸n (staging)
git add archivo # A帽ade un archivo al 谩rea de preparaci贸n
git add . # A帽ade todos los archivos al 谩rea de preparaci贸n

# Hacer un commit
git commit -m "mensaje del commit" # Guarda los cambios en el repositorio con un mensaje

# Ver el historial de commits
git log # Muestra el historial de commits

# Cambiar a una rama o commit espec铆fico
git checkout nombre_rama_o_commit # Cambia a una rama o commit espec铆fico

# Crear una nueva rama
git branch nombre_rama # Crea una nueva rama

# Fusionar ramas
git merge nombre_rama # Fusiona una rama con la rama actual

# Eliminar una rama
git branch -d nombre_rama # Elimina una rama

# Actualizar el repositorio local con cambios remotos
git pull # Trae los cambios del repositorio remoto y los fusiona con la rama actual

# Enviar cambios al repositorio remoto
git push # Empuja los cambios al repositorio remoto

# Ver las diferencias entre el 谩rea de preparaci贸n y el 煤ltimo commit
git diff # Muestra las diferencias entre el 谩rea de preparaci贸n y el 煤ltimo commit

# Revertir un commit
git revert commit_id # Revierte un commit espec铆fico

# Reajustar el 谩rea de preparaci贸n al 煤ltimo commit
git reset # Reajusta el 谩rea de preparaci贸n al 煤ltimo commit

# Ignorar archivos o carpetas
.gitignore # Archivo para especificar archivos o carpetas a ignorar por Git

Me senti un poco identificado y me di un break de un dia para estar practicando jajaja

S煤per bien explicado hasta el momento.
Seguir茅 pausando y regresando los v铆deos las veces que sea necesario para ir entendiendo los conceptos e ir a la par en los ejercicios!

驴Entonces cual es la diferencia clone y pull?
Ambos traen los archivos a nuestro repo local y al directorio de trabajo.
驴O es que se utiliza en situaciones diferentes por contexto?

He vuelto despues de repasar todos lo videos anteriores, saludos

cuenta si los practique mientras los veiamos?


Usando el comando

git merge 

Fusiono mi versi贸n de c贸digo en el repositorio local con la de mi compa帽ero de equipo en el directorio de trabajo activo para crear la versi贸n master final.

Estoy haciendo la escuela de Desarrollo Web, ya vi este curso y reci茅n termin茅 el curso pr谩ctico de Frontend Developer (est谩 3 cursos m谩s adelante). Lo que quiero comentar es que con los archivos de los ejercicios pr谩cticos de Frontend Developer volv铆 ac谩 para aplicar todo lo de git y github, y definitivamente practicando es que se entiende y se aprende mejor 馃殌. As铆 que los invito a seguir la recomendaci贸n de Freddy 馃槑.