git config --global user.name "Usuario" # Nombre de usuario
git config --global user.email [email protected] # e-mail git config --global core.editor "atom --wait" # Atom
git config --global core.editor "nano" # Nano git config --global merge.tool meld # Meld
git config --global merge.tool p4merge # P4mergeGit acepta kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, y opendiff como herramientas válidas.
Herramienta recomendada p4merge. Página sobre como instalarlo en Linux aquí.
Luego el programa externo que se encarga de mostrar las diferencias y resolver conflictos al unir se llaman con:
git difftool
git mergetool-
Info ProGit:
-
Archivo
/etc/gitconfig: Contiene valores para todos los usuarios del sistema y todos sus repositorios. Si pasas la opción--systemagit config, lee y escribe específicamente en este archivo. -
Archivo
~/.gitconfig file: Configuración Git específica a tu usuario. Puedes hacer que Git lea y escriba específicamente en este archivo pasando la opción--global. -
Archivo config en el directorio de Git (es decir,
.git/config) del repositorio que estés utilizando actualmente: Específico a ese repositorio. -
Cada nivel sobrescribe los valores del nivel anterior, por lo que los valores de
.git/configtienen preferencia sobre los de/etc/gitconfig. -
Si quieres sobrescribir esta información con otro nombre o dirección de correo para proyectos específicos, puedes ejecutar el comando sin la opción
--globalcuando estés en ese proyecto.
-
- Inicio el repositorio en la carpeta donde quiero iniciar el proyecto
git init # Creo carpeta .git- Para añadir archivos al repositorio
git add <archivo_ejemplo> [<archivos_ejemplo>]
git add -A # Añade todos los archivos- Con
commithago seguimiento de los archivos en git (localmente)
git commit -m "Descripción del commit"
git commit -am "Descripción" # Realiza un add y luego el commit-
Luego en la página de GitHub se inicia un nuevo repositorio
-
Para conectar mi repositorio local con el repositorio de GitHub digitar:
git remote add origin <URL dada por GitHub>Nota: para referirme al repositorio alojado en GitHub se usará origin, sin embargo se puede usar cualquier otro nombre.
- Finalmente:
git push origin masterEnviamos los cambios al repositorio central en GitHub.
Con el parametro -u hace que recuerde los parametros insertados en el comando, haciendo que la próxima vez que digitemos el comando no los tengamos que poner de nuevo.
Ejemplo: git push -u origin master
- Con
git pull origin masterTrae y/o actualiza el contenido desde el repositorio en GitHub.
Notas:
-
git stash: Funciona para guardar los cambios que llevamos antes de hacerpush, luego congit stash applyse hace un tipo demerge, con la nueva imagen traída desde GitHub. -
Es recomendable hacer
pullantes de hacerpush, para de esta manera tener la copia más reciente del repositorio remoto, y evitar confilctos.
-
Se crea un repositorio en GitHub. Luego se copia la URL del repositorio creado.
-
En la carpeta donde quiero almacenar mi proyecto digito:
git clone <URL>-
El pasado comando clona el repositorio que se encuentra en GitHub, luego ingreso a la carpeta que se acaba de crear y inserto y/o modifico los archivos.
-
Para añadir archivos al repositorio
git add <archivo_ejemplo> [<archivos_ejemplo>]
git add . # Añade todos los archivos- Con
commithago seguimiento de los archivos en git (localmente)
git commit -m "Descripción del commit"
git commit -am "Descripción" # Realiza un add y luego el commit- Finalmente:
git push origin masterEnviamos los cambios al repositorio central en GitHub.
Con el parametro -u hace que recuerde los parametros insertados en el comando, haciendo que la próxima vez que digitemos el comando no los tengamos que poner de nuevo.
Ejemplo: git push -u origin master
- Con
git pull origin masterTrae y/o actualiza el contenido desde el repositorio en GitHub.
git statusPodemos observar el estado de los archivos que han sido modificados, agrgados o eliminados tanto en el directorio de trabajo como en el área de preparación.
git reset HEAD <archivo>Quita el archivo del área de preparación.
git checkout -- <archivo>Descarta los cambios en ese archivo. Lo vuelve al estado del último commit.
git rm <archivo_ejemplo>Borra el archivo de los archivos seguidos por git.
git rm -r <archivo_ejemplo>Borra todos los archivos del folder.
git rm --cached <archivo_ejemplo>Git deja de seguir el archivo, sin embargo deja el archivo en el proyecto.
git logMostrará información acerca de los commits que se han hecho. Hay muchas opciones de formato.
git fetch originTrae la última versión del repositorio remoto. La diferencia de este comando con pull es que pull hace un fetch y un merge. Con fetch debemos ser nosotros quién hagamos el merge.
git diffMostrará la diferencia que tiene los archivos en el directorio de trabajo con el último commit.
git diff –-staged Se muestran los cambios que has preparado y que irán en tu próxima confirmación.
git reset --soft <SHA1>Deshace los commits a partir del commit con hash <SHA1>. Los archivos con modificaciones de los commits que se deshicieron quedan en el área de preparación.
Nota: HEAD~1 es un atajo a el último commit realizado.
# Volver a un commit anterior, descartando los cambios
git reset --hard <SHA1>Devuelve el repositorio local a ese commit y descarta los commit (con sus archivos modificados) de <SHA1> < en adelante.
git commit --amendEste comando utiliza lo que haya en tu área de preparación para la confirmación. Si no has hecho ningún cambio desde la última confirmación (por ejemplo, si ejecutas este comando justo después de tu confirmación anterior), esta instantánea será exactamente igual, y lo único que cambiarás será el mensaje de confirmación.
Ejemplo:
git commit -m 'commit'
git add forgotten_file
git commit --amend git revert HEADDeshacer el último commit. Creo que borra los cambios del commit a revertir.
git remote -vNombre de el repositorio.
git remote show <remote-name>Muestra información acerca de el repositorio remoto.
git remote rename <viejo_nombre> <nuevo_nombre>Renombrar el repositorio remoto.
git remote rm <repositorio_remoto>Borrar un repositorio remoto (de mi PC).
git branchMuestra todas las ramas.
git checkout -b <new_branch>Es para crear una nueva "rama" y pasarse a esta imediatamente, es un sinónimo de git branch new_branch & git checkout new_branch.
git branch -m <nombre_rama_anterior> <nombre_rama_nuevo>Cambia de nombre a una rama.
git merge <rama>Para realizar la unión de dos ramas debemos estar ubicados en la rama a la que se le quieren agregar los cambios y luego aplicar la unión.
git branch -d <rama>Borra una rama. Utilizando la bandera -d eliminamos la rama unicamente si esta se ha unido. De lo contrario nos arrojará un error. Si queremos desechar la rama completa sin importar la unión utilizamos -D como bandera.
Nota: Las rams locales no se sincronizan con las ramas del repositorio remoto.
git fetch
git branch --track branch-name origin/branch-nameGeneralmente cuando uno clona un repositorio remoto únicamente se comienza a seguir los cambios de master que viene siendo la rama o raíz principal del proyecto. para realizarle el seguimiento a una rama remota adicional se utiliza el este comando.
git push origin :<branch>Borrar una rama del repositorio remoto.
Información sobre que es rebase & stash aquí
git stashSe guardan los cambios temporalmente.
git stash popReaplica los cambios guardados.
git stash dropDescarta los cambios guardados.
git stash pop stash@{0} # Para reaplicar
git stash drop stash@{0} # Para borrarlospop & drop a un stash específico.
git tagMuestra las etiquetas hechas en el repositorio.
git tag -a <nombre_tag> <SHA1>Añadir un tag.
git push --tagsSubir tags al repositorio.
Remover archivos que se encuentran en el repositorio pero ahora se encuentarn listados en el .gitignore.
git ls-files --ignored --exclude-standard | xargs git rm # Eliminar
git ls-files --ignored --exclude-standard | xargs git rm --cached # Dejar de seguir
- Ignorar el salto de línea en Git: http://help.github.com/line-endings/
- Reset de archivos: http://codehero.co/git-desde-cero-reset-y-cherry-pick/