====== GIT (old) ====== ===== Básico ===== ==== Vocabulario y keywords ==== * **Index**: Índice de cambios que se han realizado entre un commit y otro en un proyecto o working tree. * **HEAD**: Keyword para la última versión. ==== Trabajo con GIT en local ==== === Crear repositorio === El repositorio (o working tree) se creará en el directorio donde se llame al siguiente comando: $ git init Una vez se tiene el repositorio se han de agregar elementos. === Agregar elementos al working tree === Para añadir un elemento haremos: $ git add file.txt $ git add directory La acción de agregar se realiza recursivamente, por lo que si añadimos un directorio al working tree se añadirán también sus subdirectorios y ficheros. === Modificar elementos === Con el mismo parámetro ''add'' agregamos un cambio.\\ Por ejemplo, si hemos modificado //file.txt// que ya estaba en el repositorio: $ git add file.txt === Mover elementos a otros directorios === $ git mv file.txt directory ==== Multiples repositorios ==== === Clonar repositorio === $ git clone repo cloned_repo === Ver información sobre el repositorio del que viene === Ver nombre del repositorio que viene. $ git remote Ver información de un repositorio remoto. $ git remote show repo_name === Subir cambios a un repositorio remoto === $ git fetch Esto sube los cambio pero no los actualiza, para ello debemos hacer: $ git fetch $ git merge origin/master O, en un único comando: $ git pull ===== Funcionamiento ===== ==== Gestión de commits ==== Cada vez que se realiza un commit la versión actual apunta a la anterior y, en cascada, se van almacenando los cambios en el proyecto. === Revertir al último commit === Sin haber realizado ningún cambio (''add''): $ git checkout somefile.txt Habiendo realizado algún cambio (sólo un fichero): $ git reset HEAD somefile.txt Habiendo realizado algún cambio (todo el proyecto): $ git reset HEAD === Revertir a un commit concreto === Esto crearía un segundo commit idéntico al escogido pero posterior al actual. $ git revert 068b9b9 ==== Visión de cambios ==== === Ver historial de cambios === Historial largo: $ git log Historial corto: $ git log --pretty=oneline --abbrev-commit Historial completo: $ git log -p Formatear el historial: $ git log --all --pretty=format:"%h %cd %s (%an)" --since='7 days ago' $ git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short === Ver últimos cambios realizados === $ git status === Ver diferencia entre commits === Comparar un commit con su predecesor: $ git show 3720b35 Comparar dos commits: git diff a2a1eb3..068b9b9 ==== Configuración ==== === Datos de usuario (por proyecto) === $ git config user.name "John Q. Public" $ git config user.email "johnq@example.com" === Datos de usuario (globales) === Para todos los proyectos: $ git config --global user.name "John Q. Public" $ git config --global user.email "johnq@example.com" === Salida por consola === Agregar colores (para acciones como ''diff'', ''status''...): $ git config --global color.ui auto ===== Avanzado ===== ==== Archivo .gitconfig ==== En el directorio personal de tu usuario existirá un archivo denominado .gitconfig, este tendrá tu configuración. === Agregar alias === [alias] co = checkout ci = commit st = status br = branch hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short type = cat-file -t dump = cat-file -p Si los agregramos, al hacer ''git co'' estaremos haciendo un ''git checkout'' (por ejemplo). ==== Directorio .git ==== * [[http://gitimmersion.com/lab_22.html|Explicación]] ==== Ignorar ficheros ==== Podemos indicar reglas para ignorar los ficheros de un directorio con el fichero ''.gitignore'' del proyecto. \\ Podemos hacerlo globalmente con: $ git config --global core.excludesfile ~/.gitignore_global O haciendo que no se añadan al repositorio con desde ''.git/info/exclude''. === Repositorio === * {{:code:git:python.gitignore.zip|Gitignore recomendado para Python}} * [[https://github.com/github/gitignore|Repositorio]] ===== Cómo... ===== === Ver el último commit? === $ git hist --max-count=1 === Impedir el commit === $ git reset :!:... Y dejarlo como estaba. $ git reset --hard ==== GitHub ==== * [[https://github.com/]] === Crear repositorio === === Descargar repositorio === $ git clone https://github.com/epintor/Hindoor.git === Actualizar el repositorio === Realizar cualquiera de los comandos de modificación: * git add * git rm * git mv Hacer un commit. $ git commit -a Si (y sólo si) hay cambios en la branch 'master': $ git pull origin master Subir los cambios (a la branch 'master'): $ git push origin master ===== Herramientas ===== ==== GUIs ==== === Meld === Para ver cambios realizados en un repositorio: * [[http://meld.sourceforge.net/install.html|web]] * [[http://www.linux.com/archive/feature/61372|artículo]] === QGit === * [[http://digilander.libero.it/mcostalba/|web]] === Giggle === Visor para GNOME: * [[http://live.gnome.org/giggle|web]] ==== Plugins para IDEs ==== === Egit === Plugin para eclipse: * [[http://www.eclipse.org/egit/|web]] * [[http://wiki.eclipse.org/EGit/User_Guide|tutorial]] ==== Servidor Gitosis ==== En Ubuntu existe el paquete ''gitosis'' que instala un servidor GIT. \\ ===== Notas ===== ==== Links ==== * Libro de la comunidad de GIT: [[http://book.git-scm.com/]] * Los 10 mejores tutoriales: [[http://sixrevisions.com/resources/git-tutorials-beginners/]]