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

Analizar cambios en los archivos de tu proyecto con Git

9/43
Recursos

El comando 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.

Si queremos ver la diferencia entre una versi贸n y otra, no necesariamente todos los cambios desde la creaci贸n del archivo, podemos usar el comando git diff commitA commitB.

Recuerda que puedes obtener el ID de tus commits con el comando git log.

Comandos para analizar cambios en GIT

  • git init: inicializar el repositorio
  • git add nombre_de_archivo.extensi贸n: agregar el archivo al repositorio
  • git commit -m 鈥淢ensaje鈥: Agregamos los cambios para el repositorio
  • git add: Agregar los cambios de la carpeta en la que nos encontramos agregar todo
  • git status: visualizar cambios
  • git log nombre_de_archivos.extensi贸n: hist贸rico de cambios con detalles
  • git push: env铆a a otro repositorio remoto lo que estamos haciendo
  • git pull: traer repositorio remoto
  • ls: listado de carpetas en donde me encuentro. Es decir, como emplear dir en windows.
  • pwd: ubicaci贸n actual
  • mkdir: make directory nueva carpeta
  • touch archivo.extensi贸n: crear archivo vac铆o
  • cat archivo.extensi贸n: muestra el contenido del archivo
  • history: historial de comandos utilizados durante esa sesi贸n
  • rm archivo.extensi贸n: Eliminaci贸n de archivo
  • comando --help: ayuda sobre el comando
  • git checkout: traer cambios realizados
  • git rm --cached archivo.extensi贸n: se utiliza para devolver el archivo que se tiene en ram. Cuando escribimos git add, lo devuelve a estado natural mientras est谩 en staging.
  • git config --list: muestra la lista de configuraci贸n de git
  • git config --list --show-origin: rutas de acceso a la configuraci贸n de git
  • git log archivo.extensi贸n: muestra la historia del archivo

Aporte creado por: Stefania Ortega

Aportes 1112

Preguntas 260

Ordenar por:

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

o inicia sesi贸n.

Tomen compa帽eros! 馃槃

En Ubuntu normalmente edita en 鈥渘ano鈥 o "vim"
En el minuto 3:20 para salir de la opci贸n de ingresar un mensaje se debe ingresar los siguientes comandos

nano

Ctrl + o
Enter
Ctrl + x

VIM

Esc
:wq
Enter
****************
:w = escribir o cuardar
:q = Guardar o salir

Comparto con ustedes por si les interesa los comandos de los que he tomado nota. junto con su descripci贸n

$ git init //inicializar el repositorio
$ git add nombre_de_archivo.extencion //Agregar el archivo al repositorio
$ git commit -m 鈥淢ensaje鈥// Agregamos los cambios para el repositorio
$ git add .// Agregar los cambios de la carpeta en la que nos encontramos agregar todo
$ git status // visualizar cambios
$ git log nombre_de_archivos.extencion //historico de cambios con detalles
$ git push //envia a otro repositorio remoto lo que estamos haciendo
$ git pull //traer repositorio remoto
$ ls //listado de carpetas en donde me encuentro es decir dir en windows
$ pwd //ubicacion actual
$ mkdir //make directori nueva carpeta
$ touch archivo.extencion//crear archivo vacio
$ cat archivo.extencion//muestra el contenido del archivo
$ history //historial de comandos utilizados durante esa sesion
$ rm archivo.extencion //eliminacion de archivo
$ comando --help //ayuda sobre el comando
$ checkout //traer cambios realizado
$ git rm --cached archivo.extencion//se usa para devolver el archivo que se tiene en ram cuando escribimos git add lo devuleve a estado natural mientra esta en staging
$ git config --list //muestra la lista de configuracion de git
$ git config --list --show-origin//rutas de acceso a la configuraci贸n de git
$ git log archivo.extencion //muestra la historia del archivo

Para no hacer el copiar y pegar en la consola, puede hacer lo siguiente:

  1. digitar el comando git diff (espacio)
  2. buscar y escoger la linea a copiar y subrayar
  3. Dar clic en la rueda del scroll en el mouse e inmediatamente realiza la copia de lo subrayado

Mis apuntes:

Al usar los comandos git log y git show ca铆 en la cuenta de que en mi caso no me mostraba la informaci贸n en la misma pantalla del terminal como a Freddy, sino con el visor de archivos del terminal, con lo que era necesario pulsar 鈥渜鈥 para salir,
A la hora de usar el comando diff y copiar los hash n煤mericos de cada commit era un poco molesto.

Si alguien tiene este mismo problema, basta cambiar la variable global core.pager, para que utilice el comando cat

git config --global core.pager cat

Una lista de los comandos utilizados:

Para mostrar los diferentes estados de los archivos en tu directorio de trabajo y 谩rea de ensayo (staging):

git status

Para ver los cambios entre tu entorno de trabajo y tu 谩rea de ensayo (staging):

git diff

Para agregar cambios de tu entorno de trabajo a tu 谩rea de trabajo (staging):

git add .

Para remover cambios agregados a tu 谩rea de trabajo (staging):

git rm --cached <archivo>

Para registrar una nueva instant谩nea permanente en la base de datos del repositorio.

git commit -m "Comentario"

Traer una imagen de un archivo de una instat谩nea de la base de datos al entorno de trabajo. Se puede reemplazar el <commit-id> por el nombre de la rama, ejemplo 鈥淢aster鈥.

git checkout <commit-id> <archivo>

Se utiliza sobre todo para deshacer las cosas,

git reset 

Presenta un registro de commits de la base de datos.

git log

Lo mismo del punto anterior, pero aplicado a un archivos espec铆fico.

git log <archivo>

Presenta los cambios espec铆ficos de los archivos a partir del commit. Ante muchos cambios, se usan las fechas 鈥渦p/donw鈥 para moverse en la pantalla y la tecla 鈥渜鈥 para salir.

git log --stat

Importante, a GIT no le interesa la carpetas, solo los archivos. Las carpetas son consideradas rutas de los archivos鈥

A mi no me funcionaba el Esc+Shift+Z+Z. Asi que us茅 los comandos que aparecen en la parte de abajo: Ctrl+X para salir, despu茅s Y para aceptar los cambios y Enter para finalizar.

Otra forma para grabar en Vim es usar ESC y luego escribir :wq
Me parece m谩s pr谩ctico que Shift + z+ z-

Si quieren practicar y entender un poco mas git, les recomiendo esta pagina.

https://learngitbranching.js.org/

鈿♀殹鈿

Estos son algunos comandos que pueden utilizar para salirse del VIM:

:q 鈥 quit
:q! 鈥 quit without saving, even if modified
:cq 鈥 quit always without writing
:wq 鈥 write / save the current file and exit
:wq! 鈥 write the current file and exit always
:wq (name) 鈥 write to file (name) and exit
:wq! (name) 鈥 write to the file (name) and exit always, even if modified
ZZ 鈥 save the current file if modified, then exit
ZQ 鈥 quit and exit without saving

Para editar un archivo en Vim:

  1. Presionar la tecla I para **entrar ** al modo INSERTAR
  2. Presionar **Esc ** para **salir ** del modo INSERTAR
  3. Escribir :w para **guardar ** los cambios
  4. Escribir :q para **salir ** de Vim

Se pueden omitir los pasos 3 y 4 escribiendo en su lugar :x que lo que hace es guardar y cerrar en un solo paso.

Mis apuntes de los comandos . junto con su descripci贸n de esta clase

$ git init //inicializar el repositorio
$ git add nombre_de_archivo.extensi贸n //Agregar el archivo al repositorio
$ git commit -m 鈥淢ensaje鈥// Agregamos los cambios para el repositorio
$ git add .// Agregar los cambios de la carpeta en la que nos encontramos agregar todo
$ git status // visualizar cambios
$ git log nombre_de_archivos.extensi贸n //hist贸rico de cambios con detalles
$ git push // Env铆a a otro repositorio remoto lo que estamos haciendo
$ git pull // traer repositorio remoto
$ ls // Listado de carpetas en donde me encuentro es decir dir en windows
$ pwd // Ubicaci贸n actual
$ mkdir // make directory nueva carpeta
$ touch archivo.extensi贸n// Crear archivo vac铆o
**$ cat archivo.extensi贸n// **Muestra el contenido del archivo
$ history // Historial de comandos utilizados durante esa sesi贸n
$ rm archivo.extensi贸n // Eliminaci贸n de archivo
$ comando --help // Ayuda sobre el comando
**$ checkout // **Traer cambios realizado
$ git rm --cached archivo.extensi贸n// Se usa para devolver el archivo que se tiene en ram cuando escribimos git add lo devuelve a estado natural mientra esta en staging
$ git config --list // Muestra la lista de configuraci贸n de git
$ git config --list --show-origin// Rutas de acceso a la configuraci贸n de git
$ git log archivo.extensi贸n // Muestra la historia del archivo
espero sirva mis apuntes a alguien (y si hay errores me comenta y si falta algo mas) madre mia!! cre铆 que no iba a terminar jajajaja y valla que me es dificil pero no me rindo #NuncaParesdeAprender 鉂わ笍

