Git es el sistema de control de versiones creado por Linus Torvals, este software permite a los desarrolladores trabajar en un solo proyecto sin afectar el flujo de trabajo. Trabaja mediante ramas y GIT nunca olvida nada lo cual nos permite regresar a ver versiones anteriores en caso de que algo falle.
Puedes practicar los comandos aqui: http://onlywei.github.io/explain-git-with-d3/#fetch
$ git config // Nos permite ver los comandos que podemos usar para configurar.
$ git config --list //Ver la configuración actual de git.
$ git config --global user.email "[email protected]" //Configurar tu email
$ git config --global user.name "Tu Nombre" //Configura tu nombre de usuario
$ git init //Inicia Git dentro de la carpeta raíz de nuestro proyecto
$ git code // Abre Vscode en Windows
$ git status //Muestra el estado acual de la base de datos
$ git add _myfile.txt _ //Agrega el archivo en Staging
$ git add . // Añade todos los archivos de la carpeta actual
$ git add -A // Añade todos los archivos al igual que git add .
$ git rm -- cached _myfile.txt_ // Elimina el archivo de la RAM sin eliminarlo de la carpeta
$ git commit -m "Primer commit de este archivo" //Sube el archivo al repositorio con un mensaje.
$ git log _my file.txt_ //Puede ver todas las modificaciones del archivo asi como ver quien las hizo
$ git show "file.txt" //Muestra las modificaciones del archivo desde el ultimo commit o la version más reciente del archivo
Podemos abrir un editor en la terminal usando.
$ vim miArchivo.html
-
ESC, i //Para escribir en VIM.
-
ESC, shift + zz // Salir
-
:wq // Guardar y salir.
-
:q //Salir sin guardar.
-
:q! //Salir sin guardar cambios de forma hard.
$ git diff Numeros de comit a comparar otro commit a comparar
** EN CASO DE GIT RESET...** Este comando nos ayuda a volver en el tiempo. Pero no como git checkout que nos deja ir, mirar, pasear y volver. Con git reset volvemos al pasado sin la posibilidad de volver al futuro. Borramos la historia y la debemos sobreescribir. No hay vuelta atrás. Este comando es muy peligroso y debemos usarlo solo en caso de emergencia. Recuerda que debemos usar alguna de estas dos opciones: Hay dos formas de usar git reset: con el argumento --hard, borrando toda la información que tengamos en el área de staging (y perdiendo todo para siempre). O, un poco más seguro, con el argumento --soft, que mantiene allí los archivos del área de staging para que podamos aplicar nuestros últimos cambios pero desde un commit anterior.
$ git reset Numeros de comit al cual regresar --soft // --hard este segundo borra todas las versiones despues de la version hecha.
$ git log -- stat // Muestra los cambioes especificos hechos SALIMOS CON "Q"
$ git checkout master myfile.txt // Volvemos a la ultimaversion que se ha hecho commit
$ git branch rama //crea una rama haciendo una copia del ultimo commit en master
$ git checkout nombre-de-la-rama // sirve para movernos entre ramas.
$ git checkout -B nombre-de-la-nueva-rama // Crea una rama nueva y hace el cambio a esa misma rama
$ git commit -am "mensaje" // hace commit de un archivo sin necesidad de hacer git add SOLO FUNCIONA CON ARCHIVOS QUE NOS SON NUEVOS
$ git clone url_del_servidor_remoto: // Nos permite descargar los archivos de la última versión de la rama principal y todo el historial de cambios en la carpeta .git.
$ git push origin main: Luego de hacer git add y git commit debemos ejecutar este comando para mandar los cambios al servidor remoto.
$ git fetch origin main Lo usamos para traer actualizaciones del servidor remoto y guardarlas en nuestro repositorio local (en caso de que hayan, por supuesto).
$ git merge También usamos el comando git fetch con servidores remotos. Lo necesitamos para combinar los últimos cambios del servidor remoto y nuestro directorio de trabajo.
--> git checkout rama a donde se hace quiere hacer el merge. Ejemplo la rama principal.
git merge rama donde estan los cambios. Ejemplo la rama de desarrollo.
`$git chekout main`
`$git merge prueba`
$ git pull Básicamente, git fetch y git merge al mismo tiempo.
$ git branch Muestra cuantas ramas hay y en cual estas actualmente
$ git branch -r Muestra las ramas remotas del servidor de GitHub
$ git show-branch --all Muestra la historia de esas ramas
$ git branch -a Muestra todas las ramas tanto locales como remotas y cuales no se le han hecho push
$ git remote add URL: Guarda la URL del repositorio de GitHub con elnombre origin.
$ git remote
$ git remote -v : Verifica que la URL se haya guardado correctamente
$ git pull origin master --allow-unrelated-histories : Trae la version del repositorio remoto y hacer merge para crear
un commit con los archivos de ambas partes. Podemos usar un git fetch y git merge o solo el git pull con el flag
$ git push origin master : Push para guardar los cambios de nuestro repositorio local en GitHub.
SIEMPRE DESDE EL HOME ~ O CON cd
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
//Terminar de configurar nuestro sistema, se escribe tal cual con comillas.
$ eval "(ssh-agent -s)"
Nota: Revisa la sintaxis del comando anterior en caso de que te de un error al teclearlo
//Añadir tu llave SSH a este servidor
$ ssh-add ruta-donde-guardaste-tu-llave-privada
Ejemplo: $ ssh-add ~/.ssh/id_rsa
Aquí debes configurar tu llave privada no la publica .pub
SSH DE GITHUB
$git remote set-url origin url-ssh-del-repositorio
ver los cambios hechos en git:
$ git log
$ git log --all
$ git log --all --graph --decorate --oneline
$ alias arbolito="git log --all --graph --decorate --oneline"
Tag:
$ git tag -a v0.1 -m "mensaje" id-del-commit
$ git tag muestra los tags que existen
$ git show-ref --tags muestra el tag y su referencia
$ git push origin --tags
$ git tag -d nombre-del-tag
$ git push origin :ref/tags/nombre-del-tag
$ gitk : Abre un entorno visual de la historia de las ramas
$ git stash : Guarda los cambios de manera temporal si esque no queremos hacer commit a esos cambios
$ git stash list: Muestra los cambios guardados en stash
$ git stash pop : aplica los cambios guardados.
$ git stash branch nombre-de-la-rama : manda esos cambios a esa nueva rama
$ git stash drop : borra el cambio guardado en stash
$ git clean --dry-run : "Simula" los archivos que va a borrar o nos muestra los archivos que va a borrar.
$ git clean -f : Borra todos los archivos listados QUE NO SEAN CARPETAS
$ git cherry-pick #No de commit : Trae commits especificos de otra rama
$ git log --oneline : Muestra el arbolito de cambios en una sola linea
$ git commit --amend Agrega los cambios que no habiamos hecho al ultimo commit de esa rama
$ git reflog Muestra TODO
$ git reset --HARD #hash : Resetea todo al punto anterior en caso de que se rompa todo
$ git reset --soft Resetea todo pero mantiene los cambios en staging que no hayan tenido un commit
$ git merge --abort deshace el ultimo merge realizado y te posiciona en el ultimo commit.
$ git checkout -- . Te lleva al ultimo commit hecho de la rama.
NOTA: git merge --abort, no deshace el cambio hecho por un git pull o git fetch
$ git grep la-palabra: Muestra en que documentos se encuentra esa palabra
$ git grep -n la-palabra: Muestra en que linea y en que archivos se encuentra
$ git grep -c la-palabra: Muestra cuantas veces se ha usado.
$ git log -S "la palabra": Muestra la palabra dentro de la historia de los commits
$ git shortlog : Muestra cuantos commits han hecho los miembros del equipo
$ git shortog -sn: Muestra el numero de commits y quien ha hecho más commits
$ git shortlog -sn --all --no-merges: Muestra commits pero sin los merges
$ git blame archivo.txt: Muestra quien hizo que, linea por linea
$ git blame -c archivo.txt: Muestra de mejor manera el comando anterior
$ git blame archivo.txt -L35,50: Muestra solo los cambios desde la linea 35 hasta la 50 y muestra quien hizo que.
$ git blame archivo.txt -L35,50 -c: Muestra mejor lo anterior
$ git config --global alias.nuevocomando "El comando a reemplazar"
ejem: $ git config --global alias.stats "shortlog -sn --all --no-merge"
$ git stats (Muestra el comando anterior)