Git Notes
Configuraciones iniciales
Pueden ser globales o para proyectos especificos
git config --global user.name "username"
git config --global user.email "mail"
git config --global color.ui true
git config --global --list
Inicia proyecto, se usa solo una vez:
git init
Muestra lo que ya subimos o lo que nos falta por subir:
git status
###commits
Adiciona carpetas al commit:
git add
Asigna comentarios de lo que cambiamos:
git commit -m "mensaje"
Muestra todos los commit que hicimos:
git log
Muestra los commits de una manera mas ordenada y legible
git log --graph --abbrev-commit --oneline
Con el hash del commit, podemos volver a un commit específico:
git checkout 2071abbddae7ee1d32c4508a1c02993ae3b0b2b6
Luego de hacer un git add, con este comando vamos a agregar eso al último commit que se haya hecho en el equipo:
git commit --amend
Cambia el ultimo commit si no esta subido al remoto:
git commit --ammend -m "xxxxxxx"
Deshacer commits:
git reset --soft
git reset --mixed
git reset --hard
Con este comando borramos todo y volvemos al estado del ultimo commit
git reset --hard HEAD~1
Si creaste archivos y luego hiciste un 'reset --hard', con este comando te borra los archivos ignorados y no solo el código:
git clean -f -d
###branch
Muestra las ramas:
git branch
Crea una rama:
git branch nombre
Moverse en las ramas:
git checkout rama
Borra rama local:
git branch -d rama
Adiciona toda la rama en la rama que estamos posicionados:
git merge rama
Subir rama a repositorio remoto:
git push origin rama
Borra rama remota:
git push origin --delete rama
Cambiar de una rama a otra
git switch rama
###Repositorio remoto
Conectar con GitHub:
git remote add origin <link_$ github>
Ver nuestra conexión:
git remote -v
Eliminar repositorio remoto:
git remote remove origin
Enviar cambios a $ github:
git push origin master
Si por alguna razon hicimos un reset y queremos borrar el commit q continua en el repositorio remoto, con este comando forzamos a que nuestro local quede como head y asi borramos lo q le continua en el remoto:
git push origin -f
###Stash
Si estuvimos trabajando en la rama incorrecta y ahora no podes hacer un switch del branch y tampoco queres commitear los cambios, tenés que hacer:
git stash
ahora cambias de branch $ git switch branch
, y despues aplicas los cambios guardados en el stash:
git stash apply
git stash drop
Issues : Son una forma de continuar, mejorar o solucionar un error en nuestros repositorios (proyectos)
Milestones : Son grupos de issues que aplican para un proyecto, característica o periodo de tiempo.
Labels : son una manera de organizar distintos tipos de problemas.
###Tags
Tags anotadas, con msj:
git tag -a v1.0 -m "Mensaje"
Tag a commit específico:
git tag -a v1.0 -m "Mensaje" codigoSHA // tag a commit especifico
Subimos a GitHub nuestro tag:
git push origin v0.1
git push origin --tags
###merge
En caso de que el master remoto tenga un commit de mi compañero, hago este comando y el máster se copia en el branch oculto 'origin/master':
git fetch origin
Luego del fetch, hacemos el merge de origin/master con nuestro master local, así combinamos el commit del master remoto con nuestro commit local, y genera un commit con todo:
git merge origin/merge
luego solo queda subir todo con:
git push origin master
Cuando hacemos un merge puede hacer 2 acciones: fastfoward -> cuando hay cambios en distintas partes del código de parte de usuarios distintos Manual Merge -> cuando se cambiaron mismas lineas de código (conflicto)
Cuando queremos colaborar en un proyecto que no estamos registrados, hacemos FORK del proyecto y se copia en un repositorio de nuestro usuario.
Descarga del proyecto principal:
git fetch upstream
```
Si hacemos ``$ git fetch origin`` descarga desde nuestro repo remoto
Si tenemos un cambio en nuestro foro y queremos subirlo al repo principal, se lo solicitamos a la organización a través de un pull request, luego lo revisan a ver si se acepta el pull o no
---
####Git pages
En nuestro usuario, creamos un repo que termine con .github.io y clonamos, solo podemos poner frontend, lo que guardemos en el repo se muestra ahí
Si ya teníamos un repo creado y trabajado, lo que tenemos que hacer es crear una rama que se llame 'gh-pages' y hacer el merge de lo que venimos trabajando, se la a visualizar como web si estamos trabajando un frontend
---
---
*Una vez no andaba el push a github porque tenía commit en el local que no tenía en el remoto y viceversa, lo arregle así:
```
git fetch --all
git reset --soft origin/master
git add --all
git commit -am "mensaje del commit"
git push origin master
```