Logo GIT Cheatsheet

Este apunte contiene mi ficha de ayuda sobre GIT: Es mi hoja recordatorio que utilizo como programador, donde tengo las comando que más utilizo. Viene bien por ejemplo cuando borro accidentalmente un fichero, quiero consultar una versión anterior de código o quiero ignorar una modificación en un archivo concreto.


Importante: Este apunte lo uso como referencia, por lo tanto asume que conoces GIT. Si necesitas saber más te recomiendo este otro apunte sobre GIT en detalle

Básico

$ git config --global user.name "Don Quijote"
$ git config --global user.email "donquijote@email.com"

$ mkdir -p /home/proyectos/miproyecto
$ cd /home/proyectos/miproyecto
$ git init

$ cd /home/proyectos
$ git clone https://github.com/LuisPalacios/LuisPalacios.github.io

$ cd /home/proyectos/miproyecto
$ git status


Tags

$ git log --pretty=oneline
a7a05..d9114 (HEAD -> master, origin/master, origin/HEAD) Nueva versión
:
3f64b..37101 Versión terminada
ce5d4..1e621 Primer commit
$ git tag 1.0 3f64b           <== Aplicada al commit con hash 3f64b
$ git tag -d 1.0              <== La borro para añadirla de nuvo con anotación
$ git tag -a 1.0 -m "Primera versión operativa" 3f64b
$ git tag 2.0                 <== Aplica al último commit
$ git push origin 1.0         <== Envío tag o tags al origen.
$ git push origin --tags


Alias

$ git config --global alias.lo '!git --no-pager log --graph --decorate --pretty=oneline --abbrev-commit'
$ git config --global alias.lg '!git lg1'
$ git config --global alias.lg1 '!git lg1-specific --all'
$ git config --global alias.lg1-specific "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %s - %an %C(blue)%d%C(reset)'"
$ git lo
$ git lg


Deshacer.

Técnicamente consiste en Volver a la versión anterior de un archivo de la working copy. Muy útil cuando hemos borrado o modificado un archivo por error y queremos deshacer por completo y volver a su versión anterior (la del último commit). Ojo que es destructivo, vuelve a dejar el contenido anterior del fichero y lo que hayamos modificado se pierde…

$ git restore Capstone/dataset/0.dataclean/datos.ipynb


Importar un repositorio GIT local a GitHub

Está aquí documentado, hay dos formas de hacerlo y voy a describir la primera, con el GitHub CLI.

brew install gh  (MacOS)
apt install gh (Ubuntu)
  • Creo un repositorio local mirepo con git init
mkdir -p /home/luis/prog/github-luispa/mirepo
cd /home/luis/prog/github-luispa/mirepo
git init
e README.md
git add . 
git commit -m "primer commit"
  • Antes de seguir, es bueno tener un Authentication Token. Puedes crear uno en tu usuario de GitHub -> Token. El token necesita los permisos de ‘repo’, ‘read:org’, ‘admin:public_key’.
$ gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations on this host? SSH
? Upload your SSH public key to your GitHub account? /Users/luis/.ssh/id_ed25519.pub
? Title for your SSH key: GitHub CLI
? How would you like to authenticate GitHub CLI? Paste an authentication token
? Paste your authentication token: ****************************************
:
  • A continuación uso gh para “subir” mi repositorio local mirepo a GitHub, prefiero hacerlo de golpe en un solo comando:
cd /home/luis/prog/github-luispa/mirepo

gh repo create --description "Composición sobre Herencia en C++" --remote "CompositionOverInheritance" --source=. --public --push

✓ Created repository LuisPalacios/testLuisPa on GitHub
  https://github.com/LuisPalacios/testLuisPa
✓ Added remote git@github.com:LuisPalacios/testLuisPa.git
:
rama 'master' configurada para rastrear 'CompositionOverInheritance/master'.
✓ Pushed commits to git@github.com:LuisPalacios/testLuisPa.git


Github y Visual Studio Code basado en Web

Si quieres trabajar con VSCode desde tu navegador, directamente conectado culaquier repositorio alojado en GitHub, solo tienes que reemplazar .com por .dev. Si el repositorio es tuyo (has hecho login en GitHub) entonces tendrás derechos de edición y podrás hacer commits directamente. Un par de ejemplos: