Git

 Configuraciones globales, necesario para hacer el commit

  git config --global user.email "you@example.com"
   git config --global user.name "Your Name"

para crear un repositorio:
git init nombre del repositorio

para crear un repositorio en una carpeta ya existente se debe estar dentro del directorio y escribir:
git init

para eliminar el repositorio (eliminar archivo oculto .git):
rm -r .git


Para agregar archivos al repositorio
git add <nombre archivo>

para agregar todos los archivos del path al repositorio
git add -A

ver estado de los archivos
git status
*los archivos en rojo estan la zona de trabajo local, los verdes estan listos para hacer el commit


para eliminar archivos listos para el commit y dejarlo en "untraked"
git rm --cached <nombre archivo>

Hacer commit
git commit -m "descripcion de los cambios"

*Cuando quieres agregar archivos al commit anterior
git commit --amend

*ver commit realizados
  • git log        ve todo el log de commit
  • git log -1  ve el utimo commit
  • git log --oneline  ve los registros resumidos
  • git log --oneline --graph  ve difurcaciones


ESTADOS DE LOS ARCHIVOS EN GIT
El archivo puede pasar por tres estados:
Working directory: archivo dentro del repositorio
staging:archivos con add aplicado y listos para hacer commit
git directory: archivos confirmados




Trabajando con TAG (versiones)
Crear tag
git tag <version tag> <identificador commit>

Ver todos los tag
git tag -l

Eliminar tag
git tag -d <verion tag>

renombrar tag y agregar descripcion al tag
git tag -f -a <version tag> -m "<descripcion tag>"



Visualizando diferencias entre commit (gir diff)
git diff <sha commit mas antiguo> <sha commit mas nuevo>
  • si solo pones un has se comparar con la version actual
  • el orden de los has si vale,si lo pones el nuevo v/s el viejo saldra como si se haya borrado codigo (en rojo)

git reset 

git reset --soft <sha del ultimo comit valido> (los archivos del commit "eliminado" seguiran en el staring area listos para hacer el commit )  
git reset --mixed <sha del ultimo comit valido> (los archivos del commit "eliminado" no seguiran en el staring area, quedaran en el working directory)  
git reset --hard <sha de un log que haya sido eliminado> te permitirá recuperar los commit eliminado, para esto se debe tener el log de los commit guardado en un archivo aparte


GIT BRANCH

*Tener en cuenta que al momento de crear la rama, se crea tomando como base  el estado acual del repositorio.
git branch <nombre rama> para crear rama
git branch -l para listar todas las ramas creadas
git branch -d <nombre rama> para eliminar rama
git branch -D <nombre rama> para forzar eliminacion de la rama aun cuando tenga commit
git branch -m <nombre antiguo> <nombre nuevo> para renombrar el nombre de una rama



Git cheackout 
git checkout <nombre_rama> para moverme a una rama
git checkout <sha del commit para moverse> Esto nos permite movernos al estado del commit seleccionado, creara una rama temporal
git checkout -b <nueva rama> para crear y moverme a la nueva rama
git checkout -- <nombre archivo>  quita los cambios realizados


Git merge
git merge <nombre rama a mezclar> permite mezclar ramas, tener en cuenta que te obliga a hacer un commit, se puede usar tambien "git rebase" pero este comando es mas riesgoso ya que cambia la historia del log (se cambia el sha)


Git stash
*Git no te permite cambiar de rama o sha sin haber guardado los cambios (commit
esto tambien se puede reemplasar con un stash
nos permite guardar las modificaciones para pasarnos a otra rama y luego cuando volvalos a la rama poder aplicar los cambios guardados en el stash (los archivos recuperados desde elstash quedan en working directory)
git stash permite guardar los cambios
git stash list ver los stash realizados
git stash apply recupera lo guardado en el ultimo stash
git stash apply <code stash) permite recuperar es stash especifico

*Tener presente que cuando se recupera un stash de una rama diferente puede traer conflicos



GIT cherry-pick 
GIT cherry-pick <sha> permite traspasar un commit a otra rama, por ejemplo cuando hago los cambios en los archivos en la rama equivocada, para no repetir los cambios se puede copiar el commit a la otra rama que corresponde, ¿esto tambien se podria hacer con un stash?



para generar key SSH
$ ssh-keygen -t rsa -b 4096 -C "jrg.donoso@gmail.com"
*dar enter .... hasta que se cree



clonar repositorio
git clone <urh SFTP o SSH>





Repositorio remoto
git remote add <nombre enlace  repositorio> <url sftp pssh>  agrega repositorio remoto con el local
git remote -v Listado conecciones remotas
git remote remove <nombre link> Permite eliminar link coneccion remota

*Se aconseja primero clonar el repositorio y lugo realizar la coneccion remota sobre él y luego hacer fech o pull



Para traer informacion desde el repositorio remoto al local (fetch o pull)
git fech <nombre link coneccion> <rama a traer> nos crea una rama con la rama traida desde el repositorio remoto, luego de traer la rama se debiese hacer un merge con la rama traida desde el repositorio remoto ("git merge <linkconeccion/master>" )
git pull <link nombre coneccion> <nombre rama a taer> trae los cambios desde el repositorio remoto y realiza el merge de forma automática.



Para enviar informacion desde el repositorio local al repositorio remoto
git push <link nombre conneccion> <nombre rama a envia> Esto hace un merge de forma automatica, es como pull



github
issues=tareas o mejoas que se deben hacer al proyecto, issue_template.md

.gitignoreDentro de este archivo deben ir los pad de archivos que no quieres subir a github tambien existe una herramienta web gitignore.io que permite realizar estos archivos de forma estandar.

.gitattributes =tambien es un archivo interesante para investigar.




*Siempre al comenzar a trabajar en el repositorio debemos hacer pull del repositorio remoto, de esta forma nos trae
las actualizaciones:
git pull


Para asugnar una arama a una rama remota
Si creamos una rama desde gitlab web y queremos hacerle seguimiento de forma local, debemos:
git brach nombre_rama origin/nombre_rama


PULL REQUEST
-primero se debe bloquear la rama master, esto se hace en setting de github
-luego se hace un push a la rama "update" (ejemplo)
-luego en en github se podra hacer un pull request con la rama "update" o con algun otro codigo cargado
-tener en cuenta que para efectuar el merge del pull request se debe aprobar y para esto debe ser aprobado por otro colaborador,esto se configura en la seccion reviview del pull request

Comentarios

Entradas populares de este blog

¿Como llamar una función del componente padre desde un componente hijo, en angular 8?

Frontend: Suscripciones y Observables con Angular 8

Enrutado con lazy loading en angular 8