Views: 2731589 words0 Comments on GitPublished On: diciembre 19th, 2022Last Updated: diciembre 22nd, 2022By

lestrades

Git

Git es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia, la confiabilidad y compatibilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente. Wikipedia
Fecha del lanzamiento inicial: 7 de abril de 2005
Lanzamiento inicial: 19 de octubre de 2007
Licencia: GNU GPL v2
Tipo de programa: Control de versiones
Lenguajes de programación: Python, C, C++, Perl, Tcl
  • Configuración Global: git config — list —global
  • Configuración Local: git config —list —local

Configuración Global:

git config —global [user.name](http://user.name) “nombre_usuario”

git config —global [user.email](http://user.email) “email_usuario”

git config —global -e

En este último caso el terminal entra en un editor de texto donde se puede cambiar la configuración posicionándose sobre ella.

Para grabar esta configuración: wq!

Para no gravar los cambios o salir del editor: q

Configuración Local: 

git config —local user.name “nombre_usuario”

git config —local user.email “email_usuario”

Otro comando que nos ayuda a cambiar el nombre por defecto de la primera rama, que generalmente se denomina «master»:

//Revisa el nombre de tu rama
git branch -a
//Asegúrate de que la rama activa sea master
git checkout master
//Renombralo usando la opción -m.
git branch -m master main

Para que en futuros proyectos el nombre de la rama principal lo ponga directamente como «main»

git config --global init.defaultBranch main

  • git —version                Para saber la version de Git.
  • git help                    Muestra la ayuda de Git con listado de comandos.
  • git status                  Muestra información sobre la rama en la que nos encontramos.
  • git status --short          Forma corta de mostrar el status.
  • git branch                  Nos dice la rama en la que estamos trabajando.
  • git log                     Se utiliza para ver los «commit» y su información.
  • git config --global -e   Ver en editor de texto el archivo de configuración. Para salir ( :q ). Para modificar ( :wq! )
  • Alias para un log resumido con fechas y commits:
  • git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"
  • Alias para un status resumido: git config --global alias.s status --short
  • git diff                  Muestra las diferencias entre dos archivos.
  • git reflog                Muestra todos los movimientos incluidos reset, commit, etc.
  • git tag                  Lista todos los tag disponibles.
  • git stash list          Ver información sobre el stash.
  • git remote -v            Ver información del repositorio remoto.

git init .

git init

Este comando creará un área conocida como «Staging» donde se guardarán temporalmente nuestros archivos y un repositorio local con el histórico del proyecto.

git init —bare nombre_carpeta.git

Crea un repositorio central para aplicar los cambios de los comandos «git push» y «git pull», es un directorio especial para poder compartir tus repositorios, por ejemplo si no quisieras subir los archivos a GitHub, GitLab, etc. y asi poder dejar en tu ordenador una copia de un repositorio. Más información aquí.

Después de crearlo hay que clonar los repositorios que quieras en él.

Para añadir un archivo : git add nombre_archivo.extension

Para añadir todo un directorio: git add .

Añadir solo los archivos de una extensión: git add *.extension

Especificar solo un directorio y sus subdirectorios para añadir: git add directorio/

Cuando se necesite añadir una carpeta vacía al proyecto, Git si no tiene contenido la ignora, por ello, hay que crear un archivo que normalmente se le llama: .gitkeep

git reset nombre_archivo

Recuerda que el .gitignore puede hacerlo por ti.

Graba el estado actual de los archivos: git commit -a

Grava el estado actual de los archivos con un mensaje:  git commit -m “Mensaje”

Lo recomendable es hacerlo de esta última forma, el mensaje no debe exceder de 80 caracteres.

También es posible hacer un commit directamente sin hacer el add de esta forma:

git commit -am "mensaje"

Estando dentro de la carpeta del proyecto: git checkout -- .

git config --global alias.forma_corta comando_entero.

Ejemplo: git config --global alias.s "status -- short"

Ahora, escribiendo: git s  Ejecutará: git status --short

Para cambiar el mensaje del último commit:

git commit --amend -m "mensaje_cambiado"

Para entrar al documento del commit y poderlo mofificar:

git commit --amend

Presionar la tecla a para editar.
Para guardar ESC : wq!
Para salir ESC :q!

Primeramente tendremos que saber el id o el id resumido del commit a modificar, es un número tipo : 13248c3

git reset --soft id

En este punto podremos modificar archivos y volver a hacer el : git commit -am "mensaje"

Primero necesitamos saber el id  o el id resumido del commit en cuestión

git reset --mixed id

Otra forma de movernos entre commit es:

commit --mixed Head^numero_commits_para_atras #Si lo dejamos vacío se mueve 1

Con este reset NO modificamos los cambios posteriores a él simplemente nos quita los commit echos.

Para volver a un commit y desechar todos los posteriores con sus respectivos cambios:

git reset --hard id

Otra forma de movernos entre commit es:

commit --hard Head^numero_commits_para_atras #Si lo dejamos vacío se mueve 1

git mc nombre_archivo_old nombre_archivo_new

Lo bueno de hacerlo desde git es que queda reflejado el cambio

Se crea un archivo con el nombre: .gitignore

Dentro se especifica a todos los archivos que no se desea dar seguimiento.

directorio/  # Se dejan de seguir todos los archivos y subdiretorios de esa carpeta.

nombre_archivo.extension  # Se deja de seguir ese archivo.

*.extension  # Apunta a todos los archivos con esa extensión.

Crear una rama:  git branch nombre_rama

Crear una rama e ir a ella:  git chekout -b nombre_rama

Moverse  a una rama:   git checkout nombre_rama

Unir una rama a otra (Se unirá a la rama en la que estés):  git merge nombre_rama #Esta rama es la que unirá a la que nos encontramos.

Borrar una rama:  git branch -d nombre_rama_a_borrar

En el caso de que no deje, para forzar el borrado:  git branch -d rama_a_borrar -f

Los tags son etiquetas que se pone a un commit.

Añadir tag al último commit:  git tag nombre

Otra forma de añadir un tag: git tag -a vx.x.x -m "mensaje"

Otro formato: git tag -a v1.0.0 id_commit -m "mensaje"

Borrar un tag:  git tag -d nombre_tag_a_borrar

Para gravar un escenario de trabajo sin añadirlo en un commit se ejecuta:  git stash

Si le queremos poner una descripción: git stash save "nombre"

Para volver a cargar el último stash y borrarlo:  git stash pop

Recuperar un stash de una lista:  git stash apply identifiacador_stash

Borrar un stash:  git stash drop numero_stash

Borrar todos los stash:  git stash clear

Listar los stash:  git stash list

Mostrar los cambios de un stash: git stash show id_stach

Mostrar los cambios detallados de una lista de stash:  git stash list --stat

Más información aquí.

Recuerda que estas modificaciones se hacen antes de hacer el push.

git rebase -i HEAD~Numero_de Commit_atras_a_modificar

Entraremos en un editor y hay que cambiar el pick por la letra de lo que queremos cambiar según los comandos.

Tecla «a» para editar.

Guardar: ( :wq! )

Salir sin guardar: ( :q! )

git config --global core.editor nombre editor
#Ejemplos:
git config --global core.editor kate
git config --global core.editor nano
Git global setup
git config --global user.name "nombre_usuario"
git config --global user.email "email_usuario"
Create a new repository
git clone https://gitlab.com/nombre_usuario/nombre_proyecto.git
cd prueba2
git switch -c main
touch README.md
git add README.md
git commit -m "add README"
git push -u origin main
Push an existing folder
cd existing_folder
git init --initial-branch=main
git remote add origin https://gitlab.com/nombre_usuario/nombre_proyecto.git
git add .
git commit -m "Initial commit"
git push -u origin main
Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.com/nombre_usuario/nombre_proyecto.git
git push -u origin --all
git push -u origin --tags

git push

Si quieres que te guarde el usuario y la contraseña para que no te lo este pidiendo en cada push:

git config --global credential.helper store

Después de introducir este comando, se hace el push y una vez introducidos los datos ya no los volverá a pedir a no ser que cambien.

git push --tags

Esto hace que suban  todos los tag al repositorio remoto.

git pull

En el caso de que se produciera algún cambio y este pull no se pudiera hacer:

git config pull.rebase true

Con esto conseguimos que nos muestre los cambios que no ha podido solventar.

Para aplicarlo de manera global :

git config --global pull.rebase true

Normalmente biene aplicado por defecto :

git config --global pull.ff only

Clonar un repositorio no es solamente bajarse los archivos, se trata de los archivos y todos los cambios que se han echo en él.

git clone url_remota

La url la dan los servidores, como por ejemplo : Gitlab,  Github, etc.