LES COMPARTO COMPA脩EROS

git show me cambia la vida

En Ubuntu 18.04 al poner commit sin referencias, en lugar de abrir el editor VIM, me llev贸 al editor NANO. en ese caso, se escribe directamente. Luego, se guarda con Control + O + Enter , y luego se sale con Control + X

Genial !!! acabo de encontrar como se relacionan los comandos que ejecutamos en la c贸nsola, con lo que realizamos en la interfaz de Atom.

Casi que no salgo, despu茅s del intento 50 encuentras la solucion.

(ESC + Shift + Z + Z)```

Con el siguiente comando :

git log --oneline --decorate

Puedes ver los commits y los merge de manera gr谩fica.

Ademas, por comodidad, git te permite guardar 鈥渁lias鈥 para que crees tu secuencia de comandos y la puedas usar de manera r谩pida.

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

Incre铆ble este poder de Git. El resumen de la clase en t茅rminos de comandos es el siguiente:

$git show _archivo_ (Muestra los cambios que han existido en el archivo)
$git commit (Va a crear un mensaje pero para eso abrir谩 VIM ya que es necesario un mensaje:
**Comando VIM:**
++Escribir:++ ESC+I
++SALIR:++ ESC+SHIFT+Z_Z
en VIM se escribe el mensaje y despu茅s se sale para hacer el commit)
$git diff _tag1_ _tag2_ (Hace la comparativa de cambios entre el archivo en su etapa en el commit del tag1 y del tag2. Considera al m谩s reciente como tag2 y al original como tag1, SI IMPORTA EL ORDEN DE LOS TAGS)

Espero que sea de utilidad.

鈥淐omo as铆 que no va a mandar un mensaje鈥sted est谩 loco??鈥 Si te ries aprendiendo鈥unca lo olvidas. Genial como siempre se帽or Vega

si queremos hacer dos cosas a la vez:

git commit -a -m 鈥渄escripcion del cambio鈥

agrega los archivos que hemos trackeado
hace el commit con el comentario

Vim - Modo Insert / Editar

i

Salir de Vim

Esc Para salir del modo editar

:q    // quit - salir sin guardar
:q!   // quit important - salir forzado sin guardar
:wq // write & quit - guardar y salir
:x    // igual a :wq

Con comandos
Esc Para salir del modo editar

Shift + Z Z // guardar y salir
Shift + Z Q // salir sin guardar

M谩s comandos de Vim

Vim Commands Cheat Sheet

Si presionas ctrl y haces doble click con el bot贸n derecho lo que tienes seleccionado, autom谩ticamente te escribe en la terminal lo que quieres copiar

Algo que hab铆a aprendido del curso antiguo鈥
Git diff [referencia del commit escogido]: Al solo poner un solo par谩metro (commit), comparara la versi贸n inicial con la actual.

Para salir de vim hay que soltar Esc para luego hacer 鈥渟hift + z z鈥

Aprende VIM mientras juegas.

GIT SHOW
Muestra:

  • SHA(Secure Hash Algorithm) de 煤ltimo commit
  • Qui茅n y cu谩ndo realiz贸 el 煤ltimo commit.
  • Mensaje de 煤ltimo commit
  • Hace un diff (comando) de la versi贸n anterior(a) con la versi贸n nueva(b) para mostrar las diferencias entre versi贸n a y versi贸n b

En Mac para salir de vim y guardar: ESC + : + wq + enter

馃毃 驴Te sucede que no puedes salir de 鈥淰IM鈥 o el editor de texto en la terminal? 驴No te funcionan los comandos que usa Freddy? AQU脥 te doy una posible soluci贸n 馃憞
.
馃槷 Es posible que tu terminal (especialmente si estas en WSL) est茅 configurada con NANO, que es otro editor de texto para la terminal, tal como VIM.
.
Si quieres cambiar NANO por VIM (para seguir el curso m谩s c贸modamente) haz esto 馃憞
.
馃枑 PASO 1:
Ve a la carpeta principal de tu terminal, que en este caso ser铆a ~. Si quieres acceder a ella solo haz cd ~. Despu茅s vas a ejecutar este comando: sudo update-alternatives --config editor. Te saldr谩 algo as铆:

.
馃枑 PASO 2:
Es posible que t煤 tengas seleccionada la opci贸n 0, la que dice /bin/nano. Para ello, lo que debes hacer es identificar cu谩l es la opci贸n de vim.basic (en mi caso es la opci贸n 3). Procedes a escribir ese n煤mero y le das enter.

.
馃枑 PASO 3:
隆LISTO! Ya puedes volver a la carpeta donde estabas, ejecutar git commit, y ver谩s que te sale el editor de texto VIM y te funcionar谩n los comandos que usa Freddy 馃槃
馃挌 Dale like a este aporte si te funcion贸

C贸mo puedo hacer para que me mantenga la milea de comandos y seguir editando? ya le d铆 Ctrl Z pero lo quie quiero es verlo como a Freddy que puede copuar los id de los commit

Si queremos usar los hash y se nos hace inc贸modo que sean tan largos. Pueden usar --oneline al hacer log. Sirven igualmente a la hora de chequear los diffs 馃槃

  • Cuando hacemos commit sin comentario te va abrir automaticamente VIM;.
    para configurar otro editor de texto realizamos el siguiente comando:

git config --global core.editor 鈥渃ode --wait鈥

  • Lo que hace el comando es configurar de manera predeterminada el Visual Studio Code y cuando coloquen un commit sin comentarios automaticamente les va abrir el Visual Studio Code

Por si lo necesitan, puede que les sirva:
Git Bash
pwd: Tu ubicaci贸n actual en carpetas, archivos, etc鈥
ls: Archivos que tengo en la carpeta"X";
cd: Abrir carpetas/archivos
git init: Crear repositorios dentro de la carpeta de mi proyecto
git -al: Archivos ocultos
git status: Ver estado del proyecto
git add: A帽ado cambios
**git commit -m"Aqu铆 va tu mensajito"馃槜*A帽ado commits + mensaje
car archivo.extencion: Ver contenido del archivo pero no editarlo
git log archivo.extencion: historia del archivo
git show archivo.extencion: comprar cambios
git diff: comprar versiones que desee

Si comet铆 alg煤n error corrigelo en las respuestas, espero que les sirva

En uno de los cursos anteriores de Git en Platzi configuramos otro editor de texto para escribir el texto de nuestros commits. Para a帽adir Atom por ejemplo simplemente ejecuten la siguien l铆nea:

$ git config --global core.editor atom --wait

Con el --wait lo que hacemos es que se quede esperando a que confirmemos los cambios.

Espero que les sirva !

Si est谩n en WSL y no salen de la interfaz de vin con
Esc + Shift + Z + Z
usen Ctrl + X luego le dan Yes con 鈥測鈥 y luego Enter y listo.

Les recomiento este alias para generar un superlog de git, lo dieron en cursos anteriores aqu铆 en platzi y merece la pena que le den un ojo, es genial, solo copien y peguen el comando del gist(crea un alias para un log m谩s completo dentro de git), y despues pueden invocar el superlog con git superlog

驴Cansado de que cuando le das commit sin -m 鈥渕ensaje鈥 te abra el feo editor vim? (2:40 en el video de esta clase)
Puedes cambiarlo al editor nano, emacs, o incluso code simplemente con:

git config --global core.editor nano 

Cuando escribimos git commit y le damos Enter se abre una consola, es un editor dentro de la linea de comandos se llama VIM. Todo lo que aparece seguido de un # son comentarios. Para comenzar a escribir texto se presiona esc + i. Para regresar a Git se presiona esc + shit + zz y

Si no tienen acceso a visual estudio desde la linea de comando, consulten lo siguiente:

https://code.visualstudio.com/docs/setup/mac

Lanzamiento desde la l铆nea de comando
Tambi茅n puede ejecutar VS Code desde la terminal escribiendo 鈥榗ode鈥 despu茅s de agregarlo a la ruta:

Lanzamiento VS Code.
Abra la Paleta de comandos ( Ctrl + Shift + P ) y escriba 鈥榗omando de shell鈥 para encontrar el comando de Shell: Instalar el comando 鈥榗贸digo鈥 en el comando PATH .
comandos de shell de macOS

Reinicie el terminal para que el nuevo $PATHvalor surta efecto. Podr谩 escribir 鈥榗贸digo鈥. en cualquier carpeta para comenzar a editar archivos en esa carpeta.
Nota: Si a煤n tiene el antiguo codealias en su .bash_profile(o equivalente) de una versi贸n anterior de VS Code, elim铆nelo y reempl谩celo ejecutando el comando Shell: Instale el comando 鈥榗贸digo鈥 en el comando PATH .

Para agregar manualmente el c贸digo VS a su ruta, puede ejecutar los siguientes comandos:

cat << EOF >> ~/.bash_profile

<h1>Add Visual Studio Code (code)</h1>

export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
EOF
Comience una nueva terminal para recoger sus .bash_profilecambios.

Nota : La barra diagonal inicial \es necesaria para evitar que se $PATHexpanda durante la concatenaci贸n. Elimine la barra diagonal inicial si desea ejecutar el comando de exportaci贸n directamente en un terminal.

Apuntes hasta el momento:
Ciclo b谩sico de git:
Untracked 谩rea: el archivo no est谩 rastreado, es totalmente desconocido.
Staging area: el archivo esta rastreado. Es temporal y nos muestra los cambios.
Commit 谩rea: el archivo se sube y se guarda modificando lo que se ten铆a anteriormente.

Configurar git:
git config 鈫 Muestra la ayuda para la configuraci贸n de git.
git config --global user.name 鈥淏arckCode鈥 鈫 Indicamos usuario.
git config --global user.email "[email protected]" 鈫 Indicamos email.
git config --list 鈫 Muestra la configuraci贸n actual de git en nuestro repositorio.

Iniciar git en el directorio donde estemos:
git init

Mandar o quitar ficheros del Staging area:
git add [fichero] 鈫 Manda solamente al fichero que le digamos al Staging area.
git add . 鈫 Manda todos los ficheros que hayan sufrido modificaciones.
Si queremos borrar ficheros que ya est谩n en el Staging area:
git rm --cached [fichero] 鈫 Env铆a nuevamente los ficheros al Untracked 谩rea

Mandar o quitar ficheros del Commit 谩rea:
git commit 鈫 Manda los ficheros que est谩n en Staging area a Commit area
Opciones de git commit
-m 鈥渕ensaje鈥 鈫 A帽ade un mensaje para aclarar el cambio guardado.

Consultar el estado de nuestros archivos en git:
git status 鈫 muestra en qu茅 estado del ciclo de vida se encuentran los archivos
git show [fichero] 鈫 muestra los cambios sufridos por en el archivo.
git log [fichero] 鈫 muestra los commits guardados en el archivo.
git diff [id del commit a comparar 1] [id del commit a comparar 2] 鈫 Nos compara y muestra los cambios sufridos entre los dos commits. Los id de los commit se pueden encontrar ejecutando git log.
Ejemplo de id: a52dae4a7b1181d45e356a6abc7f0b721511ee5a

Brutal la forma de ense帽ar de Fredy !!! Gracias.

馃巿 git show nos permite ver detalles ampliados de los objetos de Git, como 谩rboles, etiquetas y commits en un proyecto鈥

Para salir de la interfaz de mensajes hace falta presionar

Esc + Shift + z + z

esc + shift + zz = esc + : +wq! + enter

馃槃 Por si quieren aprender un poco de VIM jugando:

vim-adventures

Desde Ubuntu es un poco diferente el tema de los commits, me costo un poco encontrar como salir de VIM. 馃槀

El codigo con que se identifica un commit se conoce como SHA es posible y m谩s comodo trabajar con tags.
Para agregar un tag escribes $git tag -a -m "mensaje del tag"
para ver la lista de tags escribes $git tag -l
y para ver las diferencias entre tags simplemente escribes: $git diff Tag#1 Tag#2

Si ya tienes tu terminal configurada con .zsh, Tilix y Oh-my-zsh y a la hora de ejecutar el comando:git log (archivo) les abre el log con less por defecto y no pueden copiar los identificadores de los commits, pueden cambiarlo a abrirlo con cat ejecutando el siguiente comando:

$ git config --global core.pager cat

y listo 馃槈

  • La vida y su log.
    .

Los dias que pasan constan de cientos de commits irremplazables,
mas no puedes usar un reset o un rebase,
sin embargo, este repositorio de hoy,
tu y yo en este instante鈥 en este directorio,
formamos un log entrelazandose,
showing cada version鈥 cada commit鈥 incluido este.

git log

Te muestra el historial de los commits que has hecho

git log # Muestra todos los commits con la informaci贸n default
git log -3 #ultimos tres commits
git log --oneline #Resumido
git log --oneline --graph #Te lo muestra Resumido y bonito

git show

Es como log, pero con la diferencia de que muestra los cambios precisos que se hicieron en el commit

git diff

Nos compara y muestra los cambios sufridos entre los dos commits. Los id de los commit se pueden encontrar ejecutando git log.

git diff <referenci sha1> #
git diff <referencia2> <referencia1> <archivo>

Para que se tenga un comando que permita ver mas comodamente los commits se ejecuta en la 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"

y cada que se quieran ver la lista de commits se escribe git superlog

Comandos de VIM.

  • :q para quitar sin guardar.
  • :q! para quitar sin guardar (forzando).
  • :wq para guardar y quitar.

鈥渨鈥 significa 鈥渨rite鈥 (escribir).
鈥渜鈥 significa 鈥渜uit鈥 (quitar).

Para acceder se presiona ESC y escriben los dos puntos ( : )

Siento que esta herramienta , la voy a utilizar way too much m谩s adelante.
Gracias Freddy.
Aprovechar茅 esta cuarentena al 100.

Vi el video 3 veces, ya lo entendi!

git show: con el se visualizan los cambios realizados a un archivo espec铆fico con el correr de los commits
git diff : Se comparan dos archivos commiteados, identificados con su tag, sirve para ver la diferencia y las modificaciones que sufri贸 el archivo entre estos commits
**OJO=>**git no permite enviar un commit sin mensaje, en caso que se intente hacerlo, git abre autom谩ticamente el VIM(editos de c贸digos de git) para poder cargar un mensaje, con ESC+I se edita el mismo, y pulsando ESC+SHIFT+ZZ se guarda el mensaje, se cierra VIM y se fuerza el env铆o del commit pendiente

Es lo que entend铆

Comandos GIT vistos hasta ahora

git config --list //Lista las configuraciones
git config --global user.name "Mr Internauta"
git config --global user.email "[email protected]"
git init //Inicializar un directorio como un proyecto git
git add nombreArchivo.txt //a帽adir un archivo al staging
git add . //a帽adir todos los archivos al staging
git commit -m "mensaje (version1)" //A帽adir los cambios a la rama master(Se puede realizar el commit sin el mensaje pero es mala practica)
git commit
	*Presionar ESC, I
	*Escribir el comentario
	*Salir ESC + Shift, zz (fuerza el comentario)
git status //ver el estado actual del proyecto
git log //ver los cambios del proyecto
git log nombreArchivo.txt //Se pueden ver los cambios de un archivo en particular
git show //cambios que han existido sobre el repositorio
git show nombreArchivo.txt //cambios que han existido sobre un archivo
git diff 1a8c87e791862aff011108a94882c25cfab42add dfb3cac1daa4e8e6cdaabb987015894d4e32ba18 //nueva vieja
git diff 1a8c87e791862aff011108a94882c25cfab42add dfb3cac1daa4e8e6cdaabb987015894d4e32ba18 //vieja nueva

Estoy haciendo mis ejercicios mientras veo el video, y los cambios que estoy haciendo son los apuntes que tomo con el editor de texto ocupando Markdown se los recomiendo, as铆 generas documentaci贸n y posteriormente la puedes agregar a la wiki de GitHub, con los temas aprendidos =D

Como aporte por si a alguien le sirve, en el Git Bash solo con sombrear lo que queremos copiar ya le puedes dar a Clic Derecho Pegar. Es decir no es necesario primero sombrearlo y luego darle a copiar, solo con sombrearlo ya lo copia autom谩ticamente y solo debes darle Clic derecho pegar.

Otro Tip es que si solo quieres sombrear una palabra, si le das doble clic a la palabra te la sombrea autom谩ticamente y recordemos que con que haya quedado sombreada ya est谩 copiada lista para darle clic derecho pegar.

yo para salir del editor utilizo ( " :q "), fue algo que aprendi en el curso de la terminal y linea de comandos con el profesor Enrique Devars, por cierto muy buen curso.

Si estan usando On My Zsh y quieren que el log/diff se imprima en la consola git config --global core.pager cat

Recomendaci贸n: Mientras Freddy explica, tu en tu PC ve siguiendole los pasos y como el dice al final: Ve creando tu propia historia 馃憤
Aca les comparto la mia jejeje

Esta es la historia de Thonny Gonzalez.

Thonny Gonzalez tiene 23 a帽os y naci贸 en Venezuela,
pero vive en Colombia.

En camara parece gru帽on, pero en realidad es amable.

Hoy es un muy entusiasta alumno de Platzi.

Si estas usando Ubuntu como tu sistema operativo principal, un m茅todo sencillo de copiar los commits es:

git show > log: esto almacena el output del git show en un archivo llamado log.

cat log: imprime el contenido de log en terminal.

De esa manera sera mucho mas sencillo copiar los commits y comparar todas sus versiones.

Tambi茅n se puede usar el comando git log --oneline, para que muestre los log mas cortos.

### Ver cambios realizados en un archivo

git show NOMBRE_ARVHIVO

### Comparar los cambios de un archivo

git diff commitA commitB.

//Se deben comparar los tags del mas viejo, al mas nuevo

Para cambiar el editor a nano podemos ejecutar el siguiente comando:

$ git config --global core.editor 鈥渘ano鈥

Personalmente me gusta mas usar nano por que desde cuando empeze con Linux en Cent Os se me hacia super complicado entender el :wq.
En nano se ocupa el 鈥淐TRL + O鈥 para guardar y el 鈥淐TRL + X鈥 para salir.

Nano se puede seleccionar al instalar git.

Para los que no puedan salir al momento de hacer el commit sin comentarios , pueden intentar con con este comando: :q

Otra forma de realizar git commit y luego salir realizando el cambio es usa Esc luego nos dejara escribir en la parte inferior izquierda y escribimos :wq y damos enter.

Compa帽eros mi resumen:

* git show archivo.txt "Nos permite visualizar la lista de cambios"

* "Cuando no agregamos un comentario (solo usamos commit) nos aparecer谩 un editor de c贸digo, para agregar el comentarios usar el siguiente comando:" Esc + I 

* "Para salir del editor de c贸digo usar el comando:" Esc + shift + z+ z

* "Para visualizar las diferencias entre las versiones del archivo usar el comando:" git diff _____(pegar el c贸digo de commit 1) _______ (pegar el c贸digo del commid 2)

Curiosidad: Se puede agregar y realizar el commit al mismo tiempo con el modificador -am
es decir se usa:

git commit -am "Mensaje del commit para el archivo"

En lugar de

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

CHICOS!!
Cuando dice que para salir de ese editor de texto en cual es muy rara la zona de escape, no se mareen, tranquilos.
La tecla 鈥渟ky鈥 (o algo as铆 dice" es la tecla 鈥淓SC鈥. Para los que como yo, nacieron con una computadora en la que la tecla SHIFT era la de borrar, bueno, ya no es m谩s la misma, ahora es una tecla que tienen a su izquierda con una flechita para arriba.
Y bueno, la Z, creo que todos sabemos cual es la Z y donde est谩鈥 (se refiere a la letra Z)

No es necesario mantener las 3 teclas presionadas al mismo tiempo, no les va a dar la mano tampoco jajaja鈥
脡XITOS

En el momento que sombrean los ID de los commits:

Copy = Ctrl + Ins (Insertar)
Paste = Shift + Ins

Consejo: Si sale error es probable que est茅s diferenciando un mismo ID de un commit馃槈

Creo que ya lo saben pero de todas maneras, asegurense que el 鈥渆sc + shift +ZZ鈥 sea en mayusculas para poder salir del editor de comentarios. Buen d铆a.

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.

Si a diff solo le pasamos un commit como argumento va a comparar nuestro estado inicial con el commit que le pongamos.

Git es genial, es como tener una maquina del tiempo y a la vez puedes viajar a trav茅s de realidades alternas jajaja

Los aportes de la cominidad son simepre interesantes.

Pueden apuntar la variable 鈥渃ore.editor鈥 para que el editor predeterminado sea Visual Studio Code o el que mas les guste.

Si quieren usar los shortcuts de teclado para copiar y pegar desde la terminal tienen que agregar el 鈥淪hift鈥, es decir: Copiar (Ctrl + Shift + C) Pegar (Crtl + Shift + V)

Al principio del curso pens茅 que esto de Git iba a estar dificil o sin sentido, pero wow, enamorado completamente de Git.

Para los que usamos WSL, nos abre el editor GNU nano:

Y solo escrbimos el mensaje y luego:

control + o (guardar)
enter
control + x (salir)

otra opcion es :

control + x (salir)
control + y (驴quieres guardar los cambios)
enter

No vendr铆a mal una actualizacion del curso, porque desde este comentario lleva 2 a帽os, y veo que tengo algunos resultados muy diferentes de los que freddy muestra en el video.
No estoy diciendo que el curso a dejado de ser 煤til, es mas, es recontra 煤til y lo recomiendo, pero un actualizaci贸n quedar铆a 10 puntos

Para los que est茅n con wsl o linux pues a m铆 no me funcionaba bien el scape shift zz, entonces lo que hice fue poner control+o, enter para guardar y despu茅s control+x para salir

ahora no necesitas usar esc+shift+z+z solo con ctrl+x luego darle y = de yes cuando abajo en la ultima linea te pregunta si deseas guardar los cambios

chicos!!! estoy descubriendo una herramienta m谩gica: prueben gitkraken https://www.gitkraken.com, con ella puedes hacer adds y commits con un solo click, ver cambios de manera visual, incluye terminal por si gustan hacer las pr谩cticas de este curso, es excelente 馃憣

<h3>Configurar Git</h3>

El - indica que es una palabra recortada y el 鈥 indica que es una palabra completa.

  • git config: Muestra todas las configuraciones de Git.
  • git config --list: Muestra un listado de la configuraci贸n actual de git y lo que le falta.
  • git config --list --show-origin: Muestra la ubicaci贸n de la configuraci贸n de Git.
  • git config --global user.name "nombre usuario": Cambia el nombre de usuario de Git.
  • git config --global user.email "correo": Cambia el correo del usuario de Git.
<h3>Crear un repositorio local</h3>

Debemos ubicarnos en la carpeta donde est谩n todos los archivos o donde vamos a trabajar y escribimos git init lo cual crear谩 una carpeta llamada .git, esto es el repositorio, una base de datos con todos los cambios at贸micos hechos en los archivos.

Con code archivo abres el archivo en Visual Studio Code y con solo code abres Visual Studio Code.

Si no funciona el comando code entonces sigue los siguientes pasos:

  • Abre Visual Studio Code
  • Presiona ctrl (cmd en mac) shift p
  • Busca una opci贸n que diga lo siguiente: Shell Command: Install 鈥榗ode鈥 command in $PATH
  • Selecci贸nala

Y listo, podr谩s utilizar dicho comando.

  • git status: Muestra el estado de los archivos, si est谩n en el staging o en el repositorio y especifica lo que debe hacer si no ha hecho commit o add.
  • git add . : A帽adir todos los archivos al staging.
  • git rm --cached archivo: Elimina el archivo del staging.
  • git commit -m "mensaje": Env铆a el/los archivos al repositorio con un mensaje, es de buenas pr谩cticas colocar un mensaje para saber qu茅 se hizo.

Una buena practica es siempre con git status revisar el estado del repositorio y del estado de los archivos.

  • git log archivo: Muestra todos los cambios hechos en el archivo.
  • git show archivo: Muestra los cambios hechos en el archivo de una forma m谩s detallada, incluyendo las versiones anteriores.

Si haces un commit sin un mensaje, entras al editor de c贸digo vim y debes escribir un mensaje para poder hacer el commit. Con esc shift z z sales de vim, con esc i puedes ingresar texto.

  • git diff c贸digocommit c贸digocommit: Compara a los dos commits y se帽ala las diferencias. Lo mejor es colocar primero el commit m谩s antiguo.

CAMBIAR DE EDITOR

Si el editor de texto que seleccionaste por defecto fue Vim y resulta un poco complejo para iniciar, puedes cambiarlo para usar otro de t煤 preferencia, en mi caso seleccione Visual Studio Code. Puedes realizarlo de estas dos maneras.

  1. Usa este comando para especificar el editor.
 git config --global core.editor "code"
  1. Abre el archivo de configuraci贸n y especifica el editor.
git config --global --edit

Para quienes no les funcione el esc + shift + z + z pueden escribir el mensaje y despu茅s hacer ctrl + x para salir, les pedir谩 si quieren guardar los cambios, colocan y.
y = yes

Para salir del modo de inserccion en el editor del commit, les dejo los pasos:
1- Presionar Escape - ESC una vez y soltar
2- Luego Presionar Shift + zz

Sin darme cuenta estaba haciendo un commit en vcode y en git, me di贸 conflicto y se me bloqueo. Desbloque茅 haciendo
rm -f .git/index.lock
es decir, borrando el fichero de bloqueos, y haciendo de nuevo git commit -am 鈥淓l texto鈥

Nunca hab铆a sufrido tanto en un curso jajaj pero lo amo

Tambien pueden guardar y salir con:

esc + :x

Si por alguna razon cuando ejecutan el comando 鈥済it log鈥 no los deja hacer nada, presionen la tecla q para salir.