Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Aprende GIT Basico

  • 6 Respuestas
  • 3258 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado Bartz

  • *
  • Moderador
  • Mensajes: 147
  • Actividad:
    26.67%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« en: Enero 08, 2019, 10:05:52 pm »
Buenas buenas !

Entonces, que es GIT ?

Segun su pagina oficial Git es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.

Es decir, controlar las versiones, ayudarnos a trabajar en equipo y protegernos de la perdida de informacion (entre otras cosas)

Descarguemos Git de:

https://git-scm.com/downloads



Seguimos  los  pasos  de  la  instalación y  terminamos  teniendo  la  consola

podemos  ver  la  version  y/o  la  ayuda  con
Código: [Seleccionar]
$  git  --version
$  git  --help

Configuramos  el  usuario  y  el  mail
Código: [Seleccionar]
$ git config --global user.name "bartz" 
$ git config --global user.email "[email protected]"
                                                 

podemos  ver  las  configuraciones  con  el  comando 
Código: [Seleccionar]
$ git  config  --global  -l  (solo  lectura)
y se  puede  editar  con  (cuidado)
Código: [Seleccionar]
$ git config  --global –e
La parte de alias todavia no la tenes, pero en unos minutos lo vamos a agregar


Iniciando Git en nuestro proyecto

Para  seguir  explicando  los  comandos  vamos  a  descargarnos  un  template  web de  www.initializr.com  (300kb)
Creamos  la  carpeta  de  nuestro  proyecto  y  hacemos  CD  adentro  de  ella
Código: [Seleccionar]
$ cd /practicagit/proyecto1   

una  vez  dentro  de  la  carpeta  corremos  el  comando
Código: [Seleccionar]
$  git  init
Lo  que  hace  este  comando  es  crear  una  carpeta  .git  que  usara  git  para  hacer  su  magia.
Veamos  como  reacciona  a  este  comando
Código: [Seleccionar]
$  git  status
O  el  siguiente  para  verlo  mas  sencillo
Código: [Seleccionar]
$  git  status  -s  -b

Los  archivos  estan  en  rojo  porque  todavia  no  estan  guardados,  y  aca  cabe  destacar  que  hay  dos  situaciones,   archivos  que  estan  en  el  "Stage"  y  archivos  que  han  sido  "Commited"
Tu repositorio local esta compuesto por tres "árboles" administrados por git. El primero es tu Directorio de trabajo que contiene los archivos, el segundo es el Stage que actua como una zona intermedia, y el último es el HEAD que apunta al último commit realizado.

Poniendolo en otras palabras, se agregan los archivos a guardar en en Stage, y cuando haces Commit se guarda todo lo que este en el Stage en ese momento


Commits

Vamos  a  agregar  los  archivos  al  stage,  hay  varias  maneras  de  hacerlo, talvez  quieras  que  todo  sea un  solo  commit  o  quieras  agregar  las  imagenes  primero,  js  despues,  css  despues,  etc.

