Link de la lista con las 10 clases de git
Los corchetes [] son de referencia nunca se colocan
El igual igual mayor que ==> son para saber si realiza algo de manera específica
git help
Cambiar o ver el nombre de usuario
git config --global user.name "Marcelo"
git config --global user.name
Cambiar o ver el email
git config --global user.email "[email protected]"
git config --global user.email
Colores en el terminal
git config --global color.ui true
Listar la configuracion actual
git config --global --list
Iniciar el git en la carpeta del proyecto solo 1 vez
git init
Status del proyecto
git status
Agregar archivos para comit
git add [archivos -A todos o .]
Commit
git commit -m "descripción del commit"
Comit + add en la misma línea
git commit -am "descripción del commit"
Actualizar el último commit
git commit --amend
git commit --amend -m "modifcar rapidamente la descripcion del commit"
Listar los commits hechos
git log
Moverse por el proyecto, branch o tags
git checkout [codigo sha del commit | nombre del branch | tag]
Moverse al ultimo commit realizado
git checkout [nombre del branch]
Crear archivo con el listado de commits (nombre + formato cualquiera)
git log > commits.txt
Reset de commits --soft --mixed --hard
Soft no modifica e códio
Hard regresa el código al commit specifico
git reset --soft [idCommit]
git reset --hard [idCommit]
Ramas del proyecto
Al crear el proyecto la rama se llama master
Listar ramas
git branch
git branch -a ==> muestra incluso ramas ocultas
Clonar Repositorios
git clone https://github.com/socketio/socket.io.git
Clonar varias ramas
Se clona normal y se debe hacer git branch -a
para ver las otras ramas ocultas
Luego git checkout -b [rama] origin/[rama]
Crear ramas
al crear una rama esta inicia desde el ultimo commit de master
git branch [nombre de la rama]
Crear y moverse a la rama creada en la misma línea
git checkout -b [nombre de rama]
fusionar ramas
Primero nos cambiarnos a la rama que va a absorber los cambios
git merge [rama que sera absorbida]
Eliminar ramas
git branch -d [nombre de la rama]
Conectar repositorios
git remote add [origin] http://urlrepositorio.git
ver repositorios conectados
git remote -v
Quitar coneccion de repositorios
git remote remove [origin]
Push al server
git push [origin] [master] ==> se puede cambiar master por otra rama
git push [origin] [master] -f ==> fuerza a subir los cambios
Forzar pull del server
git fetch --all
git reset --hard origin/[rama]
Etiquetas
Usado para asignar versiones NO se suben al hacer push
git tag -a [v1.0] -m "Mensaje del tag" [codigo sha] ==> lo agrega a un commit existente
git tag -a [v1.0] -m "Mensaje del tag" ==> lo agrega al último commit
git tag -a [v1.0] ==> lo agrega al último commit pero sin descripción
Listar etiquetas
git tag
Moverme a un tag especifico
fit checkout [v1.0]
subir tag
git push [origin] [v1.0] ==> sube tag especifica
git push [origin] --tags ==> sube todos los tags
Si se trabaja con un equipo antes de hacer un push es necesario baajar los cambios del server por si alguien mas modificó algo y esta en nuestro local desactualizado
Bajar los cambios remotos a una rama oculta
git fetch [origin]
Pasar los cambios de la rama oculta a la rama deseada
git merge [origin/master (rama oculta)]
Si hay un error con el merge porque se modifico el mismo fragmento de código se debe seleccionar cual es el correcto en nuestro IDE hacer commit y subir
Si se esta utilizadno el git de un tercero se debe hacer fork y abrán nuevas ramas ocultas por lo general el de fork es
git fetch upstream
git fetch origin
Pagina para github
Si se desea tener un sitio "alojado" en github similar a [usuario].github.io/[sitio] se debe crear la rama gh-pages y subirlo a github
Deployment
Las llaves son usadas para no pedir la contraseña y usuario en cada push se debe generar en la pc y colocarla en github o server, en windows se puede usar el git bash para hacerlo
ssh-keygen
Hooks
Son usados para realizar acciones especificas antes o despues de un evento de git por ejemplo de commit o push, se encuentra en .git/hooks se crea el archivo de hok especifico y se agrega
#!/bin/sh
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "master" == "$branch" ]; then
git --work-tree=/home/git/node/algo-io checkout -f
fi
done
Incluso es posible ejecutar un sh ssh [email protected] 'bash -s'
para lo cual primero es necesario agregar la llave publica del servidor en el caso de que sea a otro externo
Se debe dar privilegios al hook chmod +x [nombre del hook]