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
.gitignore= Dentro 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
Publicar un comentario