Añadir  todos  los  archivos
Código: [Seleccionar]
$  git  add  .
Añadir  un  solo  archivo
Código: [Seleccionar]
$  git  add  index.html
Añadir  todos  los archivos con la misma extension
Código: [Seleccionar]
$  git  add  *.png
Añadir  todos  los  archivos de misma extension incluyendo subcarpetas
Código: [Seleccionar]
$  git  add  "*.png"
Añadir  todo  lo  que  esta  dentro  de  una  carpeta
Código: [Seleccionar]
$ git  add  css/
Añadir  todos  los  de  la  misma  extensión  de  una  carpeta
Código: [Seleccionar]
$  git  add  js/*.js
Añadir  una  lista  de  archivos
Código: [Seleccionar]
$  git  add  <lista,  de,  archivos>
Añadir  todos  exepto  uno
Código: [Seleccionar]
$  git  add  -A  (todos)
$  git  reset  archivo.html  (lo  quita  del  stage)

Sea  cual  sea  la  manera  que  queramos  en  el  momento,  despues  de  añadirlo  al  stage  hay  que  hacer  el  commit,  por  ejemplo  subiendo  el  proyecto  entero

Código: [Seleccionar]
$  git  add  .
$  git  commit  -m  "Añadiendo plantilla inicial"

El parametro -m deja un mensaje en el commit, el cual tiene que ser descriptivo a lo que estamos haciendo, para no complicarnos la vida cuando tengamos que recordar que fue lo que hicimos en ese commit.

En este punto, ya habiendo hecho el primer commit, tenemos nuestro trabajo salvado.
Podes hacer la prueba de eliminar algunos archivos y correr el siguiente comando, el cual restaura todo como estaba en el ultimo commit

Código: [Seleccionar]
$ git checkout -- .    (atencion al espacio entre los guiones y el punto)

Veamos el log de los commits (se ordena en manera descendente, el de mas arriba es el mas reciente)
Código: [Seleccionar]
$ git log

Se ve algo extenso para ser solo 4 commits, no ? 
La mejor manera seria hacerlo con el siguiente comando que es muy util la manera en que nos muestra los branches, y demas todo muy bonito (aunque por ahora no se aprecie)

Código: [Seleccionar]
$ git log --oneline --decorate --all --graph


Creando un Alias

De verdad tengo que escribir todo eso cada vez que quiero ver el log ?!
Absolutamente no, vamos a ver como crear nuestros propios comandos para poder hacer todo eso con solo 2 letras

Código: [Seleccionar]
$  git config --global alias.lg "log --oneline --decorate --all --graph"
El comando que creamos es lo que le sique al punto despues de alias, por lo que ahora todo eso se convierte en
Código: [Seleccionar]
$ git lg

VIAJES EN EL TIEMPO
Seguimos hablando de Git, no nos vamos a ir a 1960, pero que tal si en algun momento cambias de plan
y te conviene mucho mas retomar tu trabajo desde lo que hiciste hace 2 dias y no tener que reescribir todo el codigo ?
Es importante por esto que los commits tengan nombres descriptivos, para saber cual elegir en cada momento

Empecemos por algo sencillo, vamos a ver que diferencias tiene el archivo que tenemos actualmente con el del ultimo commit
Código: [Seleccionar]
$ git diff index.html

tambien podemos ver las diferencias que tiene con el que esta en el stage en vez del commit

Código: [Seleccionar]
$ git diff index.html --staged
Corrigiendo un mensaje del commit que hemos puesto mal, en el caso de haber hecho otra cosa en vez de lo que habiamos puesto

Código: [Seleccionar]
$ git commit --amend -m "Habia subido el JS y no el CSS"
tambien se puede correr solo $ git commit --amend y nos abrira el editor de texto que elegimos durante la instalación, en mi caso VIM

Podemos tambien borrar los commits que hicimos pero sin borrar el progreso o lo que hayamos escrito, vamos a usar el log para saber el hash del commit al que queremos volver, esto nos sirve por ejemplo si en un commit subimos todos los archivos juntos y en realidad lo queriamos hacer en dos partes o algo asi.

Código: [Seleccionar]
$ git reset --soft 123123(hash)
Tambien como hablabamos antes, se puede volver a un punto anterior en el que hayamos estado trabajando, por ejemplo, actualicé todo el texto del index pero al final cambie de idea y me gustaba mas antes. Cuidado porque borra todo hasta el punto que elegimos.

Código: [Seleccionar]
$ git reset --hard 123123(hash)

Como soy una persona indecisa creo que me gustaban los cambios que habia hecho y ya los borre ! Que suerte que no tengo que volver a hacer todo
Existe un comando para ver los commits borrados y todos los cambios que se hayan hecho, este se llama reflog

Código: [Seleccionar]
$ git reflog
$ git reset --hard 123123(hash)



Ignorar ciertos archivos

Esto puede ser util por ejemplo con algun log que no queramos ir guardando o dandole seguimiento, por lo que queremos que Git lo ignore completamente
Debemos crear un archivo llamado .gitignore (atencion al punto)
y dentro de el escribimos los archivos a ignorar
Código: [Seleccionar]
*.log
css/*.min.css
etc/


BRANCHS

Las branchs nos permiten trabajar en dos partes del mismo proyecto pero haciendo diferentes commits
Son utilizadas para desarrollar funcionalidades aisladas unas de otras. La rama master es la rama "por defecto" cuando creas un repositorio. Creas nuevas ramas durante el desarrollo y las fusionas a la rama principal cuando termines.

Creamos una rama con
Código: [Seleccionar]
$ git branch nombre-ramavemos las ramas que existen con
Código: [Seleccionar]
$ git branchcambiamos de una rama a otra con
Código: [Seleccionar]
$ git checkout nombre-ramaTambien podemos crear y cambiar a esa rama en el mismo comando con
Código: [Seleccionar]
$ git checkout -b nombre-ramaEliminar una rama
Código: [Seleccionar]
$ git branch -d nombre-rama


TAGS

Las tags sirven para darles un nombre adicional a los commits, por ejemplo para marcar la primera version estable del programa

Código: [Seleccionar]
$ git tag v1.0.0 (se añade al commit actual)
Para mostrar las tags que hemos hecho
Código: [Seleccionar]
$ git tag
Para borrar un tag
Código: [Seleccionar]
$ git tag -d
tambien para añadirle a un commit anterior
Código: [Seleccionar]
$ git tag -a v0.7.0 123123(hash)


Espero que te haya sido de ayuda !


Con la fuerza del mar, con la paz del rio


Desconectado Mortal_Poison

  • *
  • Underc0der
  • Mensajes: 166
  • Actividad:
    1.67%
  • Reputación 15
  • Become the change you seek in the world. -Gandhi.
    • Ver Perfil
    • VIINACADEMY
  • Twitter: https://www.twitter.com/Mortal_Poison_
« Respuesta #1 en: Enero 08, 2019, 10:38:06 pm »
Buenas noches Bartz,

Buen aporte Bartz. Para añadir como experiencia, conseguí trabajar bastante con GIT el año pasado y es muy potente para cualquier aspecto concerniente a los desarrollos. Además de ser muy útil, es casi que indispensable cuando se requiere hacer despliegues a servidores de producción y son muchos. Cuando ya se aprende a manejar GIT, muchos optan por usar GitKraken, Aunque a mí siempre me ha gustado más la línea de comandos, me parece una interesante opción y que he visto que varias empresas usan GitKraken por motivos de rapidez.

Un saludo.


Become the change you seek in the world. -Gandhi.


Conectado Bartz

  • *
  • Moderador
  • Mensajes: 147
  • Actividad:
    26.67%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #2 en: Enero 09, 2019, 09:52:46 pm »
Gracias @Mortal_Poison , se ve interesante eso de GitKraken !

Personalmente empecé a trabajar en una empresa y mi primer dia fueron 6 horas de aprender Git, lo que naturalmente se convirtió en este post  xD

Saludos !


Con la fuerza del mar, con la paz del rio


Desconectado Cain

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Enero 21, 2019, 05:10:02 pm »
Buen aporte Bartz, si aprendes cosas más avanzadas sobre Git, seria muy útil que hicieras una segunda parte.

Saludos.

Desconectado Robot101

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Febrero 01, 2019, 12:58:03 pm »
His name is Robert Paulson

Hay un curso de Git gratuito muy bueno.

https://miriadax.net/web/gitmooc
No Fear No Distractions

Desconectado BraveF0X

  • *
  • Underc0der
  • Mensajes: 25
  • Actividad:
    3.33%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #5 en: Febrero 01, 2019, 01:19:22 pm »
His name is Robert Paulson

Hay un curso de Git gratuito muy bueno.

https://miriadax.net/web/gitmooc

Gracias. Lo que me parece importante ahora es resolver los conflictos, sé como resolver con git reset --hard o git merge, pero hay casos más complejos que no he podido resolver por consola y me toca acudir a una GUI como SourceTree, pero me gustaria poder solucionarlo desde la terminal. Conoces una pagina donde muetren los diferentes conflictos de GIT?

Conectado Bartz

  • *
  • Moderador
  • Mensajes: 147
  • Actividad:
    26.67%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #6 en: Marzo 01, 2019, 09:51:41 pm »
His name is Robert Paulson

Hay un curso de Git gratuito muy bueno.

https://miriadax.net/web/gitmooc

Gracias. Lo que me parece importante ahora es resolver los conflictos, sé como resolver con git reset --hard o git merge, pero hay casos más complejos que no he podido resolver por consola y me toca acudir a una GUI como SourceTree, pero me gustaria poder solucionarlo desde la terminal. Conoces una pagina donde muetren los diferentes conflictos de GIT?

Personalmente estoy usando TortoiseGit hoy en dia, el cual te permite analizar los conflictos archivo por archivo..

Que es particularmente lo que te complica con mergear los conflictos ?


Con la fuerza del mar, con la paz del rio


 

¿Te gustó el post? COMPARTILO!



[Tutorial] Login y registro basico sin unas base de datos

Iniciado por HckDrk

Respuestas: 11
Vistas: 10463
Último mensaje Noviembre 21, 2011, 07:37:49 am
por Xt3mP
[VIDEOTUTORIAL] PHP 7 - Desde básico hasta desarrollar un software de venta

Iniciado por graphixx

Respuestas: 12
Vistas: 8482
Último mensaje Febrero 22, 2018, 04:08:27 am
por DuendeSlayeR
[Tutorial] Crear un domain checker básico [Xt3mP]

Iniciado por Xt3mP

Respuestas: 0
Vistas: 1959
Último mensaje Marzo 19, 2010, 01:17:06 am
por Xt3mP
[Tutorial] Encriptar password y login básico [Xt3mP]

Iniciado por Xt3mP

Respuestas: 0
Vistas: 2142
Último mensaje Marzo 19, 2010, 01:19:36 am
por Xt3mP
Crear un login y registro basico con PHP y MySQL

Iniciado por Xt3mP

Respuestas: 1
Vistas: 3539
Último mensaje Abril 21, 2012, 02:41:40 pm
por baron.power