Skip to content

Crisfon6/courseGit

Repository files navigation

GIT

Repositorio:

https://github.com/Crisfon6/courseGit

Basic commands

Git es un sistema de control de versiones

Que es un sistema de control de versiones?

El SCV o VCS (por sus siglas en inglés) es un sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas llevar el historial del ciclo de vida de un proyecto, comparar cambios a lo largo del tiempo, ver quién los realizó o revertir el proyecto entero a un estado anterior.

Cualquier tipo de archivo que se encuentre en un ordenador puede ponerse bajo control de versiones.

git.jpeg

Para que proyectos sirve git?

Con Git se obtiene una mayor eficiencia usando archivos de texto plano, ya que con archivos binarios no puede guardar solo los cambios, sino que debe volver a grabar el archivo completo ante cada modificación, por mínima que sea, lo que hace que incremente demasiado el tamaño del repositorio.

“Guardar archivos binarios en el repositorio de Git no es una buena práctica, únicamente deberían guardarse archivos pequeños (como logos) que no sufran casi modificaciones durante la vida del proyecto. Los binarios deben guardarse en un CDN”.

Caracteristicas de git

  • Git almacena la información como un conjunto de archivos.
  • No existen cambios, corrupción en archivos o cualquier alteración sin que Git lo sepa.
  • Casi todo en Git es local. Es difícil que se necesiten recursos o información externos, basta con los recursos locales con los que cuenta.
  • Git cuenta con 3 estados en los que es posible localizar archivos: Staged, Modified y Committed.

Git Commands

Analizar cambios en los archivos de tu proyecto con Git-f6f2fe08-e2e9-46ef-86fa-6180354bc151.webp

Analizar cambios de los archivos

para ver los cambios que a tenido un archivo usamos el command

git show <filename>

Tambien puedes comparar dos commits completos usando el id del commit y el command diff

git diff <id-commit> <id-commit2>
💡 En este punto necesito que vuelvas a repasar todo los anteriores comandos y lecciones vamos a avanzar en el uso diario de git

Funcionamiento parafraseado

Entonces cuando tu inicializas un proyecto git con el commando git init, tenemos 3 entornos de trabajo los cuales son :

  • directorio de trabajo (la carpeta de nuestro proyecto)
  • Preparacion o Staging (donde se guardan antes de ser mandados al repositorio)
  • Repositorio local

para mover nuestros cambios de stage en stage usamos git add para agregar al staging, git commit para agregar al repositorio, y git push para enviar al repositorio remoto

Screen Shot 2022-09-09 at 10.46.50 AM.png

para traer los cambios que existan en el repositorio remoto usamos git fetch y despues hacemos un git merge, Existe un comando que une estos en uno solo el cual es : git pull

Screen Shot 2022-09-09 at 10.48.17 AM.png

Branchs

Las branches es la manera que nos ofrece git para trabajar en “espacios” paralelos en el mismo proyecto y hacer aportes a nuestro proyecto de manera incremental y sostenible. Esto consiste en crear un “espacio” “copia” en el cual tu puedes meter los cambios que necesitas y despues de ser probados en esta Branch ser unidos (mergeados) en la rama principal

Untitled.drawio.png

Manejo de llaves ssh para la conexion a repositorios remotos:

ssh_config.webp

Tags:

tags.webp

Pull request

Los PR(pull request) son la base de la colaboración a proyectos Open Source, si tienen pensando colaborar en alguno es muy importante entender esto y ver cómo se hace en las próximas clases. Por lo general es forkear el proyecto, implementar el cambio en una nueva rama, hacer el PR y esperar que los administradores del proyecto hagan el merge o pidan algún cambio en el código o commits que hiciste.

Fork

Es una característica única de GitHub en la que se crea una copia exacta del estado actual de un repositorio directamente en GitHub, éste repositorio podrá servir como otro origen y se podrá clonar (como cualquier otro repositorio), en pocas palabras, lo podremos utilizar como un git cualquiera

Un fork es como una bifurcación del repositorio completo, tiene una historia en común, pero de repente se bifurca y pueden variar los cambios, ya que ambos proyectos podrán ser modificados en paralelo y para estar al día un colaborador tendrá que estar actualizando su fork con la información del original.

Al hacer un fork de un proyecto en GitHub, te conviertes en dueñ@ del repositorio fork, puedes trabajar en éste con todos los permisos, pero es un repositorio completamente diferente que el original, teniendo alguna historia en común.

Los forks son importantes porque es la manera en la que funciona el open source, ya que, una persona puede no ser colaborador de un proyecto, pero puede contribuír al mismo, haciendo mejor software que pueda ser utilizado por cualquiera.

Al hacer un fork, GitHub sabe que se hizo el fork del proyecto, por lo que se le permite al colaborador hacer pull request desde su repositorio propio.

.gitignore

Esto es un archivo en la raiz del proyecto que especifica que archivos deben ser ignorados y no ser enviados al repositorio remoto

Git stash

Es un lugar temporal en el cual podemos guardar los cambios temporalmente y con ello poder ver nuestra branch sin los cambios que no hemos enviado al stage

git stash

si queremos volver a obtener los cambios hechos y guardados en el stash usamos:

git stash pop

para poder ver el listado de stash que tenemos:

git stash list

para crear una branch con los cambios de un stash usamos:

git stash branch <branch-name>

eliminar stash

git stash drop

GIT CLEAN

Usando git clean podemos eliminar los archivos que no hemos trackeado con git de nuestra carpeta del proyecto para ello usamos git clean pero esto nos va a obligar a forzar debido a que lo que esta haciendo es la eliminacion de archivos del disco duro, por ello es importante SIEMPRE PERO SIEMPRE verificar que archivos van a ser eliminados con el comando para ello usamos :

git clean --dry-run

ya validado los archivos a eliminar usamos el comando para eliminar estos:

git clean -f

Cherry-pick

Es un comando que sirve par traerme los cambios de un commit especifico

git cherry-pick <id-commit>

GIT reflog

con el git reflog podemos visualizar toda la historia del proyecto y sus ramas incluso las eliminadas las {#}HEAD indican los puntos de la historia y con esto nos podemos mover

Git guarda todos los cambios aunque decidas borrarlos, al borrar un cambio lo que estás haciendo sólo es actualizar la punta del branch, para gestionar éstas puntas existe un mecanismo llamado registros de referencia o reflogs.

La gestión de estos cambios es mediante los hashes de referencia (o ref) que son apuntadores a los commits.

Los recoges registran cuándo se actualizaron las referencias de Git en el repositorio local (sólo en el local), por lo que si deseas ver cómo has modificado la historia puedes utilizar el comando:

git reflog

Screen Shot 2022-09-12 at 9.11.07 AM.png

GIT COMMIT —AMEND

Esto permite agregar cambios al commit anterior y cambiar el mensaje del anterior commit, sin crear un commit nuevo.

git commit --amend

GIT GREP

Con esto podemos buscar palabras en todo nuestro proyecto.

#-n nos muestra la linea en la que se usa
#-c nos cuenta las veces que usamos la palabra

git grep -n <palabra-para-buscar>

GIT LOG

Busca una palabra en un commit

git log -S "<palabra-para-buscar>"

Contar la cantidad de commit

ver los logs por persona sobre lo que ha hecho

git shortlog

ver los commits hecho por cada persona incluso los merge

git shortlog -sn --all

ver los commits hechos por cada persona excluyendo los merge

git shortlog -sn --all --no-merges

About

coomands for github

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors