Apuntes
Apuntes
GITHUB
Un primer curso
INTRODUCCION
Git es un sistema control de versiones. Guarda el historial de cambios de un proyecto en un solo
archivo.
Enlace para descargar https://git-scm.com/
Git puede ser instalado en Windows, Mac o Linux
GitHub es de Microsoft
Git status
Git add
Git reset HEAD
Git reset
Git commit
Git rm [--force, --cached]
Git branch -d
Rama o Branch
Todos los commits se realizan sobre una rama especifica.
Crear una nueva rama lo conocemos como checkout.
Unir dos ramas se conoce como Merge.
Creando un Repositorio
Configurar git
git config --list
git config --global user.email "[email protected]"
git config --global user.name "Tu Nombre"
Ejemplo
1. Git init (Debes estar en la carpeta de tu proyecto)
2. Git status
3. Git add Nombre_Archivo
4. Git commit -m “Mensaje de tu commit”
Nota: Usando el shortcut git commit -am “Mensaje del commit” permite agregar al staging área y
realizar commit.
Tip: Si te olvidaste de agregar un archivo, no hagas un nuevo commit. Realiza los siguientes pasos
Volver en el Tiempo
Git reset –hard borrara hasta el commit que le indiques.
Se puede hacer un git reset –soft el cual dejara archivos en el staging área
El comando git checkout + ID del commit nos permite viajar en el tiempo y devolvernos.
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.
Ramas En Git
La rama master es default
Normalmente posee un apuntador llamado HEAD o es el commit más reciente
Cuando se crea una nueva rama lo que realmente hacemos es una copia del ultimo commit de
nuestra rama master.
Para crear una nueva rama usamos git branch Nombre_Rama
Para hacer cambios entre ramas usamos git checkout Nombre_Rama
Los cambios realizados en cabecera deben unirse a master
Para esto es necesario ubicar el HEAD en master y luego hacer un git merge cabecera
Para configurar una llave SSH seguimos los siguientes pasos en el home de tu entorno local:
Tip: Los alias nos permiten simplificar líneas de código en git. Alias NOMBRE_ALIAS = comando de git.
Manejo de Ramas
Puedes trabajar con ramas que nunca envías a GitHub, así como pueden haber ramas importantes en
GitHub que nunca usas en el repositorio local. Lo importantes que aprendas a manejarlas para trabajar
profesionalmente.
Publicar una rama local al repositorio remoto: git push origin nombre-de-la-rama.
Recuerda que podemos ver gráficamente nuestro entorno y flujo de trabajo local con Git usando el
comando gitk.
Se debe agregar el colaborador en los settings del repositorio no de la cuenta de GitHub antes de
realizar un push.
El encargado de realizar los merge o coordinar lo que suscede con el proyecto es comúnmente
denomidado DevOps
Pull Requests
En un entorno profesional normalmente se bloquea la rama master, y para enviar código a dicha rama
pasa por un code review y luego de su aprobación se unen códigos con los llamados merge request.
Para realizar pruebas enviamos el código a servidores que normalmente los llamamos staging develop
(servidores de pruebas, similares al entorno de produccion) luego de que se realizan las pruebas
pertinentes tanto de código como de la aplicación estos pasan a el servidor de producción con el ya
antes mencionado merge request.
Un pull request puede ser visto como un estado intermedio antes de enviar un merge
Creando un Fork
Los forks funcionan de la misma manera que los pull request
Se utiliza cuando no eres colaborador o perteneces al equipo, pero quieres realizar cambios en el
proyecto como contribuyente.
Para que no se suban estos archivos no deseados se puede crear un archivo con el nombre .gitignore en
la raíz del repositorio con las reglas para los archivos que no se deberían subir (ver [sintaxis de
los .gitignore(https://git-scm.com/docs/gitignore)).
Las razones principales para tomar la decisión de no agregar un archivo a un repositorio son:
Es un blob (binary large object, objeto binario grande), mismos que son difíciles de gestionar en git.
Son archivos que se generan corriendo comandos, por ejemplo la carpeta node_modules que genera
npm al correr el comando npm install
GitHub Pages
https://pages.github.com/
MULTIPLES ENTORNOS DE TRABAJO
Git Rebase: Reorganizando el trabajo realizado
El comando rebase es una mala práctica, nunca se debe usar, pero para efectos de curso te lo vamos a
enseñar para que hagas tus propios experimentos. Con rebase puedes recoger todos los cambios
confirmados en una rama y ponerlos sobre otra.
Rebase debe usarse para repositorios locales ya que reescribe la historia del repositorio
git stash es típico cuando estamos cambios que no merecen una rama o no merecen un rebase si no
simplemente estamos probando algo y luego quieres volver rápidamente a tu versión anterior la cual es
la correcta.
Para saber qué archivos vamos a borrar tecleamos git clean --dry-run
Para borrar todos los archivos listados (que no son carpetas) tecleamos git clean -f
cherry-pick es una mala práctica porque significa que estamos reconstruyendo la historia, usa cherry-
pick con sabiduría. Si no sabes lo que estás haciendo ten mucho cuidado.
git reset --hard HashDelHEAD resetea absolutamente todo incluyendo lo que tengas en staging.
git reset es una mala práctica, no deberías usarlo en ningún momento; debe ser nuestro último recurso.
Para buscar utilizamos el comando git grep color y nos buscará en todo el proyecto los archivos en
donde está la palabra color.
Con git grep -n color nos saldrá un output el cual nos dirá en qué línea está lo que estamos buscando.
Con git grep -c color nos saldrá un output el cual nos dirá cuántas veces se repite esa palabra y en qué
archivo.
Si queremos buscar cuántas veces utilizamos un atributo de HTML lo hacemos con git grep -c "<p>".
Comandos útiles
git shortlog -sn = muestra cuantos commit han hecho cada miembros del equipo.
git shortlog -sn --all = muestra cuantos commit han hecho cada miembros del equipo hasta los que han
sido eliminado
git shortlog -sn --all --no-merge = muestra cuantos commit han hecho cada miembros quitando los
eliminados sin los merges
git blame ARCHIVO = muestra quien hizo cada cosa linea por linea
git blame ARCHIVO -Llinea_inicial,linea_final= muestra quien hizo cada cosa linea por linea indicándole
desde que linea ver ejemplo -L35,50
git branch -a = se muestran todas las ramas tanto locales como remotas
assets/img/iPad.png