Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
development:git:start [07/06/2018 14:23] – [info] mate | development:git:start [05/07/2018 03:27] (actual) – suprimit mate | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
- | = git | ||
- | == info | ||
- | * [[https:// | ||
- | * puntero: [[https:// | ||
- | == metodología de trabajo en Git | ||
- | === estados | ||
- | <image shape=" | ||
- | * Working directory: nuestro directorio de trabajo, que puede ser cualquiera de los diferentes **commits** que hemos ido realizando a lo largo del tiempo, aunque se suele trabajar con el **< | ||
- | * Staging area: es el índice de ficheros de los que se guardará una " | ||
- | * Repository: es la carpeta donde residen los metadatos y los diferentes " | ||
- | |||
- | === cambios en ficheros | ||
- | <image shape=" | ||
- | estados de un fichero: | ||
- | * sin seguimiento (// | ||
- | * sin modificar (// | ||
- | * modificado (// | ||
- | * preparado (// | ||
- | |||
- | == comandos | ||
- | === básicos | ||
- | * empezar repositorio local:< | ||
- | * añadir ficheros/ | ||
- | * añadir todos los ficheros: <code bash>git add -A</ | ||
- | * consultar estado:< | ||
- | * crear un commit (envío/ | ||
- | * hacer un commit de los ficheros preparados-modificados sin tener que añadirlos explicitamente:< | ||
- | * forzar cambio de usuario en un commit en concreto: <code bash>git -c “user.name=matebcn” commit</ | ||
- | * setup sincronización entre repositorio local con repositorio en la nube:< | ||
- | * enviar commit a repositorio nube:< | ||
- | * clonar repositorio nube existente en local (se establece ORIGIN de manera automática):< | ||
- | |||
- | == con más detalle | ||
- | puede ser confuso saber que estás comparando dependiendo del estado del fichero (sin seguimiento - sin modificar - modificado - preparado) | ||
- | * mostrar los cambios con más detalle (en working tree): <code bash>git diff</ | ||
- | * (en //stage area//): <code bash>git diff --staged</ | ||
- | |||
- | === con archivos | ||
- | * mover archivo dentro del working tree: <code bash>git mv < | ||
- | * --> es equivalente a eliminar y dar de alta, git detecta que es el mismo fichero en diferente ubicación:< | ||
- | git rm < | ||
- | git add < | ||
- | * eliminar fichero: <code bash>rm < | ||
- | git rm < | ||
- | * eliminar del área de trabajo (pero no del //working tree//): <code bash>git rm --cached < | ||
- | * para hacer que ciertos archivos (o patrones de archivos) no se registren, se puede crear un fichero '' | ||
- | *.a | ||
- | |||
- | # pero no lib.a, aun cuando había ignorado los archivos terminados en .a en la linea anterior | ||
- | !lib.a | ||
- | |||
- | # ignora unicamente el archivo TODO de la raiz, no subdir/TODO | ||
- | /TODO | ||
- | |||
- | # ignora todos los archivos del directorio build/ | ||
- | build/ | ||
- | |||
- | # ignora doc/ | ||
- | doc/*.txt | ||
- | |||
- | # ignora todos los archivos .txt el directorio doc/ | ||
- | doc/ | ||
- | </ | ||
- | |||
- | === viajes en el tiempo | ||
- | * deshace el ADD de un fichero: <code bash>git reset HEAD < | ||
- | * deja el fichero como en el último commit: <code bash>git checkout -- < | ||
- | * recuperar un snapshot determinado (el proyecto vuelve a ese momento en el tiempo): <code bash>git checkout < | ||
- | * recuperar el último snapshot: <code bash>git checkout master</ | ||
- | |||
- | |||
- | === log | ||
- | * consultar últimos cambios:< | ||
- | * <code bash>git log --oneline</ | ||
- | |||
- | == configuración | ||
- | * prioridad de los ficheros de configuración (más alta, más prioridad): | ||
- | - system: / | ||
- | - global: ~/ | ||
- | - local: .git/config | ||
- | * establecer globalmente el usuario de trabajo: <code bash>git config [--global] user.name “mate”</ | ||
- | * establecer globalmente el e-mail de trabajo:< | ||
- | * muestra la información almacenada y la ubicación del fichero: <code bash>git config --show-origin --get-all user.name</ | ||
- | * comprobando la configuración: | ||
- | |||
- | |||
- | == tags | ||
- | alias a los commit, en lugar de su código | ||
- | * aplica el <tag> al actual: <code bash>git tag < | ||
- | * <code bash>git tag <tag> < | ||
- | * listado de tags: <code bash>git tag</ | ||
- | * usar los tags para cambiar de // | ||
- | |||
- | == alias | ||
- | * <code bash>git config --global alias.cm ‘-c “user.name=matebcn” commit’</ | ||
- | /via: [[https:// | ||
- | |||
- | == RESET | ||
- | <callout type=" | ||
- | |||
- | * no toca la working area: <code bash>git reset --soft</ | ||
- | * borra staging area pero no working area: <code bash>git reset --mixed</ | ||
- | * <label type=" | ||
- | |||
- | |||
- | == PTE | ||
- | {{tag> pendiente wiki}} | ||
- | <callout type=" | ||
- | < | ||
- | push repositorios remotos | ||
- | repositorio centralizado | ||
- | al hacer un clone se establece como remoto | ||
- | git remote add origin < | ||
- | git push origin master → enviamos a origin la master | ||
- | |||
- | actualizando repositorios remotos | ||
- | git branch -all → muestra todas las ramas, incluidas las remotas | ||
- | git pull origin master → descarga los cambios de origin a master | ||
- | git pull --rebase → preserva tus cambios y que no sean machacados por el PULL | ||
- | </ | ||
- | < | ||
- | ramas | ||
- | linea de desarrollo de commit uno detrás de otro | ||
- | ramas: trabajar en características diferentes | ||
- | git branch “caracteristica” → crea rama | ||
- | git branch → muestra las ramas | ||
- | git checkout “caracteristica” → moverte a la rama | ||
- | git checkout -g “caracteristica” → crea la rama y nos movemos a ella | ||
- | git branck -d “caracteristica” → elimina rama | ||
- | fusión de ramas: | ||
- | git log --oneline --decorate | ||
- | git checkout master | ||
- | git merge “caracteristica” | ||
- | bloqueo pesimista -> bloqueas el archivo | ||
- | bloqueo optimista -> se supone que hay trabajo repartido, no debería haber conflicto. | ||
- | si no se toca la misma línea, GIT puede llegar a resolver. si no, intervención manual | ||
- | |||
- | </ | ||
- | == eclipse + bitbucket | ||
- | |||
- | * instalar nuevo software (repositorio) : '' | ||
- | * Seleccionar **Git Integration for Eclipse** y **Java implementation of Git** | ||
- | * para acceder, cambiar perspectiva a Git | ||
- | * también se puede importar un proyecto desde un repositorio GIT (desde Archivo - Import) | ||
- | |||
- | * una vez configurado: | ||
- | * para importar a GIT, creamos un nuevo repositorio local a partir de nuestro proyecto y lo enviamos al repositorio creado | ||
- | |||
- | /via: [[https:// |