diff --git a/.gitignore b/.gitignore index 804bb4ab..bd970137 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,5 @@ progit.pdfmarks progit.epub progit-kf8.epub progit.mobi -/images/ + /bin/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..cd6f15ad --- /dev/null +++ b/.travis.yml @@ -0,0 +1,34 @@ +language: ruby +sudo: false +git: + depth: false +cache: bundler +before_install: + - wget https://raw.githubusercontent.com/progit/progit2-pub/master/bootstrap.sh + - sh bootstrap.sh +script: bundle exec rake book:build +after_success: bundle exec rake book:tag +deploy: + provider: releases + file_glob: true + file: + - progit*.epub + - progit*.mobi + - progit*.pdf + skip_cleanup: true + on: + tags: true + api-key: $GITHUB_API_TOKEN +branches: + only: + - master + - /^2\.1(\.\d+)+$/ + +addons: + apt: + packages: + - epubcheck +notifications: + email: + on_success: never + on_failure: always diff --git a/book/A-git-in-other-environments/1-git-other-environments.asc b/A-git-in-other-environments.asc similarity index 78% rename from book/A-git-in-other-environments/1-git-other-environments.asc rename to A-git-in-other-environments.asc index a1e464e3..8b83c52f 100644 --- a/book/A-git-in-other-environments/1-git-other-environments.asc +++ b/A-git-in-other-environments.asc @@ -1,3 +1,4 @@ +[#A-git-in-other-environments] [appendix] == Git en otros entornos @@ -11,18 +12,18 @@ But the story doesn't end there; Git is usually used as part of a larger ecosyst Now we'll take a look at some of the other kinds of environments where Git can be useful, and how other applications (including yours) work alongside Git. //// -include::sections/guis.asc[] +include::book/A-git-in-other-environments/sections/guis.asc[] -include::sections/visualstudio.asc[] +include::book/A-git-in-other-environments/sections/visualstudio.asc[] -include::sections/eclipse.asc[] +include::book/A-git-in-other-environments/sections/eclipse.asc[] -include::sections/bash.asc[] +include::book/A-git-in-other-environments/sections/bash.asc[] -include::sections/zsh.asc[] +include::book/A-git-in-other-environments/sections/zsh.asc[] -include::sections/powershell.asc[] +include::book/A-git-in-other-environments/sections/powershell.asc[] === Resumen diff --git a/book/B-embedding-git/1-embedding-git.asc b/B-embedding-git.asc similarity index 76% rename from book/B-embedding-git/1-embedding-git.asc rename to B-embedding-git.asc index 4e34b822..5e9b8a23 100644 --- a/book/B-embedding-git/1-embedding-git.asc +++ b/B-embedding-git.asc @@ -1,3 +1,4 @@ +[#B-embedding-git] [appendix] == Integrando Git en tus Aplicaciones @@ -6,8 +7,8 @@ Incluso las aplicaciones que no sean para desarrolladores, tales como editores d Si necesitas integrar Git con tu aplicación, tienes básicamente tres opciones: generar un shell y usar la herramienta de línea de comandos de Git; Libgit2; y JGit. -include::sections/command-line.asc[] +include::book/B-embedding-git/sections/command-line.asc[] -include::sections/libgit2.asc[] +include::book/B-embedding-git/sections/libgit2.asc[] -include::sections/jgit.asc[] +include::book/B-embedding-git/sections/jgit.asc[] diff --git a/book/C-git-commands/1-git-commands.asc b/C-git-commands.asc similarity index 57% rename from book/C-git-commands/1-git-commands.asc rename to C-git-commands.asc index f2324f16..2c68c255 100644 --- a/book/C-git-commands/1-git-commands.asc +++ b/C-git-commands.asc @@ -1,3 +1,4 @@ +[#C-git-commands] [appendix] == Comandos de Git @@ -16,23 +17,23 @@ Git tiene una forma predeterminada de hacer cientos de cosas. Para muchas de est El comando `git config` se ha utilizado en casi todos los capítulos del libro. -En <<_first_time>> lo usamos para especificar nuestro nombre, dirección de correo electrónico y editor de preferencia antes incluso de comenzar a utilizar Git. +En <> lo usamos para especificar nuestro nombre, dirección de correo electrónico y editor de preferencia antes incluso de comenzar a utilizar Git. -En <<_git_aliases>> mostramos cómo se puede utilizar para crear comandos abreviados que se expanden para secuencias largas de opciones para no tener que escribirlas cada vez. +En <> mostramos cómo se puede utilizar para crear comandos abreviados que se expanden para secuencias largas de opciones para no tener que escribirlas cada vez. -En <<_rebasing>> lo usamos para hacer `--rebase` predeterminado cuando se ejecuta `git pull`. +En <> lo usamos para hacer `--rebase` predeterminado cuando se ejecuta `git pull`. -En <<_credential_caching>> lo usamos para establecer un almacén predeterminado para tus contraseñas HTTP. +En <> lo usamos para establecer un almacén predeterminado para tus contraseñas HTTP. -En <<_keyword_expansion>> mostramos como configurar filtros sucios y limpios sobre contenido que entra y sale de Git. +En <> mostramos como configurar filtros sucios y limpios sobre contenido que entra y sale de Git. -Finalmente, básicamente la totalidad de <<_git_config>> está dedicado al comando. +Finalmente, básicamente la totalidad de <> está dedicado al comando. ==== git help El comando `git help` se utiliza para presentarte toda la documentación contenida con Git sobre cualquier comando. A pesar de que estamos dando una visión general de la mayoría de los más populares en este apéndice, para obtener una lista completa de todas las posibles opciones e indicadores para cada orden, siempre se puede ejecutar `git help `. -Introducimos el comando `git help` en <<_git_help>> y te mostramos cómo utilizarlo para encontrar más información sobre el `git shell` en <<_setting_up_server>>. +Introducimos el comando `git help` en <> y te mostramos cómo utilizarlo para encontrar más información sobre el `git shell` en <>. === Obtener y Crear Proyectos @@ -43,13 +44,13 @@ Hay dos maneras de obtener un repositorio Git. Una de ellas es copiarlo desde un Para tomar un directorio y convertirlo en un nuevo repositorio Git en el que puedas empezar a controlar sus versiones, simplemente puedes ejecutar `git init`. -En primer lugar, introducimos esto en <<_getting_a_repo>>, donde mostramos la creación de un nuevo repositorio para empezar a trabajar. +En primer lugar, introducimos esto en <>, donde mostramos la creación de un nuevo repositorio para empezar a trabajar. -Hablamos brevemente acerca de cómo puedes cambiar la rama por defecto desde ``master'' en <<_remote_branches>>. +Hablamos brevemente acerca de cómo puedes cambiar la rama por defecto desde ``master'' en <>. -Usamos este comando para crear un repositorio desnudo (bare) vacío para un servidor en <<_bare_repo>>. +Usamos este comando para crear un repositorio desnudo (bare) vacío para un servidor en <>. -Por último, examinamos algunos de los detalles de lo que realmente hace detrás de escena en <<_plumbing_porcelain>>. +Por último, examinamos algunos de los detalles de lo que realmente hace detrás de escena en <>. ==== git clone @@ -57,13 +58,13 @@ El comando 'git clone` es en realidad una especie de envoltura alrededor de vari El comando `git clone` es utilizado en docenas de lugares a lo largo del libro, pero sólo enumeraremos algunos lugares interesantes. -Básicamente se introdujo y se explicó en <<_git_cloning>>, donde examinamos algunos ejemplos. +Básicamente se introdujo y se explicó en <>, donde examinamos algunos ejemplos. -En <<_git_on_the_server>> nos fijamos en el uso de la opción `--bare` para crear una copia de un repositorio Git sin directorio de trabajo. +En <> nos fijamos en el uso de la opción `--bare` para crear una copia de un repositorio Git sin directorio de trabajo. -En <<_bundling>> lo usamos para desempaquetar un repositorio Git empaquetado (bundle). +En <> lo usamos para desempaquetar un repositorio Git empaquetado (bundle). -Finalmente, en <<_cloning_submodules>> aprendemos la opción `--recursive` para realizar la clonación de un repositorio con submódulos un poco más simple. +Finalmente, en <> aprendemos la opción `--recursive` para realizar la clonación de un repositorio con submódulos un poco más simple. Aunque se usa en muchos otros lugares a través del libro, estos son los que son algo únicos o donde se utiliza en formas que son un poco diferentes. @@ -78,33 +79,33 @@ El comando `git add` añade contenido del directorio de trabajo al área de ensa Este comando es un comando increíblemente importante en Git y se menciona o se utiliza docenas de veces en este libro. Vamos a cubrir rápidamente algunos de los usos únicos que se pueden encontrar. -En primer lugar, introducimos y explicamos `git add` en detalle en <<_tracking_files>>. +En primer lugar, introducimos y explicamos `git add` en detalle en <>. -Mostramos como usarlo para resolver conflictos de fusión en <<_basic_merge_conflicts>>. +Mostramos como usarlo para resolver conflictos de fusión en <>. -Repasamos su uso para seguir de forma interactiva sólo partes específicas de un archivo modificado en <<_interactive_staging>>. +Repasamos su uso para seguir de forma interactiva sólo partes específicas de un archivo modificado en <>. -Por último, lo emulamos en un bajo nivel en <<_tree_objects>>, por lo que podemos tener una idea de lo que está haciendo detrás de escena. +Por último, lo emulamos en un bajo nivel en <>, por lo que podemos tener una idea de lo que está haciendo detrás de escena. ==== git status El comando `git status` te mostrará los diferentes estados de los archivos en tu directorio de trabajo y área de ensayo. Qué archivos están modificados y sin seguimiento y cuáles con seguimiento pero no confirmados aún. En su forma normal, también te mostrará algunos consejos básicos sobre cómo mover archivos entre estas etapas. -Primero cubrimos `status` en <<_checking_status>>, tanto en su forma básica como simplificada. Mientras lo utilizamos a lo largo del libro, prácticamente todo lo que puedes hacer con el comando `git status` está cubierto allí. +Primero cubrimos `status` en <>, tanto en su forma básica como simplificada. Mientras lo utilizamos a lo largo del libro, prácticamente todo lo que puedes hacer con el comando `git status` está cubierto allí. ==== git diff El comando `git diff` se utiliza cuando deseas ver las diferencias entre dos árboles. Esto prodría ser la diferencia entre tu entorno de trabajo y tu área de ensayo (`git diff` por sí mismo), entre tu área de ensayo y tu última confirmación o commit (`git diff --staged`), o entre dos confirmaciones (`git diff master branchB`). -En primer lugar, vemos el uso básico de `git diff` en <<_git_diff_staged>>, donde mostramos cómo ver que cambios tienen seguimiento y cuáles no tienen seguimiento aún. +En primer lugar, vemos el uso básico de `git diff` en <>, donde mostramos cómo ver que cambios tienen seguimiento y cuáles no tienen seguimiento aún. -Lo usamos para buscar posibles problemas con espacios en blanco antes de confirmar con la opción `--check` en <<_commit_guidelines>>. +Lo usamos para buscar posibles problemas con espacios en blanco antes de confirmar con la opción `--check` en <>. -Vemos cómo comprobar las diferencias entre ramas de manera más eficaz con la sintaxis `git diff A...B` en <<_what_is_introduced>>. +Vemos cómo comprobar las diferencias entre ramas de manera más eficaz con la sintaxis `git diff A...B` en <>. -Lo usamos para filtrar diferencias en espacios en blanco con `-w` y como comparar diferentes etapas de archivos en conflicto con `--theirs`, `--ours` y `--base` en <<_advanced_merging>>. +Lo usamos para filtrar diferencias en espacios en blanco con `-w` y como comparar diferentes etapas de archivos en conflicto con `--theirs`, `--ours` y `--base` en <>. -Finalmente, lo usamos para realmente comparar cambios en submódulos con `--submodule` en <<_starting_submodules>>. +Finalmente, lo usamos para realmente comparar cambios en submódulos con `--submodule` en <>. ==== git difftool @@ -116,25 +117,25 @@ Mencionamos sólo brevemente esto en <<_git_diff_staged >>. El comando `git commit` toma todos los contenidos de los archivos a los que se les realiza el seguimiento con `git add` y registra una nueva instantánea permanente en la base de datos y luego avanza el puntero de la rama en la rama actual. -En primer lugar, cubrimos los fundamentos en <<_committing_changes>>. Allí también mostramos cómo utilizar el indicador `-a` para saltarse el paso `git add` en los flujos de trabajo diarios y cómo utilizar el indicador `-m` para pasar un mensaje de confirmación en la línea de comandos en lugar de lanzar un editor. +En primer lugar, cubrimos los fundamentos en <>. Allí también mostramos cómo utilizar el indicador `-a` para saltarse el paso `git add` en los flujos de trabajo diarios y cómo utilizar el indicador `-m` para pasar un mensaje de confirmación en la línea de comandos en lugar de lanzar un editor. -En <<_undoing>> cubrimos el uso de la opción `--amend` para deshacer el commit más reciente. +En <> cubrimos el uso de la opción `--amend` para deshacer el commit más reciente. -En <<_git_branches_overview>>, entramos en mucho mayor detalle en lo que `git commit` hace y por qué lo hace así. +En <>, entramos en mucho mayor detalle en lo que `git commit` hace y por qué lo hace así. -Consideramos como firmar criptográficamente commits con el indicador `-S` en <<_signing_commits>>. +Consideramos como firmar criptográficamente commits con el indicador `-S` en <>. -Finalmente, echamos un vistazo a lo que el comando `git commit` hace en segundo plano y cómo se implementa realmente en <<_git_commit_objects>>. +Finalmente, echamos un vistazo a lo que el comando `git commit` hace en segundo plano y cómo se implementa realmente en <>. ==== git reset El comando `git reset` se utiliza sobre todo para deshacer las cosas, como posiblemente puedes deducir por el verbo. Se mueve alrededor del puntero `HEAD` y opcionalmente cambia el `index` o área de ensayo y también puede cambiar opcionalmente el directorio de trabajo si se utiliza `--hard`. Esta última opción hace posible que este comando pueda perder tu trabajo si se usa incorrectamente, por lo que asegúrese de entenderlo antes de usarlo. -En primer lugar, cubrimos efectivamente el uso más simple de `git reset` en <<_unstaging>>, donde lo usamos para dejar de hacer seguimiento (unstage) de un archivo sobre el que habíamos ejecutado `git add`. +En primer lugar, cubrimos efectivamente el uso más simple de `git reset` en <>, donde lo usamos para dejar de hacer seguimiento (unstage) de un archivo sobre el que habíamos ejecutado `git add`. -A continuación, lo cubrimos con bastante detalle en <<_git_reset>>, que está completamente dedicado a la explicación de este comando. +A continuación, lo cubrimos con bastante detalle en <>, que está completamente dedicado a la explicación de este comando. -Utilizamos `git reset --hard` para abortar una fusión en <<_abort_merge>>, donde también usamos `git merge --abort`, el cual es una especie de envoltorio para el comando `git reset`. +Utilizamos `git reset --hard` para abortar una fusión en <>, donde también usamos `git merge --abort`, el cual es una especie de envoltorio para el comando `git reset`. ==== git rm @@ -142,19 +143,19 @@ El comando `git rm` se utiliza para eliminar archivos del área de ensayo y el d Cubrimos el comando `git rm` con cierto detalle en <<_removing_files >>, incluyendo la eliminación de archivos de forma recursiva y sólo la eliminación de archivos desde el área de ensayo, pero dejándolos en el directorio de trabajo con `--cached`. -El único otro uso diferente de `git rm` en el libro está en <<_removing_objects>>, donde utilizamos brevemente y explicamos el `--ignore-unmatch` al ejecutar `git filter-branch`, el cual simplemente hace que no salga un error cuando el archivo que estamos tratando de eliminar no existe. Esto puede ser útil para fines de scripting. +El único otro uso diferente de `git rm` en el libro está en <>, donde utilizamos brevemente y explicamos el `--ignore-unmatch` al ejecutar `git filter-branch`, el cual simplemente hace que no salga un error cuando el archivo que estamos tratando de eliminar no existe. Esto puede ser útil para fines de scripting. ==== git mv El comando `git mv` es un comando de conveniencia para mover un archivo y luego ejecutar `git add` en el nuevo archivo y `git rm` en el archivo antiguo. -Sólo mencionamos brevemente este comando en <<_git_mv>>. +Sólo mencionamos brevemente este comando en <>. ==== git clean El comando `git clean` se utiliza para eliminar archivos no deseados de tu directorio de trabajo. Esto podría incluir la eliminación de artefactos de construcción temporal o la fusión de archivos en conflicto. -Cubrimos muchas de las opciones y escenarios en los que es posible usar el comando clean en <<_git_clean>>. +Cubrimos muchas de las opciones y escenarios en los que es posible usar el comando clean en <>. === Ramificar y Fusionar @@ -165,45 +166,45 @@ Hay sólo un puñado de comandos que implementan la mayor parte de la funcionali El comando `git branch` es en realidad una especie de herramienta de gestión de ramas. Puede listar las ramas que tienes, crear una nueva rama, eliminar ramas y cambiar el nombre de las ramas. -La mayor parte de <<_git_branching>> está dedicada al comando `branch` y es utilizado a lo largo de todo el capítulo. En primer lugar, lo introducimos en <<_create_new_branch>> y examinamos la mayor parte de sus otras características (listar y borrar) en <<_branch_management>>. +La mayor parte de <> está dedicada al comando `branch` y es utilizado a lo largo de todo el capítulo. En primer lugar, lo introducimos en <> y examinamos la mayor parte de sus otras características (listar y borrar) en <>. -En <<_tracking_branches>> usamos la opción `git branch -u` para establecer una rama de seguimiento. +En <> usamos la opción `git branch -u` para establecer una rama de seguimiento. -Finalmente, examinamos algo de lo que hace en segundo plano en <<_git_refs>>. +Finalmente, examinamos algo de lo que hace en segundo plano en <>. ==== git checkout El comando `git checkout` se usa para cambiar de rama y revisar el contenido de tu directorio de trabajo. -En primer lugar, encontramos el comando en <<_switching_branches>> junto con el comando `git branch`. +En primer lugar, encontramos el comando en <> junto con el comando `git branch`. -Vemos cómo usarlo para iniciar el seguimiento de ramas con el indicador `--track` en <<_tracking_branches>>. +Vemos cómo usarlo para iniciar el seguimiento de ramas con el indicador `--track` en <>. -Lo usamos para reintroducir los conflictos de archivos con `--conflict=diff3` en <<_checking_out_conflicts>>. +Lo usamos para reintroducir los conflictos de archivos con `--conflict=diff3` en <>. -Entramos en más detalle sobre su relación con `git reset` en <<_git_reset>>. +Entramos en más detalle sobre su relación con `git reset` en <>. -Finalmente, examinamos algún detalle de implementación en <<_the_head>>. +Finalmente, examinamos algún detalle de implementación en <>. ==== git merge La herramienta `git merge` se utiliza para fusionar uno o más ramas dentro de la rama que tienes activa. A continuación avanzará la rama actual al resultado de la fusión. -El comando `git merge` fue introducido por primera en <<_basic_branching>>. A pesar de que se utiliza en diversos lugares en el libro, hay muy pocas variaciones del comando `merge` -- en general, sólo `git merge ` con el nombre de la rama individual que se desea combinar. +El comando `git merge` fue introducido por primera en <>. A pesar de que se utiliza en diversos lugares en el libro, hay muy pocas variaciones del comando `merge` -- en general, sólo `git merge ` con el nombre de la rama individual que se desea combinar. -Cubrimos cómo hacer una fusión aplastada (squashed merge) (donde Git fusiona el trabajo, pero finge como si fuera simplemente un nuevo commit sin registrar la historia de la rama que se está fusionando) al final de <<_public_project>>. +Cubrimos cómo hacer una fusión aplastada (squashed merge) (donde Git fusiona el trabajo, pero finge como si fuera simplemente un nuevo commit sin registrar la historia de la rama que se está fusionando) al final de <>. -Repasamos mucho sobre el proceso de fusión y dirección, incluyendo el comando `-Xignore-all-whitespace` y el indicador `--abort` para abortar un problema de fusión en <<_advanced_merging>>. +Repasamos mucho sobre el proceso de fusión y dirección, incluyendo el comando `-Xignore-all-whitespace` y el indicador `--abort` para abortar un problema de fusión en <>. -Aprendimos cómo verificar las firmas antes de la fusión si tu proyecto está usando fimas GPG en <<_signing_commits>>. +Aprendimos cómo verificar las firmas antes de la fusión si tu proyecto está usando fimas GPG en <>. -Finalmente, aprendimos sobre la fusión de subárboles en <<_subtree_merge>>. +Finalmente, aprendimos sobre la fusión de subárboles en <>. ==== git mergetool El comando `git mergetool` simplemente lanza un ayudante de fusión externo en caso de tener problemas con una combinación en Git. -Lo mencionamos rápidamente en <<_basic_merge_conflicts>> y entramos en detalle sobre cómo implementar tu propia herramienta de fusión externa en <<_external_merge_tools>>. +Lo mencionamos rápidamente en <> y entramos en detalle sobre cómo implementar tu propia herramienta de fusión externa en <>. ==== git log @@ -211,33 +212,33 @@ El comando `git log` se utiliza para mostrar la historia registrada alcanzable d Este comando se utiliza en casi todos los capítulos del libro para mostrar la historia de un proyecto. -Introducimos el comando y lo cubrimos con cierta profundidad en <<_viewing_history>>. Allí vemos las opciones `-p` y `--stat` para tener una idea de lo que fue introducido en cada commit y las opciones `--pretty` y `--oneline` para ver el historial de forma más concisa, junto con unas simples opciones de filtrado de fecha y autor. +Introducimos el comando y lo cubrimos con cierta profundidad en <>. Allí vemos las opciones `-p` y `--stat` para tener una idea de lo que fue introducido en cada commit y las opciones `--pretty` y `--oneline` para ver el historial de forma más concisa, junto con unas simples opciones de filtrado de fecha y autor. -En <<_create_new_branch>> lo utilizamos con la opción `--decorate` para visualizar fácilmente donde se encuentran nuestros punteros de rama y también utilizamos la opción `--graph` para ver la apariencia de las historias divergentes. +En <> lo utilizamos con la opción `--decorate` para visualizar fácilmente donde se encuentran nuestros punteros de rama y también utilizamos la opción `--graph` para ver la apariencia de las historias divergentes. -En <<_private_team>> y <<_commit_ranges>> cubrimos la sintaxis `branchA..branchB` al usar el comando `git log` para ver que commits son únicos a una rama en relación a otra rama. En <<_commit_ranges>> repasamos esto bastante extensamente. +En <> y <> cubrimos la sintaxis `branchA..branchB` al usar el comando `git log` para ver que commits son únicos a una rama en relación a otra rama. En <> repasamos esto bastante extensamente. -En <<_merge_log>> y <<_triple_dot>> cubrimos el uso del formato `branchA...branchB` y la sintaxis `--left-right` para ver que está en una rama o en la otra pero no en ambas. En <<_merge_log>> también vemos como utilizar la opción `--merge` para ayudarnos con la depuración de conflictos de fusión así como el uso de la opción `--cc` para ver conflictos de fusión en tu historia. +En <> y <> cubrimos el uso del formato `branchA...branchB` y la sintaxis `--left-right` para ver que está en una rama o en la otra pero no en ambas. En <> también vemos como utilizar la opción `--merge` para ayudarnos con la depuración de conflictos de fusión así como el uso de la opción `--cc` para ver conflictos de fusión en tu historia. -En <<_git_reflog>> usamos la opción `-g` para ver el reflog de Git a través de esta herramienta en lugar de hacer un recorrido de la rama. +En <> usamos la opción `-g` para ver el reflog de Git a través de esta herramienta en lugar de hacer un recorrido de la rama. -En <<_searching>> vemos el uso de las opciones `-S` y `-L` para hacer búsquedas bastante sofisticados de algo que sucedió históricamente en el código como ver la historia de una función. +En <> vemos el uso de las opciones `-S` y `-L` para hacer búsquedas bastante sofisticados de algo que sucedió históricamente en el código como ver la historia de una función. -En <<_signing_commits>> vemos como usar `--show-signature` para añadir una cadena de texto de validación a cada commit en la salida de `git log` basado en si fue válidadmente firmado o no. +En <> vemos como usar `--show-signature` para añadir una cadena de texto de validación a cada commit en la salida de `git log` basado en si fue válidadmente firmado o no. ==== git stash El comando `git stash` se utiliza para almacenar temporalmente el trabajo no confirmado con el fin de limpiar el directorio de trabajo sin tener que confirmar el trabajo no acabado en una rama. -Básicamente esto es enteramente cubierto en <<_git_stashing>>. +Básicamente esto es enteramente cubierto en <>. ==== git tag El comando `git tag` se utiliza para dar un marcador permanente a un punto específico en el historial del código fuente. Generalmente esto se utiliza para cosas como las liberaciones (releases). -Este comando se introduce y se trata en detalle en <<_git_tagging>> y lo usamos en la práctica en <<_tagging_releases>>. +Este comando se introduce y se trata en detalle en <> y lo usamos en la práctica en <>. -También cubrimos cómo crear una etiqueta con firma GPG tag con el indicador `-s` y verificamos uno con el indicador `-v` en <<_signing>>. +También cubrimos cómo crear una etiqueta con firma GPG tag con el indicador `-s` y verificamos uno con el indicador `-v` en <>. === Compartir y Actualizar Proyectos @@ -248,47 +249,47 @@ No son muy numerosos los comandos de Git que acceden a la red, casi todos los co El comando `git fetch` comunica con un repositorio remoto y obtiene toda la información que se encuentra en ese repositorio que no está en el tuyo actual y la almacena en tu base de datos local. -En primer lugar, observamos este comando en <<_fetching_and_pulling>> y seguimos viendo ejemplos de su uso en <<_remote_branches>>. +En primer lugar, observamos este comando en <> y seguimos viendo ejemplos de su uso en <>. -También lo usamos en varios de los ejemplos en <<_contributing_project>>. +También lo usamos en varios de los ejemplos en <>. -Lo usamos para buscar una única referencia específica que se encuentra fuera del espacio por defecto en <<_pr_refs>> y vemos cómo buscar en una agrupación en <<_bundling>>. +Lo usamos para buscar una única referencia específica que se encuentra fuera del espacio por defecto en <> y vemos cómo buscar en una agrupación en <>. -Configuramos refspecs altamente personalizadas con el fin de hacer que `git fetch` haga algo un poco diferente de lo predeterminado en <<_refspec>>. +Configuramos refspecs altamente personalizadas con el fin de hacer que `git fetch` haga algo un poco diferente de lo predeterminado en <>. ==== git pull El comando `git pull` es básicamente una combinación de los comandos `git fetch` y `git merge`, donde Git descargará desde el repositorio remoto especificado y a continuación, de forma inmediata intentará combinarlo en la rama en la que te encuentres. -Se introduce rápidamente en <<_fetching_and_pulling>> y mostramos la forma de ver lo que se fusionará si se ejecuta en <<_inspecting_remote>>. +Se introduce rápidamente en <> y mostramos la forma de ver lo que se fusionará si se ejecuta en <>. -También vemos cómo usarlo para ayudar con dificultades de rebase en <<_rebase_rebase>>. +También vemos cómo usarlo para ayudar con dificultades de rebase en <>. -Mostramos cómo usarlo con una URL para obtener los cambios de forma de una sola vez en <<_checking_out_remotes>>. +Mostramos cómo usarlo con una URL para obtener los cambios de forma de una sola vez en <>. -Por último, mencionamos muy rápidamente que se puede utilizar la opción `--verify-signatures` con el fin de verificar qué commits que estás descargando han sido firmados con GPG en <<<_signing_commits>>. +Por último, mencionamos muy rápidamente que se puede utilizar la opción `--verify-signatures` con el fin de verificar qué commits que estás descargando han sido firmados con GPG en <<>. ==== git push El comando `git push` se utiliza para comunicar con otro repositorio, calcular lo que tu base de datos local tiene que la remota no tiene, y luego subir (push) la diferencia al otro repositorio. Se requiere acceso de escritura al otro repositorio y por tanto normalmente se autentica de alguna manera. -En primer lugar, observamos el comando `git push` en <<_pushing_remotes>>. Aquí cubrimos los fundamentos de subir una rama a un repositorio remoto. En <<_pushing_branches>> profundizamos un poco más en la subida de ramas específicas y en <<_tracking_branches>> vemos cómo configurar el seguimiento de ramas a las que subir automáticamente. En <<_delete_branches>> utilizamos el indicador `--delete` para eliminar una rama en el servidor con `git push`. +En primer lugar, observamos el comando `git push` en <>. Aquí cubrimos los fundamentos de subir una rama a un repositorio remoto. En <> profundizamos un poco más en la subida de ramas específicas y en <> vemos cómo configurar el seguimiento de ramas a las que subir automáticamente. En <> utilizamos el indicador `--delete` para eliminar una rama en el servidor con `git push`. -A lo largo de <<_contributing_project>> vemos varios ejemplos de uso de `git push` para compartir trabajo en ramas de múltiples repositorios remotos. +A lo largo de <> vemos varios ejemplos de uso de `git push` para compartir trabajo en ramas de múltiples repositorios remotos. -Vemos cómo usarlo para compartir las etiquetas que has creado con la opción `--tags` en <<_sharing_tags>>. +Vemos cómo usarlo para compartir las etiquetas que has creado con la opción `--tags` en <>. -En <<_publishing_submodules>> utilizamos la opción `--recurse-submodules` para comprobar que todo nuestro trabajo en submódulos se ha publicado antes de subir el superproyecto, lo cual puede ser muy útil cuando se utilizan submódulos. +En <> utilizamos la opción `--recurse-submodules` para comprobar que todo nuestro trabajo en submódulos se ha publicado antes de subir el superproyecto, lo cual puede ser muy útil cuando se utilizan submódulos. -En <<_other_client_hooks>> hablamos brevemente sobre el gancho `pre-push`, que es un script que podemos establecer para que se ejecute antes de que una subida se complete para verificar qué se debe permitir subir. +En <> hablamos brevemente sobre el gancho `pre-push`, que es un script que podemos establecer para que se ejecute antes de que una subida se complete para verificar qué se debe permitir subir. -Por último, en <<_pushing_refspecs>> echamos un vistazo a la subida con un refspec completo en lugar de los atajos generales que se utilizan normalmente. Esto puede ayudar a ser muy específico acerca de qué trabajo se desea compartir. +Por último, en <> echamos un vistazo a la subida con un refspec completo en lugar de los atajos generales que se utilizan normalmente. Esto puede ayudar a ser muy específico acerca de qué trabajo se desea compartir. ==== git remote El comando `git remote` es una herramienta de gestión para el registro de repositorios remotos. Esto te permite guardar largas direcciones URL como cortos manejadores (handles), tales como ''origin'', para que no tengas que escribir las URL todo el tiempo. Puedes tener varios de estos y el comando `git remote` se utiliza para añadir, modificar y borrarlos. -Este comando se trata en detalle en <<_remote_repos>>, incluyendo listar, añadir, eliminar y cambiar el nombre de ellos. +Este comando se trata en detalle en <>, incluyendo listar, añadir, eliminar y cambiar el nombre de ellos. Se utiliza en casi todos los capítulos subsiguientes en el libro también, pero siempre en la formato estándar `git remote add `. @@ -296,14 +297,14 @@ Se utiliza en casi todos los capítulos subsiguientes en el libro también, pero El comando `git archive` se utiliza para crear un archivo empaquetado de una instantánea específica del proyecto. -Usamos `git archive` para crear un tarball de un proyecto para su compartición en <<_preparing_release>>. +Usamos `git archive` para crear un tarball de un proyecto para su compartición en <>. ==== git submodule El comando `git submodule` se utiliza para gestionar repositorios externos dentro de repositorios normales. Esto podría ser por bibliotecas u otros tipos de recursos compartidos. El comando `submodule` tiene varios sub-commandos (`add`, `update`, `sync`, etc) para la gestión de estos recursos. -Este comando es sólo mencionado y cubierto enteramente en <<_git_submodules>>. +Este comando es sólo mencionado y cubierto enteramente en <>. === Inspección y Comparación @@ -312,23 +313,23 @@ Este comando es sólo mencionado y cubierto enteramente en <<_git_submodules>>. El comando `git show` puede mostrar un objeto Git de una manera simple y legible por humanos. Normalmente se usaría esto para mostrar la información sobre una etiqueta o un commit. -Primero lo usamos para mostrar información de etiqueta con anotaciones en <<_annotated_tags>>. +Primero lo usamos para mostrar información de etiqueta con anotaciones en <>. -Más tarde lo usamos bastante en <<_revision_selection>> para mostrar las confirmaciones que nuestras diversas selecciones de revisión resuelven. +Más tarde lo usamos bastante en <> para mostrar las confirmaciones que nuestras diversas selecciones de revisión resuelven. -Una de las cosas más interesantes que ver con `git show` está en <<_manual_remerge>> para extraer contenidos de un archivo específico de diversas etapas durante un conflicto de fusión. +Una de las cosas más interesantes que ver con `git show` está en <> para extraer contenidos de un archivo específico de diversas etapas durante un conflicto de fusión. ==== git shortlog El comando `git shortlog` se utiliza para resumir la salida de `git log`. Toma muchas de las mismas opciones que el comando `git log` pero, en lugar de enumerar todos las commits, presentará un resumen de los commits agrupados por autor. -Mostramos cómo usarlo para crear un buen registro de cambios en <<_the_shortlog>>. +Mostramos cómo usarlo para crear un buen registro de cambios en <>. ==== git describe El comando `git describe` se utiliza para tomar cualquier cosa que remite a un commit y producir una cadena de texto que es de alguna manera legible por humanos y no va a cambiar. Es una manera de obtener una descripción de un commit que es tan inequívoca como el SHA-1 del commit, pero más comprensible. -Utilizamos `git describe` en <<_build_number>> y <<_preparing_release>> para obtener una cadena de texto para nombrar nuestro archivo de liberación. +Utilizamos `git describe` en <> y <> para obtener una cadena de texto para nombrar nuestro archivo de liberación. === Depuración @@ -339,19 +340,19 @@ Git tiene un par de comandos que se utilizan para ayudar a depurar un problema e La herramienta `git bisect` es una herramienta de depuración increíblemente útil, utilizada para encontrar qué commit específico fue el primero en introducir un bug o problema, haciendo una búsqueda binaria automática. -Está completamente cubierto de <<_binary_search>> y sólo se menciona en esa sección. +Está completamente cubierto de <> y sólo se menciona en esa sección. ==== git blame El comando `git blame` toma nota de las líneas de cualquier archivo con cual commit fue el último en introducir un cambio en cada línea del archivo y qué persona fue autor de ese commit. Esto es muy útil con el fin de encontrar a la persona para pedir más información sobre una sección específica de tu código. -Se cubre en <<_file_annotation>> y sólo se menciona en esa sección. +Se cubre en <> y sólo se menciona en esa sección. ==== git grep El comando `git grep` puede ayudarte a encontrar cualquier cadena o expresión regular en cualquiera de los archivos en tu código fuente, incluyendo versiones más antiguas de tu proyecto. -Está cubierto en <<_git_grep>> y sólo se menciona en esa sección. +Está cubierto en <> y sólo se menciona en esa sección. === Parcheo @@ -361,25 +362,25 @@ Unos comandos de Git se centran en el concepto de interpretar los commits en té El comando `git cherry-pick` se utiliza para tomar el cambio introducido en un único commit de Git y tratar de volver a introducirlo como un nuevo commit en la rama donde estás actualmente. Esto puede ser útil para escoger solamente uno o dos commits de una rama individual en lugar de fusionar la rama que contiene todos los cambios. -Esto se describe y se muestra en <<_rebase_cherry_pick>>. +Esto se describe y se muestra en <>. ==== git rebase El comando `git rebase` es básicamente un `cherry-pick` automatizado. Determina una serie de commits y luego los escoge uno a uno en el mismo orden en otro lugar. -El rebasing se cubre en detalle en <<_rebasing>>, inclusive cubriendo las incidencias de colaboración involucradas con el rebasing de ramas que ya son públicas. +El rebasing se cubre en detalle en <>, inclusive cubriendo las incidencias de colaboración involucradas con el rebasing de ramas que ya son públicas. -Lo usamos en la práctica durante un ejemplo de dividir la historia en dos repositorios separados en <<_replace>>, utilizando el indicador `--onto` también. +Lo usamos en la práctica durante un ejemplo de dividir la historia en dos repositorios separados en <>, utilizando el indicador `--onto` también. -Experimentamos la ejecución de un conflicto de fusión durante el rebasing en <<_rerere>>. +Experimentamos la ejecución de un conflicto de fusión durante el rebasing en <>. -También lo usamos en un modo de secuencias de comandos interactiva con la opción `-i` en <<_changing_multiple>>. +También lo usamos en un modo de secuencias de comandos interactiva con la opción `-i` en <>. ==== git revert El comando `git revert` es esencialmente un `git cherry-pick` inverso. Crea un nuevo commit que se aplica exactamente al contrario del cambio introducido en el commit que estás apuntando, esencialmente deshaciendo o revertiéndolo. -Utilizamos éste en <<_reverse_commit>> para deshacer un commit de fusión. +Utilizamos éste en <> para deshacer un commit de fusión. === Correo Electrónico @@ -390,35 +391,35 @@ Muchos proyectos Git, incluido el propio Git, se mantienen totalmente a través El comando `git apply` aplica un parche creado con `git diff` o incluso el comando diff de GNU. Es similar a lo que el comando `patch` podría hacer con algunas pequeñas diferencias. -Mostramos a usarlo y las circunstancias en las que puedes hacerlo en <<_patches_from_email>>. +Mostramos a usarlo y las circunstancias en las que puedes hacerlo en <>. ==== git am El comando `git am` se utiliza para aplicar parches desde una bandeja de entrada de correo electrónico, en concreto una que tenga formato mbox. Esto es útil para recibir parches por correo electrónico y aplicarlos a tu proyecto fácilmente. -Cubrimos el uso y flujo de trabajo en torno a `git am` en <<_git_am>> incluyendo el uso de las opciones `--resolved`, `-i` y `-3`. +Cubrimos el uso y flujo de trabajo en torno a `git am` en <> incluyendo el uso de las opciones `--resolved`, `-i` y `-3`. -Hay también una serie de ganchos (hooks) que se pueden utilizar para ayudar con el flujo de trabajo en torno a `git am` y todos ellos se cubren en <<_email_hooks>>. +Hay también una serie de ganchos (hooks) que se pueden utilizar para ayudar con el flujo de trabajo en torno a `git am` y todos ellos se cubren en <>. -También lo utilizamos para aplicar parcheado con formato de cambios de GitHub Pull Request en <<_email_notifications>>. +También lo utilizamos para aplicar parcheado con formato de cambios de GitHub Pull Request en <>. ==== git format-patch El comando `git format-patch` se utiliza para generar una serie de parches en formato mbox que puedes utilizar para enviar a una lista de correo con el formato correcto. -Examinamos un ejemplo de contribución a un proyecto mediante el uso de la herramienta `git format-patch` en <<_project_over_email>>. +Examinamos un ejemplo de contribución a un proyecto mediante el uso de la herramienta `git format-patch` en <>. ==== git send-email El comando `git send-email` se utiliza para enviar parches que son generados con `git format-patch` por correo electrónico. -Examinamos un ejemplo de contribución a un proyecto mediante el envío de parches con la herramienta `git send-email` en <<_project_over_email>>. +Examinamos un ejemplo de contribución a un proyecto mediante el envío de parches con la herramienta `git send-email` en <>. ==== git request-pull El comando `git request-pull` se utiliza simplemente para generar un cuerpo de mensaje de ejemplo para enviar por correo electrónico a alguien. Si tienes una rama en un servidor público y quieres que alguien sepa cómo integrar esos cambios sin enviar los parches a través de correo electrónico, puedes ejecutar este comando y enviar el resultado a la persona que deseas que reviva (pull) los cambios. -Mostramos como usar `git request-pull` para generar un mensaje pull en <<_public_project>>. +Mostramos como usar `git request-pull` para generar un mensaje pull en <>. === Sistemas Externos @@ -431,13 +432,13 @@ El comando `git svn` se utiliza para comunicarnos como cliente con el sistema de Esto significa que puedes usar Git para obtener desde y enviar a un servidor Subversion. -Este comando es cubierto en profundidad en <<_git_svn>>. +Este comando es cubierto en profundidad en <>. ==== git fast-import Para otros sistemas de control de versiones o importación desde prácticamente cualquier formato, puedes usar `git fast-import` para convertir rápidamente el otro formato a algo que Git pueda registrar fácilmente. -Este comando es cubierto en profundidad en <<_custom_importer>>. +Este comando es cubierto en profundidad en <>. === Administración @@ -448,39 +449,39 @@ Si estás administrando un repositorio Git o necesitas arreglar algo a lo grande El comando `git gc` ejecuta la ''recogida de basura'' en tu repositorio, eliminando los archivos innecesarios en tu base de datos y empaquetando los archivos restantes en un formato más eficiente. -Este comando se ejecuta normalmente en segundo plano, aunque se puede ejecutar manualmente si se desea. Repasamos algunos ejemplos de esto en <<_git_gc>>. +Este comando se ejecuta normalmente en segundo plano, aunque se puede ejecutar manualmente si se desea. Repasamos algunos ejemplos de esto en <>. ==== git fsck El comando `git fsck` se utiliza para comprobar la base de datos interna en busca de problemas o inconsistencias. -Sólo lo utilizamos una vez de forma rápida en <<_data_recovery>> para buscar objetos colgantes. +Sólo lo utilizamos una vez de forma rápida en <> para buscar objetos colgantes. ==== git reflog El comando `git reflog` examina un registro de donde han estado todas las cabezas de tus ramas mientras trabajas para encontrar commits que puedes haber perdido a través de la reescritura de historias. -Cubrimos este comando principalmente en <<_git_reflog>>, donde mostramos el uso normal y cómo usar `git log -g` para ver la misma información con salida de `git log`. +Cubrimos este comando principalmente en <>, donde mostramos el uso normal y cómo usar `git log -g` para ver la misma información con salida de `git log`. -También repasamos un ejemplo práctico de la recuperación de tal rama perdida en <<_data_recovery>>. +También repasamos un ejemplo práctico de la recuperación de tal rama perdida en <>. ==== git filter-branch El comando `git filter-branch` se utiliza para reescribir un montón de commits de acuerdo a ciertos patrones, como la eliminación de un archivo de todas partes o el filtrado de todo el repositorio a un solo subdirectorio para sacar un proyecto. -En <<_removing_file_every_commit>> explicamos el comando y exploramos varias opciones diferentes, tales como `--commit-filter`, `--subdirectory-filter` y `--tree-filter`. +En <> explicamos el comando y exploramos varias opciones diferentes, tales como `--commit-filter`, `--subdirectory-filter` y `--tree-filter`. -En <<_git_p4>> y <<_git_tfs>> lo usamos para arreglar repositorios externos importados. +En <> y <> lo usamos para arreglar repositorios externos importados. === Comandos de Fontanería También había un buen número de comandos de fontanería de bajo nivel que nos encontramos en el libro. -El primero que encontramos es `ls-remote` en <<_pr_refs>>, que usamos para mirar las referencias en bruto en el servidor. +El primero que encontramos es `ls-remote` en <>, que usamos para mirar las referencias en bruto en el servidor. -Usamos `ls-files` en <<_manual_remerge>>, <<_rerere>> y <<_the_index>> para echar un vistazo más en bruto a la apariencia del área de preparación. +Usamos `ls-files` en <>, <> y <> para echar un vistazo más en bruto a la apariencia del área de preparación. -También mencionamos `rev-parse` en <<_branch_references>> para tomar casi cualquier cadena y convertirla en un objeto SHA1. +También mencionamos `rev-parse` en <> para tomar casi cualquier cadena y convertirla en un objeto SHA1. -Sin embargo, la mayoría de los comandos de bajo nivel de fontanería que cubrimos están en <<_git_internals>>, que es más o menos en lo que el capítulo se centra. Tratamos de evitar el uso de ellos en la mayor parte del resto del libro. +Sin embargo, la mayoría de los comandos de bajo nivel de fontanería que cubrimos están en <>, que es más o menos en lo que el capítulo se centra. Tratamos de evitar el uso de ellos en la mayor parte del resto del libro. diff --git a/Gemfile b/Gemfile index d7bd9122..c29231e0 100644 --- a/Gemfile +++ b/Gemfile @@ -1,16 +1,21 @@ source 'https://rubygems.org' gem 'rake' -gem 'asciidoctor', '1.5.0' +gem 'asciidoctor', '1.5.6.1' gem 'json' gem 'awesome_print' -gem 'asciidoctor-epub3', '1.0.0.alpha.2' -gem 'asciidoctor-pdf', '1.5.0.alpha.5' +gem 'asciidoctor-epub3', :git => 'https://github.com/asciidoctor/asciidoctor-epub3' +gem 'asciidoctor-pdf', '1.5.0.alpha.16' +gem 'asciidoctor-pdf-cjk', '~> 0.1.3' +gem 'asciidoctor-pdf-cjk-kai_gen_gothic', '~> 0.1.1' gem 'coderay' gem 'pygments.rb' gem 'thread_safe' -gem 'epubcheck' +gem 'epubcheck-ruby' gem 'kindlegen' + +gem 'octokit' +gem 'github_changelog_generator', github: 'Furtif/github-changelog-generator' diff --git a/Gemfile.lock b/Gemfile.lock index 72029ced..4a7abcae 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,74 +1,139 @@ +GIT + remote: git://github.com/Furtif/github-changelog-generator.git + revision: efa960ce1c189cd999753713fcfbfb6b7514ab45 + specs: + github_changelog_generator (1.14.3) + activesupport + faraday-http-cache + multi_json + octokit (~> 4.6) + rainbow (>= 2.2.1) + rake (>= 10.0) + retriable (~> 3.0) + +GIT + remote: https://github.com/asciidoctor/asciidoctor-epub3 + revision: ba930925a1df617312f986c7599b5162473b716f + specs: + asciidoctor-epub3 (1.5.0.alpha.9.dev) + asciidoctor (~> 1.5.0) + gepub (~> 0.6.9.2) + thread_safe (~> 0.3.6) + GEM remote: https://rubygems.org/ specs: - Ascii85 (1.0.2) + Ascii85 (1.0.3) + activesupport (5.1.5) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (~> 0.7) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) afm (0.2.2) - asciidoctor (1.5.0) - asciidoctor-epub3 (1.0.0.alpha.2) - asciidoctor (>= 1.5.0, < 1.6.0) - gepub (~> 0.6.9.2) - thread_safe (~> 0.3.4) - asciidoctor-pdf (1.5.0.alpha.5) - asciidoctor (~> 1.5.0) - prawn (= 1.2.1) - prawn-svg (= 0.16.0) - prawn-table (= 0.1.1) - prawn-templates (= 0.0.3) + asciidoctor (1.5.6.1) + asciidoctor-pdf (1.5.0.alpha.16) + asciidoctor (>= 1.5.0) + prawn (>= 1.3.0, < 2.3.0) + prawn-icon (= 1.3.0) + prawn-svg (>= 0.21.0, < 0.28.0) + prawn-table (= 0.2.2) + prawn-templates (>= 0.0.3, <= 0.1.1) + safe_yaml (~> 1.0.4) + thread_safe (~> 0.3.6) treetop (= 1.5.3) - awesome_print (1.2.0) - coderay (1.1.0) - epubcheck (3.0.1) + asciidoctor-pdf-cjk (0.1.3) + asciidoctor-pdf (~> 1.5.0.alpha.8) + asciidoctor-pdf-cjk-kai_gen_gothic (0.1.1) + asciidoctor-pdf-cjk (~> 0.1.2) + awesome_print (1.8.0) + coderay (1.1.2) + concurrent-ruby (1.0.5) + css_parser (1.6.0) + addressable + epubcheck-ruby (4.0.2.1) + faraday (0.14.0) + multipart-post (>= 1.2, < 3) + faraday-http-cache (2.0.0) + faraday (~> 0.8) gepub (0.6.9.2) nokogiri (~> 1.6.1) rubyzip (>= 1.1.1) - hashery (2.1.1) - json (1.8.1) - kindlegen (2.9.4) - mini_portile (0.6.0) - nokogiri (1.6.3.1) - mini_portile (= 0.6.0) - pdf-core (0.2.5) - pdf-reader (1.3.3) + hashery (2.1.2) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + json (2.1.0) + kindlegen (3.0.3) + rake + rubyzip + mini_portile2 (2.1.0) + minitest (5.11.3) + multi_json (1.13.1) + multipart-post (2.0.0) + nokogiri (1.6.8.1) + mini_portile2 (~> 2.1.0) + octokit (4.8.0) + sawyer (~> 0.8.0, >= 0.5.3) + pdf-core (0.7.0) + pdf-reader (2.1.0) Ascii85 (~> 1.0.0) - afm (~> 0.2.0) + afm (~> 0.2.1) hashery (~> 2.0) ruby-rc4 ttfunk polyglot (0.3.5) - posix-spawn (0.3.9) - prawn (1.2.1) - pdf-core (~> 0.2.5) - ttfunk (~> 1.2.0) - prawn-svg (0.16.0) - prawn (>= 0.8.4) - prawn-table (0.1.1) - prawn-templates (0.0.3) - pdf-reader (~> 1.3) - prawn (>= 0.15.0) - pygments.rb (0.6.0) - posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.1.0) - rake (10.3.2) + prawn (2.2.2) + pdf-core (~> 0.7.0) + ttfunk (~> 1.5) + prawn-icon (1.3.0) + prawn (>= 1.1.0, < 3.0.0) + prawn-svg (0.27.1) + css_parser (~> 1.3) + prawn (>= 0.11.1, < 3) + prawn-table (0.2.2) + prawn (>= 1.3.0, < 3.0.0) + prawn-templates (0.1.1) + pdf-reader (~> 2.0) + prawn (~> 2.2) + public_suffix (3.0.2) + pygments.rb (1.2.1) + multi_json (>= 1.0.0) + rainbow (3.0.0) + rake (12.3.0) + retriable (3.1.1) ruby-rc4 (0.1.5) - rubyzip (1.1.6) - thread_safe (0.3.4) + rubyzip (1.2.1) + safe_yaml (1.0.4) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + thread_safe (0.3.6) treetop (1.5.3) polyglot (~> 0.3) - ttfunk (1.2.2) - yajl-ruby (1.1.0) + ttfunk (1.5.1) + tzinfo (1.2.5) + thread_safe (~> 0.1) PLATFORMS ruby DEPENDENCIES - asciidoctor (= 1.5.0) - asciidoctor-epub3 (= 1.0.0.alpha.2) - asciidoctor-pdf (= 1.5.0.alpha.5) + asciidoctor (= 1.5.6.1) + asciidoctor-epub3! + asciidoctor-pdf (= 1.5.0.alpha.16) + asciidoctor-pdf-cjk (~> 0.1.3) + asciidoctor-pdf-cjk-kai_gen_gothic (~> 0.1.1) awesome_print coderay - epubcheck + epubcheck-ruby + github_changelog_generator! json kindlegen + octokit pygments.rb rake thread_safe + +BUNDLED WITH + 1.16.1 diff --git a/Rakefile b/Rakefile index 94ec2df0..e805d5e8 100644 --- a/Rakefile +++ b/Rakefile @@ -1,28 +1,250 @@ -namespace :book do - desc 'prepare build' - task :prebuild do - Dir.mkdir 'images' unless Dir.exists? 'images' - Dir.glob("book/*/images/*").each do |image| - FileUtils.copy(image, "images/" + File.basename(image)) - end +# coding: utf-8 +require 'octokit' +require 'github_changelog_generator' + +def exec_or_raise(command) + puts `#{command}` + if (! $?.success?) + raise "'#{command}' failed" + end +end + +module GitHubChangelogGenerator + + #OPTIONS = %w[ user project token date_format output + # bug_prefix enhancement_prefix issue_prefix + # header merge_prefix issues + # add_issues_wo_labels add_pr_wo_labels + # pulls filter_issues_by_milestone author + # unreleased_only unreleased unreleased_label + # compare_link include_labels exclude_labels + # bug_labels enhancement_labels + # between_tags exclude_tags exclude_tags_regex since_tag max_issues + # github_site github_endpoint simple_list + # future_release release_branch verbose release_url + # base configure_sections add_sections] + + def get_log(&task_block) + options = Parser.default_options + yield(options) if task_block + + options[:user],options[:project] = ENV['TRAVIS_REPO_SLUG'].split('/') + options[:token] = ENV['GITHUB_API_TOKEN'] + options[:unreleased] = false + + generator = Generator.new options + generator.compound_changelog end + module_function :get_log +end + +namespace :book do desc 'build basic book formats' - task :build => :prebuild do + task :build do + + puts "Generating contributors list" + exec_or_raise("git shortlog -s --all| grep -v -E '(Straub|Chacon)' | cut -f 2- | column -c 120 > book/contributors.txt") + + # detect if the deployment is using glob + travis = File.read(".travis.yml") + version_string = ENV['TRAVIS_TAG'] || '0' + if travis.match(/file_glob/) + progit_v = "progit_v#{version_string}" + else + progit_v = "progit" + end + text = File.read('progit.asc') + new_contents = text.gsub("$$VERSION$$", version_string).gsub("$$DATE$$", Time.now.strftime("%Y-%m-%d")) + File.open("#{progit_v}.asc", "w") {|file| file.puts new_contents } + puts "Converting to HTML..." - `bundle exec asciidoctor progit.asc` - puts " -- HTML output at progit.html" + exec_or_raise("bundle exec asciidoctor #{progit_v}.asc") + puts " -- HTML output at #{progit_v}.html" puts "Converting to EPub..." - `bundle exec asciidoctor-epub3 progit.asc` - puts " -- Epub output at progit.epub" + exec_or_raise("bundle exec asciidoctor-epub3 #{progit_v}.asc") + puts " -- Epub output at #{progit_v}.epub" + + exec_or_raise("epubcheck #{progit_v}.epub") puts "Converting to Mobi (kf8)..." - `bundle exec asciidoctor-epub3 -a ebook-format=kf8 progit.asc` - puts " -- Mobi output at progit.mobi" + exec_or_raise("bundle exec asciidoctor-epub3 -a ebook-format=kf8 #{progit_v}.asc") + # remove the fake epub that would shadow the really one + exec_or_raise("rm progit*kf8.epub") + puts " -- Mobi output at #{progit_v}.mobi" + repo = ENV['TRAVIS_REPO_SLUG'] puts "Converting to PDF... (this one takes a while)" - `bundle exec asciidoctor-pdf progit.asc 2>/dev/null` - puts " -- PDF output at progit.pdf" + if (repo == "progit/progit2-zh") + exec_or_raise("asciidoctor-pdf-cjk-kai_gen_gothic-install") + exec_or_raise("bundle exec asciidoctor-pdf -r asciidoctor-pdf-cjk -r asciidoctor-pdf-cjk-kai_gen_gothic -a pdf-style=KaiGenGothicCN #{progit_v}.asc") + elsif (repo == "progit/progit2-ja") + exec_or_raise("asciidoctor-pdf-cjk-kai_gen_gothic-install") + exec_or_raise("bundle exec asciidoctor-pdf -r asciidoctor-pdf-cjk -r asciidoctor-pdf-cjk-kai_gen_gothic -a pdf-style=KaiGenGothicJP #{progit_v}.asc") + elsif (repo == "progit/progit2-zh-tw") + exec_or_raise("asciidoctor-pdf-cjk-kai_gen_gothic-install") + exec_or_raise("bundle exec asciidoctor-pdf -r asciidoctor-pdf-cjk -r asciidoctor-pdf-cjk-kai_gen_gothic -a pdf-style=KaiGenGothicTW #{progit_v}.asc") + elsif (repo == "progit/progit2-ko") + exec_or_raise("asciidoctor-pdf-cjk-kai_gen_gothic-install") + exec_or_raise("bundle exec asciidoctor-pdf -r asciidoctor-pdf-cjk -r asciidoctor-pdf-cjk-kai_gen_gothic -a pdf-style=KaiGenGothicKR #{progit_v}.asc") + else + exec_or_raise("bundle exec asciidoctor-pdf #{progit_v}.asc 2>/dev/null") + end + puts " -- PDF output at #{progit_v}.pdf" + end + + desc 'tag the repo with the latest version' + task :tag do + api_token = ENV['GITHUB_API_TOKEN'] + if ((api_token) && (ENV['TRAVIS_PULL_REQUEST'] == 'false')) + repo = ENV['TRAVIS_REPO_SLUG'] + @octokit = Octokit::Client.new(:access_token => api_token) + begin + last_version=@octokit.latest_release(repo).tag_name + rescue + last_version="2.1.-1" + end + new_patchlevel= last_version.split('.')[-1].to_i + 1 + new_version="2.1.#{new_patchlevel}" + if (ENV['TRAVIS_BRANCH']=='master') + obj = @octokit.create_tag(repo, new_version, "Version " + new_version, + ENV['TRAVIS_COMMIT'], 'commit', + 'Automatic build', 'automatic@no-domain.org', + Time.now.utc.iso8601) + begin + @octokit.create_ref(repo, "tags/#{new_version}", obj.sha) + rescue + p "the ref already exists ???" + end + p "Created tag #{last_version}" + elsif (ENV['TRAVIS_TAG']) + version = ENV['TRAVIS_TAG'] + changelog = GitHubChangelogGenerator.get_log do |config| + config[:since_tag] = last_version + end + credit_line = "\\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*" + changelog.gsub!(credit_line, "") + @octokit.create_release(repo, new_version, {:name => "v#{new_version}", :body => changelog}) + p "Created release #{new_version}" + else + p 'This only runs on a commit to master' + end + else + p 'No interaction with GitHub' + end + end + + desc 'convert book to asciidoctor compatibility' + task:convert do + `cp -aR ../progit2/images .` + `sed -i -e 's!/images/!!' .gitignore` + `git add images` + `git rm -r book/*/images` + + chapters = [ + ["01", "introduction" ], + ["02", "git-basics" ], + ["03", "git-branching" ], + ["04", "git-server" ], + ["05", "distributed-git" ], + ["06", "github" ], + ["07", "git-tools" ], + ["08", "customizing-git" ], + ["09", "git-and-other-scms" ], + ["10", "git-internals" ], + ["A", "git-in-other-environments" ], + ["B", "embedding-git" ], + ["C", "git-commands" ] + ] + + crossrefs = {} + chapters.each { | num, title | + if num =~ /[ABC]/ + chap = "#{num}-#{title}" + else + chap = "ch#{num}-#{title}" + end + Dir[File.join ["book","#{num}-#{title}" , "sections","*.asc"]].map { |filename| + File.read(filename).scan(/\[\[(.*?)\]\]/) + }.flatten.each { |ref| + crossrefs[ref] = "#{chap}" + } + } + + headrefs = {} + chapters.each { | num, title | + if num =~ /[ABC]/ + chap = "#{num}-#{title}" + else + chap = "ch#{num}-#{title}" + end + Dir[File.join ["book","#{num}-#{title}", "*.asc"]].map { |filename| + File.read(filename).scan(/\[\[([_a-z0-9]*?)\]\]/) + }.flatten.each { |ref| + headrefs[ref] = "#{chap}" + } + } + + # transform all internal cross refs + chapters.each { | num, title | + if num =~ /[ABC]/ + chap = "#{num}-#{title}" + else + chap = "ch#{num}-#{title}" + end + files = Dir[File.join ["book","#{num}-#{title}" , "sections","*.asc"]] + + Dir[File.join ["book","#{num}-#{title}" ,"1-*.asc"]] + p files + files.each { |filename| + content = File.read(filename) + new_contents = content.gsub(/\[\[([_a-z0-9]*?)\]\]/, '[[r\1]]').gsub( + "→", "→").gsub(/<<([_a-z0-9]*?)>>/) { |match| + ch = crossrefs[$1] + h = headrefs[$1] + # p " #{match} -> #{ch}, #{h}" + if ch + # if local do not add the file + if ch==chap + "<>" + else + "<<#{ch}#r#{$1}>>" + end + elsif h + if h==chap + "<<#{chap}>>" + else + "<<#{h}##{h}>>" + end + else + p "could not match xref #{$1}" + "<<#{$1}>>" + end + } + File.open(filename, "w") {|file| file.puts new_contents } + } + } + + chapters.each { | num, title | + if num =~ /[ABC]/ + chap = "#{num}-#{title}" + else + chap = "ch#{num}-#{title}" + end + Dir[File.join ["book","#{num}-#{title}" ,"1*.asc"]].map { |filename| + content = File.read (filename) + new_contents = content.gsub(/include::(.*?)asc/) {|match| + "include::book/#{num}-#{title}/#{$1}asc"} + `git rm -f #{filename}` + File.open("#{chap}.asc", "w") {|file| + file.puts "[##{chap}]\n" + file.puts new_contents } + `git add "#{chap}.asc"` + } + } end end + + + +task :default => "book:build" diff --git a/book/01-introduction/images/areas.png b/book/01-introduction/images/areas.png deleted file mode 100644 index a7704312..00000000 Binary files a/book/01-introduction/images/areas.png and /dev/null differ diff --git a/book/01-introduction/images/centralized.png b/book/01-introduction/images/centralized.png deleted file mode 100644 index e8d103ab..00000000 Binary files a/book/01-introduction/images/centralized.png and /dev/null differ diff --git a/book/01-introduction/images/deltas.png b/book/01-introduction/images/deltas.png deleted file mode 100644 index b914131e..00000000 Binary files a/book/01-introduction/images/deltas.png and /dev/null differ diff --git a/book/01-introduction/images/distributed.png b/book/01-introduction/images/distributed.png deleted file mode 100644 index 572552cd..00000000 Binary files a/book/01-introduction/images/distributed.png and /dev/null differ diff --git a/book/01-introduction/images/git-osx-installer.png b/book/01-introduction/images/git-osx-installer.png deleted file mode 100644 index 7490d693..00000000 Binary files a/book/01-introduction/images/git-osx-installer.png and /dev/null differ diff --git a/book/01-introduction/images/local.png b/book/01-introduction/images/local.png deleted file mode 100644 index abb473d0..00000000 Binary files a/book/01-introduction/images/local.png and /dev/null differ diff --git a/book/01-introduction/images/snapshots.png b/book/01-introduction/images/snapshots.png deleted file mode 100644 index 82eb324f..00000000 Binary files a/book/01-introduction/images/snapshots.png and /dev/null differ diff --git a/book/01-introduction/sections/basics.asc b/book/01-introduction/sections/basics.asc index 6e8f7696..1d4d80c7 100644 --- a/book/01-introduction/sections/basics.asc +++ b/book/01-introduction/sections/basics.asc @@ -14,7 +14,7 @@ Git no maneja ni almacena sus datos de esta forma. Git maneja sus datos como un .Almacenamiento de datos como instantáneas del proyecto a través del tiempo. image::images/snapshots.png[Git stores data as snapshots of the project over time.] -Esta es una diferencia importante entre Git y prácticamente todos los demás VCS. Hace que Git reconsidere casi todos los aspectos del control de versiones que muchos de los demás sistemas copiaron de la generación anterior. Esto hace que Git se parezca más a un sistema de archivos miniatura con algunas herramientas tremendamente poderosas desarrolladas sobre él, que a un VCS. Exploraremos algunos de los beneficios que obtienes al modelar tus datos de esta manera cuando veamos ramificación (branching) en Git en el (véase <<_git_branching>>) (véase el link:../../03-git-branching/1-git-branching.asc[Capítulo 3]). FIXME +Esta es una diferencia importante entre Git y prácticamente todos los demás VCS. Hace que Git reconsidere casi todos los aspectos del control de versiones que muchos de los demás sistemas copiaron de la generación anterior. Esto hace que Git se parezca más a un sistema de archivos miniatura con algunas herramientas tremendamente poderosas desarrolladas sobre él, que a un VCS. Exploraremos algunos de los beneficios que obtienes al modelar tus datos de esta manera cuando veamos ramificación (branching) en Git en el (véase <>) (véase el link:../../03-git-branching/1-git-branching.asc[Capítulo 3]). FIXME ==== Casi todas las operaciones son locales @@ -41,7 +41,7 @@ Verás estos valores hash por todos lados en Git porque son usados con mucha fre Cuando realizas acciones en Git, casi todas ellas solo añaden información a la base de datos de Git. Es muy difícil conseguir que el sistema haga algo que no se pueda enmendar, o que de algún modo borre información. Como en cualquier VCS, puedes perder o estropear cambios que no has confirmado todavía. Pero después de confirmar una copia instantánea en Git es muy difícil de perderla, especialmente si envías tu base de datos a otro repositorio con regularidad. -Esto hace que usar Git sea un placer, porque sabemos que podemos experimentar sin peligro de estropear gravemente las cosas. Para un análisis más exhaustivo de cómo almacena Git su información y cómo puedes recuperar datos aparentemente perdidos, ver <<_undoing>> link:../../02-git-basics/sections/undoing.asc[Capítulo 2]. FIXME +Esto hace que usar Git sea un placer, porque sabemos que podemos experimentar sin peligro de estropear gravemente las cosas. Para un análisis más exhaustivo de cómo almacena Git su información y cómo puedes recuperar datos aparentemente perdidos, ver <> link:../../02-git-basics/sections/undoing.asc[Capítulo 2]. FIXME ==== Los Tres Estados @@ -64,4 +64,4 @@ El flujo de trabajo básico en Git es algo así: 2. Preparas los archivos, añadiéndolos a tu área de preparación. 3. Confirmas los cambios, lo que toma los archivos tal y como están en el área de preparación y almacena esa copia instantánea de manera permanente en tu directorio de Git. -Si una versión concreta de un archivo está en el directorio de Git, se considera confirmada (committed). Si ha sufrido cambios desde que se obtuvo del repositorio, pero ha sido añadida al área de preparación, está preparada (staged). Y si ha sufrido cambios desde que se obtuvo del repositorio, pero no se ha preparado, está modificada (modified). En el <<_git_basics_chapter>> link:../../02-git-basics[Capítulo 2] aprenderás más acerca de estos estados y de cómo puedes aprovecharlos o saltarte toda la parte de preparación. +Si una versión concreta de un archivo está en el directorio de Git, se considera confirmada (committed). Si ha sufrido cambios desde que se obtuvo del repositorio, pero ha sido añadida al área de preparación, está preparada (staged). Y si ha sufrido cambios desde que se obtuvo del repositorio, pero no se ha preparado, está modificada (modified). En el <> link:../../02-git-basics[Capítulo 2] aprenderás más acerca de estos estados y de cómo puedes aprovecharlos o saltarte toda la parte de preparación. diff --git a/book/01-introduction/sections/first-time-setup.asc b/book/01-introduction/sections/first-time-setup.asc index 3acdc48e..12e9aec0 100644 --- a/book/01-introduction/sections/first-time-setup.asc +++ b/book/01-introduction/sections/first-time-setup.asc @@ -1,4 +1,4 @@ -[[_first_time]] +[[r_first_time]] === Configurando Git por primera vez Ahora que tienes Git en tu sistema, vas a querer hacer algunas cosas para personalizar tu entorno de Git. diff --git a/book/01-introduction/sections/help.asc b/book/01-introduction/sections/help.asc index c4f2183f..8fc98c48 100644 --- a/book/01-introduction/sections/help.asc +++ b/book/01-introduction/sections/help.asc @@ -1,4 +1,4 @@ -[[_git_help]] +[[r_git_help]] === ¿Cómo obtener ayuda? Si alguna vez necesitas ayuda usando Git, existen tres formas de ver la página del manual (manpage) para cualquier comando de Git: diff --git a/book/01-introduction/sections/history.asc b/book/01-introduction/sections/history.asc index 707dc81d..d7f25f54 100644 --- a/book/01-introduction/sections/history.asc +++ b/book/01-introduction/sections/history.asc @@ -12,4 +12,4 @@ En el 2005, la relación entre la comunidad que desarrollaba el kernel de Linux * Completamente distribuido * Capaz de manejar grandes proyectos (como el kernel de Linux) eficientemente (velocidad y tamaño de los datos) -Desde su nacimiento en el 2005, Git ha evolucionado y madurado para ser fácil de usar y conservar sus características iniciales. Es tremendamente rápido, muy eficiente con grandes proyectos, y tiene un increíble sistema de ramificación (branching) para desarrollo no lineal (véase <<_git_branching>>) (véase el link:../../03-git-branching/1-git-branching.asc[Capítulo 3]). FIXME +Desde su nacimiento en el 2005, Git ha evolucionado y madurado para ser fácil de usar y conservar sus características iniciales. Es tremendamente rápido, muy eficiente con grandes proyectos, y tiene un increíble sistema de ramificación (branching) para desarrollo no lineal (véase <>) (véase el link:../../03-git-branching/1-git-branching.asc[Capítulo 3]). FIXME diff --git a/book/02-git-basics/images/lifecycle.png b/book/02-git-basics/images/lifecycle.png deleted file mode 100644 index 1ef9e684..00000000 Binary files a/book/02-git-basics/images/lifecycle.png and /dev/null differ diff --git a/book/02-git-basics/sections/aliases.asc b/book/02-git-basics/sections/aliases.asc index 2a4f52e7..f3ea4768 100644 --- a/book/02-git-basics/sections/aliases.asc +++ b/book/02-git-basics/sections/aliases.asc @@ -1,4 +1,4 @@ -[[_git_aliases]] +[[r_git_aliases]] === Alias de Git (((aliases))) diff --git a/book/02-git-basics/sections/getting-a-repository.asc b/book/02-git-basics/sections/getting-a-repository.asc index ed346158..d928e9d1 100644 --- a/book/02-git-basics/sections/getting-a-repository.asc +++ b/book/02-git-basics/sections/getting-a-repository.asc @@ -1,4 +1,4 @@ -[[_getting_a_repo]] +[[r_getting_a_repo]] === Obteniendo un repositorio Git Puedes obtener un proyecto Git de dos maneras. @@ -15,7 +15,7 @@ $ git init ---- Esto crea un subdirectorio nuevo llamado `.git`, el cual contiene todos los archivos necesarios del repositorio – un esqueleto de un repositorio de Git. -Todavía no hay nada en tu proyecto que esté bajo seguimiento. Puedes revisar <<_git_internals>> para obtener más información acerca de los archivos presentes en el directorio `.git` que acaba de ser creado.(((git commands, init))) +Todavía no hay nada en tu proyecto que esté bajo seguimiento. Puedes revisar <> para obtener más información acerca de los archivos presentes en el directorio `.git` que acaba de ser creado.(((git commands, init))) Si deseas empezar a controlar versiones de archivos existentes (a diferencia de un directorio vacío), probablemente deberías comenzar el seguimiento de esos archivos y hacer una confirmación inicial. Puedes conseguirlo con unos pocos comandos `git add` para especificar qué archivos quieres controlar, seguidos de un `git commit` para confirmar los cambios: @@ -30,13 +30,13 @@ $ git commit -m 'initial project version' Veremos lo que hacen estos comandos más adelante. En este momento, tienes un repositorio de Git con archivos bajo seguimiento y una confirmación inicial. -[[_git_cloning]] +[[r_git_cloning]] ==== Clonando un repositorio existente Si deseas obtener una copia de un repositorio Git existente — por ejemplo, un proyecto en el que te gustaría contribuir — el comando que necesitas es `git clone`. Si estás familizarizado con otros sistemas de control de versiones como Subversion, verás que el comando es "clone" en vez de "checkout". Es una distinción importante, ya que Git recibe una copia de casi todos los datos que tiene el servidor. Cada versión de cada archivo de la historia del proyecto es descargada por defecto cuando ejecutas `git clone`. -De hecho, si el disco de tu servidor se corrompe, puedes usar cualquiera de los clones en cualquiera de los clientes para devolver al servidor al estado en el que estaba cuando fue clonado (puede que pierdas algunos hooks del lado del servidor y demás, pero toda la información acerca de las versiones estará ahí) — véase <<_git_on_the_server>> para más detalles. +De hecho, si el disco de tu servidor se corrompe, puedes usar cualquiera de los clones en cualquiera de los clientes para devolver al servidor al estado en el que estaba cuando fue clonado (puede que pierdas algunos hooks del lado del servidor y demás, pero toda la información acerca de las versiones estará ahí) — véase <> para más detalles. Puedes clonar un repositorio con `git clone [url]`.(((git commands, clone))) Por ejemplo, si quieres clonar la librería de Git llamada libgit2 puedes hacer algo así: @@ -59,4 +59,4 @@ Ese comando hace lo mismo que el anterior, pero el directorio de destino se llam Git te permite usar distintos protocolos de transferencia. El ejemplo anterior usa el protocolo `https://`, pero también puedes utilizar `git://` o `usuario@servidor:ruta/del/repositorio.git` que utiliza el protocolo de transferencia SSH. -En <<_git_on_the_server>> se explicarán todas las opciones disponibles a la hora de configurar el acceso a tu repositorio de Git, y las ventajas e inconvenientes de cada una. +En <> se explicarán todas las opciones disponibles a la hora de configurar el acceso a tu repositorio de Git, y las ventajas e inconvenientes de cada una. diff --git a/book/02-git-basics/sections/recording-changes.asc b/book/02-git-basics/sections/recording-changes.asc index d6cde317..90f39e45 100644 --- a/book/02-git-basics/sections/recording-changes.asc +++ b/book/02-git-basics/sections/recording-changes.asc @@ -14,7 +14,7 @@ Luego preparas estos archivos modificados y finalmente confirmas todos los cambi .El ciclo de vida del estado de tus archivos. image::images/lifecycle.png[El ciclo de vida del estado de tus archivos.] -[[_checking_status]] +[[r_checking_status]] ==== Revisando el Estado de tus Archivos La herramienta principal para determinar qué archivos están en qué estado es el comando `git status`.(((git commands, status))) @@ -31,7 +31,7 @@ Esto significa que tienes un directorio de trabajo limpio - en otras palabras, q Además, Git no encuentra ningún archivo sin rastrear, de lo contrario aparecerían listados aquí. Finalmente, el comando te indica en cuál rama estás y te informa que no ha variado con respecto a la misma rama en el servidor. Por ahora, la rama siempre será ``master'', que es la rama por defecto; no le prestaremos atención ahora. -<<_git_branching>> tratará en detalle las ramas y las referencias. +<> tratará en detalle las ramas y las referencias. Supongamos que añades un nuevo archivo a tu proyecto, un simple README. Si el archivo no existía antes, y ejecutas `git status`, verás el archivo sin rastrear de la siguiente manera: @@ -54,7 +54,7 @@ Sin rastrear significa que Git ve archivos que no tenías en el _commit_ anterio Se comporta así para evitar incluir accidentalmente archivos binarios o cualquier otro archivo que no quieras incluir. Como tú sí quieres incluir README, debes comenzar a rastrearlo. -[[_tracking_files]] +[[r_tracking_files]] ==== Rastrear Archivos Nuevos Para comenzar a rastrear un archivo debes usar el comando `git add`.(((git commands, add))) @@ -181,7 +181,7 @@ M lib/simplegit.rb Los archivos nuevos que no están rastreados tienen un `??` a su lado, los archivos que están preparados tienen una `A` y los modificados una `M`. El estado aparece en dos columnas - la columna de la izquierda indica el estado preparado y la columna de la derecha indica el estado sin preparar. Por ejemplo, en esa salida, el archivo `README` está modificado en el directorio de trabajo pero no está preparado, mientras que `lib/simplegit.rb` está modificado y preparado. El archivo `Rakefile` fue modificado, preparado y modificado otra vez por lo que existen cambios preparados y sin preparar. -[[_ignoring]] +[[r_ignoring]] ==== Ignorar Archivos A veces, tendrás algún tipo de archivo que no quieres que Git añada automáticamente o más aun, que ni siquiera quieras que aparezca como no rastreado. @@ -239,7 +239,7 @@ doc/**/*.txt GitHub mantiene una extensa lista de archivos `.gitignore` adecuados a docenas de proyectos y lenguajes en https://github.com/github/gitignore[] en caso de que quieras tener un punto de partida para tu proyecto. ==== -[[_git_diff_staged]] +[[r_git_diff_staged]] ==== Ver los Cambios Preparados y No Preparados Si el comando `git status` es muy impreciso para ti - quieres ver exactamente que ha cambiado, no solo cuáles archivos lo han hecho - puedes usar el comando `git diff`.(((git commands, diff))) @@ -370,7 +370,7 @@ index 8ebb991..643e24f 100644 A lo largo del libro, continuaremos usando el comando `git diff` de distintas maneras. Existe otra forma de ver estas diferencias si prefieres utilizar una interfaz gráfica u otro programa externo. Si ejecutas `git difftool` en vez de `git diff`, podrás ver los cambios con programas de este tipo como Araxis, emerge, vimdiff y más. Ejecuta `git difftool --tool-help` para ver qué tienes disponible en tu sistema. ==== -[[_committing_changes]] +[[r_committing_changes]] ==== Confirmar tus Cambios Ahora que tu área de preparación está como quieres, puedes confirmar tus cambios. @@ -385,7 +385,7 @@ $ git commit ---- Al hacerlo, arrancará el editor de tu preferencia. -(El editor se establece a través de la variable de ambiente `$EDITOR` de tu terminal - usualmente es vim o emacs, aunque puedes configurarlo con el editor que quieras usando el comando `git config --global core.editor` tal como viste en <<_getting_started>>).(((editor, changing default)))(((git commands, config))) +(El editor se establece a través de la variable de ambiente `$EDITOR` de tu terminal - usualmente es vim o emacs, aunque puedes configurarlo con el editor que quieras usando el comando `git config --global core.editor` tal como viste en <>).(((editor, changing default)))(((git commands, config))) El editor mostrará el siguiente texto (este ejemplo corresponde a una pantalla de Vim): @@ -453,7 +453,7 @@ $ git commit -a -m 'added new benchmarks' Fíjate que en este caso no fue necesario ejecutar `git add` sobre el archivo `CONTRIBUTING.md` antes de confirmar. -[[_removing_files]] +[[r_removing_files]] ==== Eliminar Archivos (((files, removing))) @@ -525,7 +525,7 @@ $ git rm \*~ Este comando elimina todos los archivos que acaben con `~`. -[[_git_mv]] +[[r_git_mv]] ==== Cambiar el Nombre de los Archivos (((files, moving))) diff --git a/book/02-git-basics/sections/remotes.asc b/book/02-git-basics/sections/remotes.asc index 268bd317..22e536d4 100644 --- a/book/02-git-basics/sections/remotes.asc +++ b/book/02-git-basics/sections/remotes.asc @@ -1,4 +1,4 @@ -[[_remote_repos]] +[[r_remote_repos]] === Trabajar con Remotos Para poder colaborar en cualquier proyecto Git, necesitas saber cómo gestionar repositorios remotos. @@ -58,7 +58,7 @@ origin git@github.com:mojombo/grit.git (push) Esto significa que podemos traer contribuciones de cualquiera de estos usuarios fácilmente. Es posible que también tengamos permisos para enviar datos a algunos, aunque no podemos saberlo desde aquí. -Fíjate que estos remotos usan distintos protocolos; hablaremos sobre ello más adelante, en <<_git_on_the_server>>. +Fíjate que estos remotos usan distintos protocolos; hablaremos sobre ello más adelante, en <>. ==== Añadir Repositorios Remotos @@ -93,9 +93,9 @@ From https://github.com/paulboone/ticgit ---- La rama maestra de Paul ahora es accesible localmente con el nombre `pb/master` - puedes combinarla con alguna de tus ramas, o puedes crear una rama local en ese punto si quieres inspeccionarla. -(Hablaremos con más detalle acerca de qué son las ramas y cómo utilizarlas en <<_git_branching>>.) +(Hablaremos con más detalle acerca de qué son las ramas y cómo utilizarlas en <>.) -[[_fetching_and_pulling]] +[[r_fetching_and_pulling]] ==== Traer y Combinar Remotos Como hemos visto hasta ahora, para obtener datos de tus proyectos remotos puedes ejecutar:(((git commands, fetch))) @@ -113,11 +113,11 @@ Por lo tanto, `git fetch origin` se trae todo el trabajo nuevo que ha sido envia Es importante destacar que el comando `git fetch` solo trae datos a tu repositorio local - ni lo combina automáticamente con tu trabajo ni modifica el trabajo que llevas hecho. La combinación con tu trabajo debes hacerla manualmente cuando estés listo. -Si has configurado una rama para que rastree una rama remota (más información en la siguiente sección y en <<_git_branching>>), puedes usar el comando `git pull` para traer y combinar automáticamente la rama remota con tu rama actual.(((git commands, pull))) +Si has configurado una rama para que rastree una rama remota (más información en la siguiente sección y en <>), puedes usar el comando `git pull` para traer y combinar automáticamente la rama remota con tu rama actual.(((git commands, pull))) Es posible que este sea un flujo de trabajo mucho más cómodo y fácil para ti; y por defecto, el comando `git clone` le indica automáticamente a tu rama maestra local que rastree la rama maestra remota (o como se llame la rama por defecto) del servidor del que has clonado. Generalmente, al ejecutar `git pull` traerás datos del servidor del que clonaste originalmente y se intentará combinar automáticamente la información con el código en el que estás trabajando. -[[_pushing_remotes]] +[[r_pushing_remotes]] ==== Enviar a Tus Remotos Cuando tienes un proyecto que quieres compartir, debes enviarlo a un servidor. @@ -132,9 +132,9 @@ $ git push origin master Este comando solo funciona si clonaste de un servidor sobre el que tienes permisos de escritura y si nadie más ha enviado datos por el medio. Si alguien más clona el mismo repositorio que tú y envía información antes que tú, tu envío será rechazado. Tendrás que traerte su trabajo y combinarlo con el tuyo antes de que puedas enviar datos al servidor. -Para información más detallada sobre cómo enviar datos a servidores remotos, véase <<_git_branching>>. +Para información más detallada sobre cómo enviar datos a servidores remotos, véase <>. -[[_inspecting_remote]] +[[r_inspecting_remote]] ==== Inspeccionar un Remoto Si quieres ver más información acerca de un remoto en particular, puedes ejecutar el comando `git remote show [nombre-remoto]`.(((git commands, remote))) diff --git a/book/02-git-basics/sections/tagging.asc b/book/02-git-basics/sections/tagging.asc index a9e63dad..905a0c17 100644 --- a/book/02-git-basics/sections/tagging.asc +++ b/book/02-git-basics/sections/tagging.asc @@ -1,4 +1,4 @@ -[[_git_tagging]] +[[r_git_tagging]] === Etiquetado (((tags))) @@ -49,7 +49,7 @@ Sin embargo, las etiquetas anotadas se guardan en la base de datos de Git como o Tienen un _checksum_; contienen el nombre del etiquetador, correo electrónico y fecha; tienen un mensaje asociado; y pueden ser firmadas y verificadas con _GNU Privacy Guard_ (GPG). Normalmente se recomienda que crees etiquetas anotadas, de manera que tengas toda esta información; pero si quieres una etiqueta temporal o por alguna razón no estás interesado en esa información, entonces puedes usar las etiquetas ligeras. -[[_annotated_tags]] +[[r_annotated_tags]] ==== Etiquetas Anotadas (((tags, annotated))) @@ -174,7 +174,7 @@ Date: Sun Apr 27 20:43:35 2008 -0700 ... ---- -[[_sharing_tags]] +[[r_sharing_tags]] ==== Compartir Etiquetas Por defecto, el comando `git push` no transfiere las etiquetas a los servidores remotos.(((git commands, push))) diff --git a/book/02-git-basics/sections/undoing.asc b/book/02-git-basics/sections/undoing.asc index 2ca6eb2f..406a52de 100644 --- a/book/02-git-basics/sections/undoing.asc +++ b/book/02-git-basics/sections/undoing.asc @@ -1,4 +1,4 @@ -[[_undoing]] +[[r_undoing]] === Deshacer Cosas En cualquier momento puede que quieras deshacer algo. @@ -31,7 +31,7 @@ $ git commit --amend Al final terminarás con una sola confirmación - la segunda confirmación reemplaza el resultado de la primera. -[[_unstaging]] +[[r_unstaging]] ==== Deshacer un Archivo Preparado Las siguientes dos secciones demuestran cómo lidiar con los cambios de tu área de preparación y tú directorio de trabajo. @@ -82,7 +82,7 @@ El archivo `CONTRIBUTING.md` esta modificado y, nuevamente, no preparado. A pesar de que `git reset` _puede_ ser un comando peligroso si lo llamas con `--hard`, en este caso el archivo que está en tu directorio de trabajo no se toca. Ejecutar `git reset` sin opciones no es peligroso - solo toca el área de preparación. ===== -Por ahora lo único que necesitas saber sobre el comando `git reset` es esta invocación mágica. Entraremos en mucho más detalle sobre qué hace `reset` y como dominarlo para que haga cosas realmente interesantes en <<_git_reset>>. +Por ahora lo único que necesitas saber sobre el comando `git reset` es esta invocación mágica. Entraremos en mucho más detalle sobre qué hace `reset` y como dominarlo para que haga cosas realmente interesantes en <>. ==== Deshacer un Archivo Modificado @@ -123,8 +123,8 @@ Es importante entender que `git checkout -- [archivo]` es un comando peligroso. Nunca utilices este comando a menos que estés absolutamente seguro de que ya no quieres el archivo. ===== -Para mantener los cambios que has hecho y a la vez deshacerte del archivo temporalmente, hablaremos sobre cómo esconder archivos (_stashing_, en inglés) y sobre ramas en <<_git_branching>>; normalmente, estas son las mejores maneras de hacerlo. +Para mantener los cambios que has hecho y a la vez deshacerte del archivo temporalmente, hablaremos sobre cómo esconder archivos (_stashing_, en inglés) y sobre ramas en <>; normalmente, estas son las mejores maneras de hacerlo. Recuerda, todo lo que esté __confirmado__ en Git puede recuperarse. -Incluso _commits_ que estuvieron en ramas que han sido eliminadas o _commits_ que fueron sobreescritos con `--amend` pueden recuperarse (véase <<_data_recovery>> para recuperación de datos). +Incluso _commits_ que estuvieron en ramas que han sido eliminadas o _commits_ que fueron sobreescritos con `--amend` pueden recuperarse (véase <> para recuperación de datos). Sin embargo, es posible que no vuelvas a ver jamás cualquier cosa que pierdas y que nunca haya sido confirmada. diff --git a/book/02-git-basics/sections/viewing-history.asc b/book/02-git-basics/sections/viewing-history.asc index befcc1b1..6c32963a 100644 --- a/book/02-git-basics/sections/viewing-history.asc +++ b/book/02-git-basics/sections/viewing-history.asc @@ -1,4 +1,4 @@ -[[_viewing_history]] +[[r_viewing_history]] === Ver el Historial de Confirmaciones Después de haber hecho varias confirmaciones, o si has clonado un repositorio que ya tenía un histórico de confirmaciones, probablemente quieras mirar atrás para ver qué modificaciones se han llevado a cabo. @@ -154,9 +154,9 @@ ca82a6d - Scott Chacon, 6 years ago : changed the version number a11bef0 - Scott Chacon, 6 years ago : first commit ---- -<> lista algunas de las opciones más útiles aceptadas por `format`. +<> lista algunas de las opciones más útiles aceptadas por `format`. -[[pretty_format]] +[[rpretty_format]] .Opciones útiles de `git log --pretty=format` [cols="1,4",options="header"] |================================ @@ -181,7 +181,7 @@ a11bef0 - Scott Chacon, 6 years ago : first commit Puede que te estés preguntando la diferencia entre _autor_ (_author_) y _confirmador_ (_committer_). El autor es la persona que escribió originalmente el trabajo, mientras que el confirmador es quien lo aplicó. Por tanto, si mandas un parche a un proyecto, y uno de sus miembros lo aplica, ambos recibiréis reconocimiento —tú como autor, y el miembro del proyecto como confirmador—. -Veremos esta distinción en mayor profundidad en <<_distributed_git>>. +Veremos esta distinción en mayor profundidad en <>. Las opciones `oneline` y `format` son especialmente útiles combinadas con otra opción llamada `--graph`. Ésta añade un pequeño gráfico ASCII mostrando tu historial de ramificaciones y uniones: @@ -204,9 +204,9 @@ $ git log --pretty=format:"%h %s" --graph Este tipo de salidas serán más interesantes cuando empecemos a hablar sobre ramificaciones y combinaciones en el próximo capítulo. Éstas son sólo algunas de las opciones para formatear la salida de `git log` —existen muchas más. -<> lista las opciones vistas hasta ahora, y algunas otras opciones de formateo que pueden resultarte útiles, así como su efecto sobre la salida. +<> lista las opciones vistas hasta ahora, y algunas otras opciones de formateo que pueden resultarte útiles, así como su efecto sobre la salida. -[[log_options]] +[[rlog_options]] .Opciones típicas de `git log` [cols="1,4",options="header"] |================================ @@ -255,9 +255,9 @@ La última opción verdaderamente útil para filtrar la salida de `git log` es e Si especificas la ruta de un directorio o archivo, puedes limitar la salida a aquellas confirmaciones que introdujeron un cambio en dichos archivos. Ésta debe ser siempre la última opción, y suele ir precedida de dos guiones (`--`) para separar la ruta del resto de opciones. -En <> se listan estas opciones, y algunas otras bastante comunes, a modo de referencia. +En <> se listan estas opciones, y algunas otras bastante comunes, a modo de referencia. -[[limit_options]] +[[rlimit_options]] .Opciones para limitar la salida de `git log` [cols="2,4",options="header"] |================================ diff --git a/book/03-git-branching/images/advance-master.png b/book/03-git-branching/images/advance-master.png deleted file mode 100644 index b789feda..00000000 Binary files a/book/03-git-branching/images/advance-master.png and /dev/null differ diff --git a/book/03-git-branching/images/advance-testing.png b/book/03-git-branching/images/advance-testing.png deleted file mode 100644 index 35d05811..00000000 Binary files a/book/03-git-branching/images/advance-testing.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-branching-1.png b/book/03-git-branching/images/basic-branching-1.png deleted file mode 100644 index b49b9f4c..00000000 Binary files a/book/03-git-branching/images/basic-branching-1.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-branching-2.png b/book/03-git-branching/images/basic-branching-2.png deleted file mode 100644 index 329c9f52..00000000 Binary files a/book/03-git-branching/images/basic-branching-2.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-branching-3.png b/book/03-git-branching/images/basic-branching-3.png deleted file mode 100644 index 688addac..00000000 Binary files a/book/03-git-branching/images/basic-branching-3.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-branching-4.png b/book/03-git-branching/images/basic-branching-4.png deleted file mode 100644 index c1f1f477..00000000 Binary files a/book/03-git-branching/images/basic-branching-4.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-branching-5.png b/book/03-git-branching/images/basic-branching-5.png deleted file mode 100644 index 1d4c0642..00000000 Binary files a/book/03-git-branching/images/basic-branching-5.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-branching-6.png b/book/03-git-branching/images/basic-branching-6.png deleted file mode 100644 index b93918b5..00000000 Binary files a/book/03-git-branching/images/basic-branching-6.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-merging-1.png b/book/03-git-branching/images/basic-merging-1.png deleted file mode 100644 index 08b923f3..00000000 Binary files a/book/03-git-branching/images/basic-merging-1.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-merging-2.png b/book/03-git-branching/images/basic-merging-2.png deleted file mode 100644 index b1c58b23..00000000 Binary files a/book/03-git-branching/images/basic-merging-2.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-rebase-1.png b/book/03-git-branching/images/basic-rebase-1.png deleted file mode 100644 index bc804f6a..00000000 Binary files a/book/03-git-branching/images/basic-rebase-1.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-rebase-2.png b/book/03-git-branching/images/basic-rebase-2.png deleted file mode 100644 index c75bf386..00000000 Binary files a/book/03-git-branching/images/basic-rebase-2.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-rebase-3.png b/book/03-git-branching/images/basic-rebase-3.png deleted file mode 100644 index a18e34f9..00000000 Binary files a/book/03-git-branching/images/basic-rebase-3.png and /dev/null differ diff --git a/book/03-git-branching/images/basic-rebase-4.png b/book/03-git-branching/images/basic-rebase-4.png deleted file mode 100644 index 277b9257..00000000 Binary files a/book/03-git-branching/images/basic-rebase-4.png and /dev/null differ diff --git a/book/03-git-branching/images/branch-and-history.png b/book/03-git-branching/images/branch-and-history.png deleted file mode 100644 index ba2734e0..00000000 Binary files a/book/03-git-branching/images/branch-and-history.png and /dev/null differ diff --git a/book/03-git-branching/images/checkout-master.png b/book/03-git-branching/images/checkout-master.png deleted file mode 100644 index db052e6a..00000000 Binary files a/book/03-git-branching/images/checkout-master.png and /dev/null differ diff --git a/book/03-git-branching/images/commit-and-tree.png b/book/03-git-branching/images/commit-and-tree.png deleted file mode 100644 index 65289ae8..00000000 Binary files a/book/03-git-branching/images/commit-and-tree.png and /dev/null differ diff --git a/book/03-git-branching/images/commits-and-parents.png b/book/03-git-branching/images/commits-and-parents.png deleted file mode 100644 index e0c9bbea..00000000 Binary files a/book/03-git-branching/images/commits-and-parents.png and /dev/null differ diff --git a/book/03-git-branching/images/head-to-master.png b/book/03-git-branching/images/head-to-master.png deleted file mode 100644 index 5086d0fb..00000000 Binary files a/book/03-git-branching/images/head-to-master.png and /dev/null differ diff --git a/book/03-git-branching/images/head-to-testing.png b/book/03-git-branching/images/head-to-testing.png deleted file mode 100644 index 5422a8ed..00000000 Binary files a/book/03-git-branching/images/head-to-testing.png and /dev/null differ diff --git a/book/03-git-branching/images/interesting-rebase-1.png b/book/03-git-branching/images/interesting-rebase-1.png deleted file mode 100644 index 410287e6..00000000 Binary files a/book/03-git-branching/images/interesting-rebase-1.png and /dev/null differ diff --git a/book/03-git-branching/images/interesting-rebase-2.png b/book/03-git-branching/images/interesting-rebase-2.png deleted file mode 100644 index ac274080..00000000 Binary files a/book/03-git-branching/images/interesting-rebase-2.png and /dev/null differ diff --git a/book/03-git-branching/images/interesting-rebase-3.png b/book/03-git-branching/images/interesting-rebase-3.png deleted file mode 100644 index 91f46473..00000000 Binary files a/book/03-git-branching/images/interesting-rebase-3.png and /dev/null differ diff --git a/book/03-git-branching/images/interesting-rebase-4.png b/book/03-git-branching/images/interesting-rebase-4.png deleted file mode 100644 index 89af34f5..00000000 Binary files a/book/03-git-branching/images/interesting-rebase-4.png and /dev/null differ diff --git a/book/03-git-branching/images/interesting-rebase-5.png b/book/03-git-branching/images/interesting-rebase-5.png deleted file mode 100644 index 0bc02243..00000000 Binary files a/book/03-git-branching/images/interesting-rebase-5.png and /dev/null differ diff --git a/book/03-git-branching/images/lr-branches-1.png b/book/03-git-branching/images/lr-branches-1.png deleted file mode 100644 index 3d26562f..00000000 Binary files a/book/03-git-branching/images/lr-branches-1.png and /dev/null differ diff --git a/book/03-git-branching/images/lr-branches-2.png b/book/03-git-branching/images/lr-branches-2.png deleted file mode 100644 index acfb23db..00000000 Binary files a/book/03-git-branching/images/lr-branches-2.png and /dev/null differ diff --git a/book/03-git-branching/images/perils-of-rebasing-1.png b/book/03-git-branching/images/perils-of-rebasing-1.png deleted file mode 100644 index ce92ce97..00000000 Binary files a/book/03-git-branching/images/perils-of-rebasing-1.png and /dev/null differ diff --git a/book/03-git-branching/images/perils-of-rebasing-2.png b/book/03-git-branching/images/perils-of-rebasing-2.png deleted file mode 100644 index e9b643fa..00000000 Binary files a/book/03-git-branching/images/perils-of-rebasing-2.png and /dev/null differ diff --git a/book/03-git-branching/images/perils-of-rebasing-3.png b/book/03-git-branching/images/perils-of-rebasing-3.png deleted file mode 100644 index e049cbcd..00000000 Binary files a/book/03-git-branching/images/perils-of-rebasing-3.png and /dev/null differ diff --git a/book/03-git-branching/images/perils-of-rebasing-4.png b/book/03-git-branching/images/perils-of-rebasing-4.png deleted file mode 100644 index 669fc812..00000000 Binary files a/book/03-git-branching/images/perils-of-rebasing-4.png and /dev/null differ diff --git a/book/03-git-branching/images/perils-of-rebasing-5.png b/book/03-git-branching/images/perils-of-rebasing-5.png deleted file mode 100644 index 9ba97480..00000000 Binary files a/book/03-git-branching/images/perils-of-rebasing-5.png and /dev/null differ diff --git a/book/03-git-branching/images/remote-branches-1.png b/book/03-git-branching/images/remote-branches-1.png deleted file mode 100644 index 394234f0..00000000 Binary files a/book/03-git-branching/images/remote-branches-1.png and /dev/null differ diff --git a/book/03-git-branching/images/remote-branches-2.png b/book/03-git-branching/images/remote-branches-2.png deleted file mode 100644 index cd9e9d27..00000000 Binary files a/book/03-git-branching/images/remote-branches-2.png and /dev/null differ diff --git a/book/03-git-branching/images/remote-branches-3.png b/book/03-git-branching/images/remote-branches-3.png deleted file mode 100644 index f2a2d163..00000000 Binary files a/book/03-git-branching/images/remote-branches-3.png and /dev/null differ diff --git a/book/03-git-branching/images/remote-branches-4.png b/book/03-git-branching/images/remote-branches-4.png deleted file mode 100644 index 9047854e..00000000 Binary files a/book/03-git-branching/images/remote-branches-4.png and /dev/null differ diff --git a/book/03-git-branching/images/remote-branches-5.png b/book/03-git-branching/images/remote-branches-5.png deleted file mode 100644 index 78b10d28..00000000 Binary files a/book/03-git-branching/images/remote-branches-5.png and /dev/null differ diff --git a/book/03-git-branching/images/topic-branches-1.png b/book/03-git-branching/images/topic-branches-1.png deleted file mode 100644 index 5463092b..00000000 Binary files a/book/03-git-branching/images/topic-branches-1.png and /dev/null differ diff --git a/book/03-git-branching/images/topic-branches-2.png b/book/03-git-branching/images/topic-branches-2.png deleted file mode 100644 index 320e4e88..00000000 Binary files a/book/03-git-branching/images/topic-branches-2.png and /dev/null differ diff --git a/book/03-git-branching/images/two-branches.png b/book/03-git-branching/images/two-branches.png deleted file mode 100644 index 01b385c3..00000000 Binary files a/book/03-git-branching/images/two-branches.png and /dev/null differ diff --git a/book/03-git-branching/sections/basic-branching-and-merging.asc b/book/03-git-branching/sections/basic-branching-and-merging.asc index 36b8b56d..4ff6a4a3 100644 --- a/book/03-git-branching/sections/basic-branching-and-merging.asc +++ b/book/03-git-branching/sections/basic-branching-and-merging.asc @@ -14,7 +14,7 @@ En este momento, recibes una llamada avisándote de un problema crítico que has . Tras las pertinentes pruebas, fusionas (merge) esa rama y la envías (push) a la rama de producción. . Vuelves a la rama del tema en que andabas antes de la llamada y continuas tu trabajo. -[[_basic_branching]] +[[r_basic_branching]] ==== Procedimientos Básicos de Ramificación (((branches, basic workflow))) @@ -61,7 +61,7 @@ Basta con saltar de nuevo a la rama `master` y continuar trabajando a partir de Pero, antes de poder hacer eso, hemos de tener en cuenta que si tenemos cambios aún no confirmados en el directorio de trabajo o en el área de preparación, Git no nos permitirá saltar a otra rama con la que podríamos tener conflictos. Lo mejor es tener siempre un estado de trabajo limpio y despejado antes de saltar entre ramas. -Y, para ello, tenemos algunos procedimientos (stash y corregir confirmaciones), que vamos a ver más adelante en <<_git_stashing>>. +Y, para ello, tenemos algunos procedimientos (stash y corregir confirmaciones), que vamos a ver más adelante en <>. Por ahora, como tenemos confirmados todos los cambios, podemos saltar a la rama `master` sin problemas: [source,console] @@ -140,7 +140,7 @@ image::images/basic-branching-6.png[La rama `iss53` puede avanzar independientem Cabe destacar que todo el trabajo realizado en la rama `hotfix` no está en los archivos de la rama `iss53`. Si fuera necesario agregarlos, puedes fusionar (merge) la rama `master` sobre la rama `iss53` utilizando el comando `git merge master`, o puedes esperar hasta que decidas fusionar (merge) la rama `iss53` a la rama `master`. -[[_basic_merging]] +[[r_basic_merging]] ==== Procedimientos Básicos de Fusión (((branches, merging)))(((merging))) @@ -183,7 +183,7 @@ Por lo que puedes borrarla y cerrar manualmente el problema en el sistema de seg $ git branch -d iss53 ---- -[[_basic_merge_conflicts]] +[[r_basic_merge_conflicts]] ==== Principales Conflictos que Pueden Surgir en las Fusiones (((merging, conflicts))) @@ -270,7 +270,7 @@ Si deseas usar una herramienta distinta de la escogida por defecto (en mi caso ` [NOTE] ==== -Si necesitas herramientas más avanzadas para resolver conflictos de fusión más complicados, revisa la sección de fusionado en <<_advanced_merging>>. +Si necesitas herramientas más avanzadas para resolver conflictos de fusión más complicados, revisa la sección de fusionado en <>. ==== Tras salir de la herramienta de fusionado, Git preguntará si hemos resuelto todos los conflictos y la fusión ha sido satisfactoria. diff --git a/book/03-git-branching/sections/branch-management.asc b/book/03-git-branching/sections/branch-management.asc index 49262e37..86ea1c5b 100644 --- a/book/03-git-branching/sections/branch-management.asc +++ b/book/03-git-branching/sections/branch-management.asc @@ -1,4 +1,4 @@ -[[_branch_management]] +[[r_branch_management]] === Gestión de Ramas (((branches, managing))) diff --git a/book/03-git-branching/sections/nutshell.asc b/book/03-git-branching/sections/nutshell.asc index de1839b9..b96860ad 100644 --- a/book/03-git-branching/sections/nutshell.asc +++ b/book/03-git-branching/sections/nutshell.asc @@ -1,15 +1,15 @@ -[[_git_branches_overview]] +[[r_git_branches_overview]] === ¿Qué es una rama? Para entender realmente cómo ramifica Git, previamente hemos de examinar la forma en que almacena sus datos. -Recordando lo citado en <<_getting_started>>, Git no los almacena de forma incremental (guardando solo diferencias), sino que los almacena como una serie de instantáneas (copias puntuales de los archivos completos, tal y como se encuentran en ese momento). +Recordando lo citado en <>, Git no los almacena de forma incremental (guardando solo diferencias), sino que los almacena como una serie de instantáneas (copias puntuales de los archivos completos, tal y como se encuentran en ese momento). En cada confirmación de cambios (commit), Git almacena una instantánea de tu trabajo preparado. Dicha instantánea contiene además unos metadatos con el autor y el mensaje explicativo, y uno o varios apuntadores a las confirmaciones (commit) que sean padres directos de esta (un padre en los casos de confirmación normal, y múltiples padres en los casos de estar confirmando una fusión (merge) de dos o más ramas). Para ilustrar esto, vamos a suponer, por ejemplo, que tienes una carpeta con tres archivos, que preparas (stage) todos ellos y los confirmas (commit). -Al preparar los archivos, Git realiza una suma de control de cada uno de ellos (un resumen SHA-1, tal y como se mencionaba en <<_getting_started>>), almacena una copia de cada uno en el repositorio (estas copias se denominan "blobs"), y guarda cada suma de control en el área de preparación (staging area): +Al preparar los archivos, Git realiza una suma de control de cada uno de ellos (un resumen SHA-1, tal y como se mencionaba en <>), almacena una copia de cada uno en el repositorio (estas copias se denominan "blobs"), y guarda cada suma de control en el área de preparación (staging area): [source,console] ---- @@ -45,7 +45,7 @@ La única razón por la cual aparece en casi todos los repositorios es porque es .Una rama y su historial de confirmaciones image::images/branch-and-history.png[Una rama y su historial de confirmaciones.] -[[_create_new_branch]] +[[r_create_new_branch]] ==== Crear una Rama Nueva (((branches, creating))) @@ -84,7 +84,7 @@ f30ab (HEAD, master, testing) add feature #32 - ability to add new Puedes ver que las ramas ``master'' y ``testing'' están junto a la confirmación `f30ab`. -[[_switching_branches]] +[[r_switching_branches]] ==== Cambiar de Rama (((branches, switching))) @@ -145,12 +145,12 @@ $ vim test.rb $ git commit -a -m 'made other changes' ---- -Ahora el historial de tu proyecto diverge (ver <>). +Ahora el historial de tu proyecto diverge (ver <>). Has creado una rama y saltado a ella, has trabajado sobre ella; has vuelto a la rama original, y has trabajado también sobre ella. Los cambios realizados en ambas sesiones de trabajo están aislados en ramas independientes: puedes saltar libremente de una a otra según estimes oportuno. Y todo ello simplemente con tres comandos: `git branch`, `git checkout` y `git commit`. -[[divergent_history]] +[[rdivergent_history]] .Los registros de las ramas divergen image::images/advance-master.png[Los registros de las ramas divergen.] diff --git a/book/03-git-branching/sections/rebasing.asc b/book/03-git-branching/sections/rebasing.asc index 5bdf725c..d5c97fbe 100644 --- a/book/03-git-branching/sections/rebasing.asc +++ b/book/03-git-branching/sections/rebasing.asc @@ -1,4 +1,4 @@ -[[_rebasing]] +[[r_rebasing]] === Reorganizar el Trabajo Realizado (((rebasing))) @@ -7,7 +7,7 @@ En esta sección vas a aprender en qué consiste la reorganización, cómo utili ==== Reorganización Básica -Volviendo al ejemplo anterior, en la sección sobre fusiones <<_basic_merging>> puedes ver que has separado tu trabajo y realizado confirmaciones (commit) en dos ramas diferentes. +Volviendo al ejemplo anterior, en la sección sobre fusiones <> puedes ver que has separado tu trabajo y realizado confirmaciones (commit) en dos ramas diferentes. .El registro de confirmaciones inicial image::images/basic-rebase-1.png[El registro de confirmaciones inicial.] @@ -62,12 +62,12 @@ La reorganización vuelve a aplicar cambios de una rama de trabajo sobre otra ra ==== Algunas Reorganizaciones Interesantes También puedes aplicar una reorganización (rebase) sobre otra cosa además de sobre la rama de reorganización. -Por ejemplo, considera un historial como el de <>. +Por ejemplo, considera un historial como el de <>. Has ramificado a una rama puntual (`server`) para añadir algunas funcionalidades al proyecto, y luego has confirmado los cambios. Después, vuelves a la rama original para hacer algunos cambios en la parte cliente (rama `client`), y confirmas también esos cambios. Por último, vuelves sobre la rama `server` y haces algunos cambios más. -[[rbdiag_e]] +[[rrbdiag_e]] .Un historial con una rama puntual sobre otra rama puntual image::images/interesting-rebase-1.png[Un historial con una rama puntual sobre otra rama puntual.] @@ -85,7 +85,7 @@ Puede parecer un poco complicado, pero los resultados son realmente interesantes .Reorganizando una rama puntual fuera de otra rama puntual image::images/interesting-rebase-2.png[Reorganizando una rama puntual fuera de otra rama puntual.] -Y, tras esto, ya puedes avanzar la rama principal (ver <>): +Y, tras esto, ya puedes avanzar la rama principal (ver <>): [source,console] ---- @@ -93,7 +93,7 @@ $ git checkout master $ git merge client ---- -[[rbdiag_g]] +[[rrbdiag_g]] .Avance rápido de tu rama `master`, para incluir los cambios de la rama `client` image::images/interesting-rebase-3.png[Avance rápido de tu rama `master`, para incluir los cambios de la rama `client`.] @@ -105,9 +105,9 @@ Puedes reorganizar (rebase) la rama `server` sobre la rama `master` sin necesida $ git rebase master server ---- -Esto vuelca el trabajo de `server` sobre el de `master`, tal y como se muestra en <>. +Esto vuelca el trabajo de `server` sobre el de `master`, tal y como se muestra en <>. -[[rbdiag_h]] +[[rrbdiag_h]] .Reorganizando la rama `server` sobre la rama `master` image::images/interesting-rebase-4.png[Reorganizando la rama `server` sobre la rama `master`.] @@ -119,7 +119,7 @@ $ git checkout master $ git merge server ---- -Y por último puedes eliminar las ramas `client` y `server` porque ya todo su contenido ha sido integrado y no las vas a necesitar más, dejando tu registro tras todo este proceso tal y como se muestra en <>: +Y por último puedes eliminar las ramas `client` y `server` porque ya todo su contenido ha sido integrado y no las vas a necesitar más, dejando tu registro tras todo este proceso tal y como se muestra en <>: [source,console] ---- @@ -127,11 +127,11 @@ $ git branch -d client $ git branch -d server ---- -[[rbdiag_i]] +[[rrbdiag_i]] .Historial final de confirmaciones de cambio image::images/interesting-rebase-5.png[Historial final de confirmaciones de cambio.] -[[_rebase_peril]] +[[r_rebase_peril]] ==== Los Peligros de Reorganizar (((rebasing, perils of))) @@ -161,14 +161,14 @@ image::images/perils-of-rebasing-2.png[Traer (fetch) algunas confirmaciones de c A continuación, la persona que había llevado cambios al servidor central decide retroceder y reorganizar su trabajo; haciendo un `git push --force` para sobrescribir el registro en el servidor. Tu te traes (fetch) esos nuevos cambios desde el servidor. -[[_pre_merge_rebase_work]] +[[r_pre_merge_rebase_work]] .Alguien envio (push) confirmaciones (commits) reorganizadas, abandonando las confirmaciones en las que tu habías basado tu trabajo image::images/perils-of-rebasing-3.png[Alguien envií (push) confirmaciones (commits) reorganizadas, abandonando las confirmaciones en las que tu habías basado tu trabajo.] Ahora los dos están en un aprieto. Si haces `git pull` crearás una fusión confirmada, la cual incluirá ambas líneas del historial, y tu repositorio lucirá así: -[[_merge_rebase_work]] +[[r_merge_rebase_work]] .Vuelves a fusionar el mismo trabajo en una nueva fusión confirmada image::images/perils-of-rebasing-4.png[Vuelves a fusionar el mismo trabajo en una nueva fusión confirmada.] @@ -177,7 +177,7 @@ Es más, si luego tu envías (push) ese registro de vuelta al servidor, vas a in Lo que puede confundir aún más a la gente. Era más seguro asumir que el otro desarrollador no quería que `C4` y `C6` estuviesen en el historial; por ello había reorganizado su trabajo de esa manera. -[[_rebase_rebase]] +[[r_rebase_rebase]] ==== Reorganizar una Reorganización Si te encuentras en una situación como esta, Git tiene algunos trucos que pueden ayudarte. @@ -187,16 +187,16 @@ Además de la suma de control SHA-1, Git calcula una suma de control basada en e Si te traes el trabajo que ha sido sobreescrito y lo reorganizas sobre las nuevas confirmaciones de tu compañero, es posible que Git pueda identificar qué parte correspondía específicamente a tu trabajo y aplicarla de vuelta en la rama nueva. -Por ejemplo, en el caso anterior, si en vez de hacer una fusión cuando estábamos en <<_pre_merge_rebase_work>> ejecutamos `git rebase teamone/master`, Git hará lo siguiente: +Por ejemplo, en el caso anterior, si en vez de hacer una fusión cuando estábamos en <> ejecutamos `git rebase teamone/master`, Git hará lo siguiente: * Determinar el trabajo que es específico de nuestra rama (C2, C3, C4, C6, C7) * Determinar cuáles no son fusiones confirmadas (C2, C3, C4) * Determinar cuáles no han sido sobreescritas en la rama destino (solo C2 y C3, pues C4 corresponde al mismo parche que C4') * Aplicar dichas confirmaciones encima de `teamone/master` -Así que en vez del resultado que vimos en <<_merge_rebase_work>>, terminaremos con algo más parecido a <<_rebase_rebase_work>>. +Así que en vez del resultado que vimos en <>, terminaremos con algo más parecido a <>. -[[_rebase_rebase_work]] +[[r_rebase_rebase_work]] .Reorganizar encima de un trabajo sobreescrito reorganizado. image::images/perils-of-rebasing-5.png[Reorganizar encima de un trabajo sobreescrito reorganizado.] diff --git a/book/03-git-branching/sections/remote-branches.asc b/book/03-git-branching/sections/remote-branches.asc index 207898d9..0d5a5d49 100644 --- a/book/03-git-branching/sections/remote-branches.asc +++ b/book/03-git-branching/sections/remote-branches.asc @@ -1,4 +1,4 @@ -[[_remote_branches]] +[[r_remote_branches]] === Ramas Remotas (((branches, remote)))(((references, remote))) @@ -38,7 +38,7 @@ image::images/remote-branches-3.png[`git fetch` actualiza las referencias de tu Para ilustrar mejor el caso de tener múltiples servidores y cómo van las ramas remotas para esos proyectos remotos, supongamos que tienes otro servidor Git; utilizado por uno de tus equipos sprint, solamente para desarrollo. Este servidor se encuentra en `git.team1.ourcompany.com`. -Puedes incluirlo como una nueva referencia remota a tu proyecto actual, mediante el comando `git remote add`, tal y como vimos en <<_git_basics_chapter>>. +Puedes incluirlo como una nueva referencia remota a tu proyecto actual, mediante el comando `git remote add`, tal y como vimos en <>. Puedes denominar `teamone` a este remoto al asignarle este nombre a la URL. .Añadiendo otro servidor como remoto @@ -50,7 +50,7 @@ Debido a que dicho servidor es un subconjunto de los datos del servidor `origin` .Seguimiento de la rama remota a través de `teamone/master` image::images/remote-branches-5.png[Seguimiento de la rama remota a través de `teamone/master`.] -[[_pushing_branches]] +[[r_pushing_branches]] ==== Publicar (((pushing))) @@ -75,7 +75,7 @@ To https://github.com/schacon/simplegit Esto es un atajo. Git expande automáticamente el nombre de rama `serverfix` a `refs/heads/serverfix:refs/heads/serverfix`, que significa: ``coge mi rama local `serverfix` y actualiza con ella la rama `serverfix` del remoto''. -Volveremos más tarde sobre el tema de `refs/heads/`, viéndolo en detalle en <<_git_internals>>; por ahora, puedes ignorarlo. +Volveremos más tarde sobre el tema de `refs/heads/`, viéndolo en detalle en <>; por ahora, puedes ignorarlo. También puedes hacer `git push origin serverfix:serverfix`, que hace lo mismo; es decir: ``coge mi `serverfix` y hazlo el `serverfix` remoto''. Puedes utilizar este último formato para llevar una rama local a una rama remota con un nombre distinto. Si no quieres que se llame `serverfix` en el remoto, puedes lanzar, por ejemplo, `git push origin serverfix:awesomebranch`; para llevar tu rama `serverfix` local a la rama `awesomebranch` en el proyecto remoto. @@ -87,7 +87,7 @@ Si utilizas una dirección URL con HTTPS para enviar datos, el servidor Git te p Si no quieres escribir tu contraseña cada vez que haces un envío, puedes establecer un ``cache de credenciales''. La manera más sencilla de hacerlo es estableciéndolo en memoria por unos minutos, lo que puedes lograr fácilmente al ejecutar `git config --global credential.helper cache` -Para más información sobre las distintas opciones de cache de credenciales, véase <<_credential_caching>>. +Para más información sobre las distintas opciones de cache de credenciales, véase <>. ==== La próxima vez que tus colaboradores recuperen desde el servidor, obtendrán bajo la rama remota `origin/serverfix` una referencia a donde esté la versión de `serverfix` en el servidor: @@ -118,7 +118,7 @@ Switched to a new branch 'serverfix' Esto sí te da una rama local donde puedes trabajar, que comienza donde `origin/serverfix` estaba en ese momento. -[[_tracking_branches]] +[[r_tracking_branches]] ==== Hacer Seguimiento a las Ramas (((branches, tracking)))(((branches, upstream))) @@ -190,7 +190,7 @@ Si tienes una rama de seguimiento configurada como vimos en la última sección, Normalmente es mejor usar los comandos `fetch` y `merge` de manera explícita pues la magia de `git pull` puede resultar confusa. -[[_delete_branches]] +[[r_delete_branches]] ==== Eliminar Ramas Remotas Imagina que ya has terminado con una rama remota, es decir, tanto tú como tus colaboradores habéis completado una determinada funcionalidad y la habéis incorporado (merge) a la rama `master` en el remoto (o donde quiera que tengáis la rama de código estable). diff --git a/book/03-git-branching/sections/workflows.asc b/book/03-git-branching/sections/workflows.asc index 635f4634..02113bc2 100644 --- a/book/03-git-branching/sections/workflows.asc +++ b/book/03-git-branching/sections/workflows.asc @@ -20,7 +20,7 @@ image::images/lr-branches-1.png[Una vista lineal del ramificado progresivo estab Podría ser más sencillo pensar en las ramas como si fueran silos de almacenamiento, donde grupos de confirmaciones de cambio (commits) van siendo promocionados hacia silos más estables a medida que son probados y depurados. -[[lrbranch_b]] +[[rlrbranch_b]] .Una vista tipo ``silo'' del ramificado progresivo estable image::images/lr-branches-2.png[Una vista tipo ``silo'' del ramificado progresivo estable.] @@ -29,7 +29,7 @@ Algunos proyectos muy grandes suelen tener una rama denominada `propuestas` o `p La idea es mantener siempre diversas ramas en diversos grados de estabilidad; pero cuando alguna alcanza un estado más estable, la fusionamos con la rama inmediatamente superior a ella. Aunque no es obligatorio el trabajar con ramas de larga duración, realmente es práctico y útil, sobre todo en proyectos largos o complejos. -[[_topic_branch]] +[[r_topic_branch]] ==== Ramas Puntuales Las ramas puntuales, en cambio, son útiles en proyectos de cualquier tamaño. @@ -54,7 +54,7 @@ Puedes descartar la rama `iss91` (perdiendo las confirmaciones C5 y C6), y fusio .El historial tras fusionar `dumbidea` e `iss91v2` image::images/topic-branches-2.png[El historial tras fusionar `dumbidea` e `iss91v2`.] -Hablaremos un poco más sobre los distintos flujos de trabajo de tu proyecto Git en <<_distributed_git>>, así que antes de decidir qué estilo de ramificación usará tu próximo proyecto, asegúrate de haber leído ese capítulo. +Hablaremos un poco más sobre los distintos flujos de trabajo de tu proyecto Git en <>, así que antes de decidir qué estilo de ramificación usará tu próximo proyecto, asegúrate de haber leído ese capítulo. Es importante recordar que, mientras estás haciendo todo esto, todas las ramas son completamente locales. Cuando ramificas y fusionas, todo se realiza en tu propio repositorio Git. No hay ningún tipo de comunicación con ningún servidor. diff --git a/book/04-git-server/images/bitnami.png b/book/04-git-server/images/bitnami.png deleted file mode 100644 index b7929f48..00000000 Binary files a/book/04-git-server/images/bitnami.png and /dev/null differ diff --git a/book/04-git-server/images/git-instaweb.png b/book/04-git-server/images/git-instaweb.png deleted file mode 100644 index 6c56b710..00000000 Binary files a/book/04-git-server/images/git-instaweb.png and /dev/null differ diff --git a/book/04-git-server/images/gitlab-broadcast.png b/book/04-git-server/images/gitlab-broadcast.png deleted file mode 100644 index 5658f4e0..00000000 Binary files a/book/04-git-server/images/gitlab-broadcast.png and /dev/null differ diff --git a/book/04-git-server/images/gitlab-groups.png b/book/04-git-server/images/gitlab-groups.png deleted file mode 100644 index 486b4441..00000000 Binary files a/book/04-git-server/images/gitlab-groups.png and /dev/null differ diff --git a/book/04-git-server/images/gitlab-menu.png b/book/04-git-server/images/gitlab-menu.png deleted file mode 100644 index 902a7f96..00000000 Binary files a/book/04-git-server/images/gitlab-menu.png and /dev/null differ diff --git a/book/04-git-server/images/gitlab-users.png b/book/04-git-server/images/gitlab-users.png deleted file mode 100644 index 4e2b2090..00000000 Binary files a/book/04-git-server/images/gitlab-users.png and /dev/null differ diff --git a/book/04-git-server/sections/generating-ssh-key.asc b/book/04-git-server/sections/generating-ssh-key.asc index d2f217a7..7c9c19db 100644 --- a/book/04-git-server/sections/generating-ssh-key.asc +++ b/book/04-git-server/sections/generating-ssh-key.asc @@ -1,4 +1,4 @@ -[[_generate_ssh_key]] +[[r_generate_ssh_key]] === Generando tu clave pública SSH (((SSH keys))) diff --git a/book/04-git-server/sections/git-on-a-server.asc b/book/04-git-server/sections/git-on-a-server.asc index 32c5b77c..e1414eef 100644 --- a/book/04-git-server/sections/git-on-a-server.asc +++ b/book/04-git-server/sections/git-on-a-server.asc @@ -1,4 +1,4 @@ -[[_git_on_the_server]] +[[r_git_on_the_server]] === Configurando Git en un servidor Ahora vamos a cubrir la creación de un servicio de Git ejecutando estos protocolos en su propio servidor. @@ -31,7 +31,7 @@ $ cp -Rf my_project/.git my_project.git Hay un par de pequeñas diferencias en el archivo de configuración; pero para tú propósito, esto es casi la misma cosa. Toma el repositorio Git en sí mismo, sin un directorio de trabajo, y crea un directorio específicamente para él solo. -[[_bare_repo]] +[[r_bare_repo]] ==== Colocando un Repositorio Vacío en un Servidor Ahora que tienes una copia vacía de tú repositorio, todo lo que necesitas hacer es ponerlo en un servidor y establecer sus protocolos. diff --git a/book/04-git-server/sections/gitlab.asc b/book/04-git-server/sections/gitlab.asc index 1db18b91..15bf9d0a 100755 --- a/book/04-git-server/sections/gitlab.asc +++ b/book/04-git-server/sections/gitlab.asc @@ -18,10 +18,10 @@ Hay algunos métodos que puedes seguir para instalar GitLab. Para tener algo rápidamente, puedes descargar una máquina virtual o un instalador one-click desde https://bitnami.com/stack/gitlab[], y modificar la configuración para tu caso particular.(((bitnami))) -La pantalla de inicio de Bitnami (a la que se accede con alt-→); te dirá +La pantalla de inicio de Bitnami (a la que se accede con alt-→); te dirá la dirección IP y el usuario y contraseña utilizados para instalar GitLab. -[[bitnami]] +[[rbitnami]] .Página de login de la máquina virtual Bitnami. image::images/bitnami.png[Página de login de la máquina virtual Bitnami.] @@ -43,7 +43,7 @@ Gitlab, y entra con el usuario administrador. El usuario predeterminado es entres por primera vez). Una vez dentro, pulsa en el icono ``Admin area'' del menú superior derecho. -[[gitlab_menu]] +[[rgitlab_menu]] .El icono ``Admin area'' del menú de GitLab. image::images/gitlab-menu.png[El icono ``Admin area'' del menú de GitLab.] @@ -57,7 +57,7 @@ lógica de los proyectos que pertenecen al usuario. De este modo, si el usuario +jane+ tiene un proyecto llamado +project+, la URL de ese proyecto sería http://server/jane/project[]. -[[gitlab_users]] +[[rgitlab_users]] .Pantalla de administración de usuarios en GitLab. image::images/gitlab-users.png[Pantalla de administración de usuarios en GitLab.] @@ -72,7 +72,7 @@ espacio de nombres se perderá, así como cualquier grupo que le pertenezca. Esto es, por supuesto, la acción más permanente y destructiva, y casi nunca se usa. -[[_gitlab_groups_section]] +[[r_gitlab_groups_section]] ===== Grupos Un grupo de GitLab es un conjunto de proyectos, junto con los datos acerca @@ -81,7 +81,7 @@ específico (al igual que los usuarios). Por ejemplo, si el grupo +formacion+ tuviese un proyecto +materiales+ su URL sería: http://server/formacion/materiales[]. -[[gitlab_groups]] +[[rgitlab_groups]] .Pantalla de administración de grupos en GitLab. image::images/gitlab-groups.png[Pantalla de administración de grupos en GitLab.] @@ -159,7 +159,7 @@ Para trabajar en un proyecto GitLab lo más simple es tener acceso de escritura (push) sobre el repositorio git. Puedes añadir usuarios al proyecto en la sección ``Members'' de los ajustes del mismo, y asociar el usuario con un nivel de acceso (los niveles los hemos visto en -<<_gitlab_groups_section>>). Cualquier nivel de acceso tipo +<>). Cualquier nivel de acceso tipo ``Developer'' o superior permite al usuario enviar commits y ramas sin ninguna limitación. diff --git a/book/04-git-server/sections/gitweb.asc b/book/04-git-server/sections/gitweb.asc index ec521915..68808a1e 100644 --- a/book/04-git-server/sections/gitweb.asc +++ b/book/04-git-server/sections/gitweb.asc @@ -5,7 +5,7 @@ Ahora que ya tienes acceso básico de lectura/escritura y de solo-lectura a tu proyecto, puedes querer instalar un visualizador web. Git trae un script CGI, denominado GitWeb, que es el que usaremos para este propósito. -[[gitweb]] +[[rgitweb]] .The GitWeb web-based user interface. image::images/git-instaweb.png[El interface web Gitweb.] diff --git a/book/04-git-server/sections/hosted.asc b/book/04-git-server/sections/hosted.asc index 66d6eb4e..f14ba942 100644 --- a/book/04-git-server/sections/hosted.asc +++ b/book/04-git-server/sections/hosted.asc @@ -13,7 +13,7 @@ Actualmente hay bastantes opciones de alojamiento para elegir, cada una con sus ventajas e inconvenientes. Para ver una lista actualizada, mira la página acerca de alojamiento Git en el wiki principal de Git, en https://git.wiki.kernel.org/index.php/GitHosting[] -Nos ocuparemos en detalle de Github en <<_github>>, al ser el sitio de alojamiento +Nos ocuparemos en detalle de Github en <>, al ser el sitio de alojamiento de proyectos más grande, y donde probablemente encuentres otros proyectos en los que quieras participar, pero en cualquier caso hay docenas de sitios para elegir sin necesidad de configurar tu propio servidor Git. diff --git a/book/04-git-server/sections/protocols.asc b/book/04-git-server/sections/protocols.asc index 58ec2867..c36a7687 100755 --- a/book/04-git-server/sections/protocols.asc +++ b/book/04-git-server/sections/protocols.asc @@ -43,7 +43,7 @@ eficiente. La única razón que puedes tener para indicar expresamente el prefij 'file://' puede ser el querer una copia limpia del repositorio, descartando referencias u objetos superfluos. Esto sucede normalmente, tras haberlo importado desde otro sistema de control de versiones o algo similar (ver -<<_git_internals>> sobre tareas de mantenimiento). Habitualmente, usaremos el +<> sobre tareas de mantenimiento). Habitualmente, usaremos el camino (path) normal por ser casi siempre más rápido. Para añadir un repositorio local a un proyecto Git existente, puedes usar algo @@ -65,7 +65,7 @@ tienes un sistema de archivo compartido que todo el equipo pueda usar, preparar un repositorio es muy sencillo. Simplemente pones el repositorio básico en algún lugar donde todos tengan acceso a él y ajustas los permisos de lectura/escritura según proceda, tal y como lo harías para preparar cualquier otra carpeta -compartida. En la próxima sección, <<_git_on_the_server>>, veremos cómo exportar +compartida. En la próxima sección, <>, veremos cómo exportar un repositorio básico para conseguir esto. Este camino es también util para recuperar rápidamente el contenido del @@ -127,7 +127,7 @@ que usaríamos para clonar y, si tenemos permisos, para enviar cambios. (((protocols, dumb HTTP))) Si el servidor no dispone del protocolo HTTP ``Inteligente'', el cliente de Git intentará con el protocolo clásico HTTP que podemos llamar HTTP ``Tonto''. Este protocolo espera obtener el repositorio Git a través de un servidor web como si accediera a archivos normales. Lo bonito de este protocolo es la simplicidad para configurarlo. Básicamente, todo lo que tenemos que hacer es poner el repositorio Git bajo el directorio raíz de documentos HTTP y especificar un punto -de enganche (hook) de `post-update` (véase <<_git_hooks>>). +de enganche (hook) de `post-update` (véase <>). Desde este momento, cualquiera con acceso al servidor web donde se publique el repositorio podrá también clonarlo. Para permitir acceso lectura con HTTP, debes hacer algo similar a lo siguiente: [source,console] @@ -155,7 +155,7 @@ En este caso concreto, hemos utilizado la carpeta `/var/www/htdocs`, que es el habitual en configuraciones Apache, pero se puede usar cualquier servidor web estático. Basta con que se ponga el repositorio básico (bare) en la carpeta correspondiente. Los datos de Git son servidos como archivos estáticos simples -(véase <<_git_internals>> para saber exactamente cómo se sirven). +(véase <> para saber exactamente cómo se sirven). Por lo general tendremos que elegir servirlos en lectura/escritura con el servidor HTTP ``Inteligente'' o en solo lectura con el servidor ``tonto''. Mezclar @@ -194,7 +194,7 @@ Si utilizamos HTTP para envíos autenticados, proporcionar nuestras credenciales cada vez que se hace puede resultar más complicado que usar claves SSH. Hay, sin embargo, diversas utilidades de cacheo de credenciales, como Keychain en OSX o Credential Manager en Windows; haciendo esto menos incómodo. -Lee <<_credential_caching>> para ver cómo configurar el cacheo seguro de +Lee <> para ver cómo configurar el cacheo seguro de contraseñas HTTP en tu sistema. ==== El Procotolo SSH diff --git a/book/04-git-server/sections/setting-up-server.asc b/book/04-git-server/sections/setting-up-server.asc index 54b9879a..d69a967f 100644 --- a/book/04-git-server/sections/setting-up-server.asc +++ b/book/04-git-server/sections/setting-up-server.asc @@ -1,4 +1,4 @@ -[[_setting_up_server]] +[[r_setting_up_server]] === Configurando el servidor Vamos a avanzar en los ajustes de los accesos SSH en el lado del servidor. diff --git a/book/05-distributed-git/images/benevolent-dictator.png b/book/05-distributed-git/images/benevolent-dictator.png deleted file mode 100644 index a742a2ed..00000000 Binary files a/book/05-distributed-git/images/benevolent-dictator.png and /dev/null differ diff --git a/book/05-distributed-git/images/centralized.png b/book/05-distributed-git/images/centralized.png deleted file mode 100644 index 4f10782f..00000000 Binary files a/book/05-distributed-git/images/centralized.png and /dev/null differ diff --git a/book/05-distributed-git/images/git-diff-check.png b/book/05-distributed-git/images/git-diff-check.png deleted file mode 100644 index 5dc9ae40..00000000 Binary files a/book/05-distributed-git/images/git-diff-check.png and /dev/null differ diff --git a/book/05-distributed-git/images/integration-manager.png b/book/05-distributed-git/images/integration-manager.png deleted file mode 100644 index c877f592..00000000 Binary files a/book/05-distributed-git/images/integration-manager.png and /dev/null differ diff --git a/book/05-distributed-git/images/large-merges-1.png b/book/05-distributed-git/images/large-merges-1.png deleted file mode 100644 index b4910f2d..00000000 Binary files a/book/05-distributed-git/images/large-merges-1.png and /dev/null differ diff --git a/book/05-distributed-git/images/large-merges-2.png b/book/05-distributed-git/images/large-merges-2.png deleted file mode 100644 index 0fa474d1..00000000 Binary files a/book/05-distributed-git/images/large-merges-2.png and /dev/null differ diff --git a/book/05-distributed-git/images/managed-team-1.png b/book/05-distributed-git/images/managed-team-1.png deleted file mode 100644 index 84c6f1fb..00000000 Binary files a/book/05-distributed-git/images/managed-team-1.png and /dev/null differ diff --git a/book/05-distributed-git/images/managed-team-2.png b/book/05-distributed-git/images/managed-team-2.png deleted file mode 100644 index 677e095d..00000000 Binary files a/book/05-distributed-git/images/managed-team-2.png and /dev/null differ diff --git a/book/05-distributed-git/images/managed-team-3.png b/book/05-distributed-git/images/managed-team-3.png deleted file mode 100644 index b2f3e07c..00000000 Binary files a/book/05-distributed-git/images/managed-team-3.png and /dev/null differ diff --git a/book/05-distributed-git/images/managed-team-flow.png b/book/05-distributed-git/images/managed-team-flow.png deleted file mode 100644 index 9e4d93f5..00000000 Binary files a/book/05-distributed-git/images/managed-team-flow.png and /dev/null differ diff --git a/book/05-distributed-git/images/merging-workflows-1.png b/book/05-distributed-git/images/merging-workflows-1.png deleted file mode 100644 index 54a96fc0..00000000 Binary files a/book/05-distributed-git/images/merging-workflows-1.png and /dev/null differ diff --git a/book/05-distributed-git/images/merging-workflows-2.png b/book/05-distributed-git/images/merging-workflows-2.png deleted file mode 100644 index 6417c3de..00000000 Binary files a/book/05-distributed-git/images/merging-workflows-2.png and /dev/null differ diff --git a/book/05-distributed-git/images/merging-workflows-3.png b/book/05-distributed-git/images/merging-workflows-3.png deleted file mode 100644 index 1cb18c84..00000000 Binary files a/book/05-distributed-git/images/merging-workflows-3.png and /dev/null differ diff --git a/book/05-distributed-git/images/merging-workflows-4 2.png b/book/05-distributed-git/images/merging-workflows-4 2.png deleted file mode 100644 index 88a696a3..00000000 Binary files a/book/05-distributed-git/images/merging-workflows-4 2.png and /dev/null differ diff --git a/book/05-distributed-git/images/merging-workflows-4.png b/book/05-distributed-git/images/merging-workflows-4.png deleted file mode 100644 index d2f079e6..00000000 Binary files a/book/05-distributed-git/images/merging-workflows-4.png and /dev/null differ diff --git a/book/05-distributed-git/images/merging-workflows-5.png b/book/05-distributed-git/images/merging-workflows-5.png deleted file mode 100644 index 2eb25720..00000000 Binary files a/book/05-distributed-git/images/merging-workflows-5.png and /dev/null differ diff --git a/book/05-distributed-git/images/public-small-1.png b/book/05-distributed-git/images/public-small-1.png deleted file mode 100644 index afc27b29..00000000 Binary files a/book/05-distributed-git/images/public-small-1.png and /dev/null differ diff --git a/book/05-distributed-git/images/public-small-2.png b/book/05-distributed-git/images/public-small-2.png deleted file mode 100644 index 8632c0c3..00000000 Binary files a/book/05-distributed-git/images/public-small-2.png and /dev/null differ diff --git a/book/05-distributed-git/images/public-small-3.png b/book/05-distributed-git/images/public-small-3.png deleted file mode 100644 index c2c33f14..00000000 Binary files a/book/05-distributed-git/images/public-small-3.png and /dev/null differ diff --git a/book/05-distributed-git/images/rebasing-1.png b/book/05-distributed-git/images/rebasing-1.png deleted file mode 100644 index a66f47cd..00000000 Binary files a/book/05-distributed-git/images/rebasing-1.png and /dev/null differ diff --git a/book/05-distributed-git/images/rebasing-2.png b/book/05-distributed-git/images/rebasing-2.png deleted file mode 100644 index 7be83863..00000000 Binary files a/book/05-distributed-git/images/rebasing-2.png and /dev/null differ diff --git a/book/05-distributed-git/images/small-team-1.png b/book/05-distributed-git/images/small-team-1.png deleted file mode 100644 index f821bf6a..00000000 Binary files a/book/05-distributed-git/images/small-team-1.png and /dev/null differ diff --git a/book/05-distributed-git/images/small-team-2.png b/book/05-distributed-git/images/small-team-2.png deleted file mode 100644 index 33e88eac..00000000 Binary files a/book/05-distributed-git/images/small-team-2.png and /dev/null differ diff --git a/book/05-distributed-git/images/small-team-3.png b/book/05-distributed-git/images/small-team-3.png deleted file mode 100644 index 9cddbb43..00000000 Binary files a/book/05-distributed-git/images/small-team-3.png and /dev/null differ diff --git a/book/05-distributed-git/images/small-team-4.png b/book/05-distributed-git/images/small-team-4.png deleted file mode 100644 index abaeee34..00000000 Binary files a/book/05-distributed-git/images/small-team-4.png and /dev/null differ diff --git a/book/05-distributed-git/images/small-team-5.png b/book/05-distributed-git/images/small-team-5.png deleted file mode 100644 index ef3bba19..00000000 Binary files a/book/05-distributed-git/images/small-team-5.png and /dev/null differ diff --git a/book/05-distributed-git/images/small-team-6.png b/book/05-distributed-git/images/small-team-6.png deleted file mode 100644 index 16f429be..00000000 Binary files a/book/05-distributed-git/images/small-team-6.png and /dev/null differ diff --git a/book/05-distributed-git/images/small-team-7.png b/book/05-distributed-git/images/small-team-7.png deleted file mode 100644 index ee6934d8..00000000 Binary files a/book/05-distributed-git/images/small-team-7.png and /dev/null differ diff --git a/book/05-distributed-git/images/small-team-flow.png b/book/05-distributed-git/images/small-team-flow.png deleted file mode 100644 index 846e2c30..00000000 Binary files a/book/05-distributed-git/images/small-team-flow.png and /dev/null differ diff --git a/book/05-distributed-git/sections/contributing.asc b/book/05-distributed-git/sections/contributing.asc index 92c7f16f..19e8903c 100644 --- a/book/05-distributed-git/sections/contributing.asc +++ b/book/05-distributed-git/sections/contributing.asc @@ -1,4 +1,4 @@ -[[_contributing_project]] +[[r_contributing_project]] === Contribuyendo a un Proyecto (((contributing))) @@ -30,7 +30,7 @@ Si no tiene acceso de escritura, ¿cómo prefiere el proyecto aceptar el trabajo Todas estas preguntas pueden afectar la forma en que contribuye de manera efectiva a un proyecto y los flujos de trabajo preferidos o disponibles para usted. Cubriremos aspectos de cada uno de estos en una serie de casos de uso, pasando de simples a más complejos; debería poder construir los flujos de trabajo específicos que necesita en la práctica a partir de estos ejemplos. -[[_commit_guidelines]] +[[r_commit_guidelines]] ==== Pautas de confirmación Antes de comenzar a buscar casos de uso específicos, aquí hay una nota rápida sobre los mensajes de confirmación. @@ -90,7 +90,7 @@ El proyecto Git tiene mensajes de confirmación bien formateados. Intenta ejecut En los siguientes ejemplos, y en la mayor parte de este libro, en aras de la brevedad, este libro no tiene mensajes con un formato agradable como este; en cambio, usamos la opción `-m` para` git commit`. Haz lo que decimos, no como lo hacemos. -[[_private_team]] +[[r_private_team]] ==== Pequeño equipo privado (((contributing, private small team))) @@ -479,7 +479,7 @@ La secuencia del flujo de trabajo que vio aquí es algo como esto: .Basic sequence of this managed-team workflow. image::images/managed-team-flow.png[Basic sequence of this managed-team workflow.] -[[_public_project]] +[[r_public_project]] ==== Proyecto público bifurcado (((contributing, public small project))) @@ -585,7 +585,7 @@ $ git push -f myfork featureA Esto reescribe tu historial para que ahora parezca << psp_b >>. -[[psp_b]] +[[rpsp_b]] .Commit history after `featureA` work. image::images/public-small-2.png[Commit history after `featureA` work.] @@ -615,7 +615,7 @@ Ahora puede enviar al mantenedor un mensaje de que ha realizado los cambios soli .Commit history after `featureBv2` work. image::images/public-small-3.png[Commit history after `featureBv2` work.] -[[_project_over_email]] +[[r_project_over_email]] ==== Proyecto público a través de correo electrónico (((contributing, public large project))) diff --git a/book/05-distributed-git/sections/distributed-workflows.asc b/book/05-distributed-git/sections/distributed-workflows.asc index 62455677..f1b79606 100644 --- a/book/05-distributed-git/sections/distributed-workflows.asc +++ b/book/05-distributed-git/sections/distributed-workflows.asc @@ -31,7 +31,7 @@ Este flujo de trabajo es atractivo para mucha gente porque es un paradigma que m Esto tampoco se limita a los equipos pequeños. Con el modelo de ramificación de Git, es posible que cientos de desarrolladores trabajen con éxito en un único proyecto a través de docenas de ramas simultáneamente. -[[_integration_manager]] +[[r_integration_manager]] ==== Integration-Manager Workflow (((workflows, integration manager))) @@ -40,7 +40,7 @@ This scenario often includes a canonical repository that represents the ``offici To contribute to that project, you create your own public clone of the project and push your changes to it. Then, you can send a request to the maintainer of the main project to pull in your changes. The maintainer can then add your repository as a remote, test your changes locally, merge them into their branch, and push back to their repository. -The process works as follows (see <>): +The process works as follows (see <>): 1. The project maintainer pushes to their public repository. 2. A contributor clones that repository and makes changes. @@ -49,7 +49,7 @@ The process works as follows (see <>): 5. The maintainer adds the contributor's repo as a remote and merges locally. 6. The maintainer pushes merged changes to the main repository. -[[wfdiag_b]] +[[rwfdiag_b]] .Integration-manager workflow. image::images/integration-manager.png[Integration-manager workflow.] @@ -66,7 +66,7 @@ It's generally used by huge projects with hundreds of collaborators; one famous Various integration managers are in charge of certain parts of the repository; they're called lieutenants. All the lieutenants have one integration manager known as the benevolent dictator. The benevolent dictator's repository serves as the reference repository from which all the collaborators need to pull. -The process works like this (see <>): +The process works like this (see <>): 1. Regular developers work on their topic branch and rebase their work on top of `master`. The `master` branch is that of the dictator. @@ -74,7 +74,7 @@ The process works like this (see <>): 3. The dictator merges the lieutenants' `master` branches into the dictator's `master` branch. 4. The dictator pushes their `master` to the reference repository so the other developers can rebase on it. -[[wfdiag_c]] +[[rwfdiag_c]] .Benevolent dictator workflow. image::images/benevolent-dictator.png[Benevolent dictator workflow.] diff --git a/book/05-distributed-git/sections/maintaining.asc b/book/05-distributed-git/sections/maintaining.asc index 8b24c74b..3e68d7af 100644 --- a/book/05-distributed-git/sections/maintaining.asc +++ b/book/05-distributed-git/sections/maintaining.asc @@ -28,7 +28,7 @@ $ git checkout -b sc/ruby_client master Ahora estás listo para añadir el trabajo recibido en esta rama puntual y decidir si quieres incorporarlo en tus ramas de largo recorrido. -[[_patches_from_email]] +[[r_patches_from_email]] ==== Aplicando parches recibidos por e-mail (((email, applying patches from))) @@ -65,7 +65,7 @@ error: ticgit.gemspec: patch does not apply Si no obtienes salida, entonces el parche debería aplicarse limpiamente. Este comando también devuelve un estado distinto de cero si la comprobación falla, por lo que puedes usarlo en scripts. -[[_git_am]] +[[r_git_am]] ===== Aplicando un parche con `am` (((git commands, am))) @@ -181,7 +181,7 @@ Esto está bien si tienes guardados varios parches, ya que puedes revisar el par Una vez aplicados y confirmados todos los parches de tu rama puntual, puedes decidir cómo y cuándo integrarlos en una rama de largo recorrido. -[[_checking_out_remotes]] +[[r_checking_out_remotes]] ==== Recuperando ramas remotas (((branches, remote))) @@ -217,7 +217,7 @@ From https://github.com/onetimeguy/project Merge made by recursive. ----- -[[_what_is_introduced]] +[[r_what_is_introduced]] ==== Decidiendo qué introducir (((branches, diffing))) @@ -299,13 +299,13 @@ Tienes varias opciones y vamos a ver algunas de ellas. Un flujo de trabajo sencillo integra tu trabajo en tu rama `master`. En este escenario, tienes una rama `master` que contiene básicamente código estable. Cuando tienes trabajo propio en una rama puntual o trabajo aportado por algún colaborador que ya has verificado, lo integras en tu rama `master`, borras la rama puntual y continúas el proceso. -Si tenemos un repositorio con trabajo en dos ramas llamadas `ruby_client` y `php_client`, tal y como se muestra en <> e integramos primero `ruby_client` y luego `php_client`, entonces tu historial terminará con este aspecto <>. +Si tenemos un repositorio con trabajo en dos ramas llamadas `ruby_client` y `php_client`, tal y como se muestra en <> e integramos primero `ruby_client` y luego `php_client`, entonces tu historial terminará con este aspecto <>. -[[merwf_a]] +[[rmerwf_a]] .Historial con varias ramas puntuales. image::images/merging-workflows-1.png[Historial con varias ramas puntuales.] -[[merwf_b]] +[[rmerwf_b]] .Tras integrar una rama puntual. image::images/merging-workflows-2.png[Tras integrar una rama puntual.] @@ -314,17 +314,17 @@ Este es probablemente el flujo de trabajo más simple y puede llegar a causar pr Si tienes un proyecto más importante, podrías preferir usar un ciclo de integración en dos fases. En este escenario, tienes dos ramas de largo recorrido, `master` y `develop`, y decides que la rama `master` sólo se actualiza cuando se llega a una versión muy estable y todo el código nuevo está integrado en la rama `develop`. Ambas ramas de envían habitualmente al repositorio público. -Cada vez que tengas una nueva rama puntual para integrar en (<>), primero la fusionas con la rama `develop` (<>); luego, tras etiquetar la versión, avanzas la rama `master` hasta el punto donde se encuentre la ahora estable rama `develop` (<>). +Cada vez que tengas una nueva rama puntual para integrar en (<>), primero la fusionas con la rama `develop` (<>); luego, tras etiquetar la versión, avanzas la rama `master` hasta el punto donde se encuentre la ahora estable rama `develop` (<>). -[[merwf_c]] +[[rmerwf_c]] .Antes de integrar una rama puntual. image::images/merging-workflows-3.png[Antes de integrar una rama puntual.] -[[merwf_d]] +[[rmerwf_d]] .Tras integrar una rama puntual. image::images/merging-workflows-4.png[Tras integrar una rama puntual.] -[[merwf_e]] +[[rmerwf_e]] .Tras el lanzamiento de una rama puntual. image::images/merging-workflows-5.png[Tras el lanzamiento de una rama puntual.] @@ -336,11 +336,11 @@ Entonces, cuando el código de esa rama sea estable y pase las pruebas, lo puede (((workflows, "merging (large)"))) El proyecto Git tiene cuatro ramas de largo recorrido: `master`, `next`, y `pu` (proposed updates, actualizaciones propuestas) para trabajos nuevos, y `maint` para trabajos de mantenimiento de versiones anteriores. -Cuando los colaboradores introducen nuevos trabajos, se recopilan en ramas puntuales en el repositorio del responsable de mantenimiento, de manera similar a la que se ha descrito (ver <>). +Cuando los colaboradores introducen nuevos trabajos, se recopilan en ramas puntuales en el repositorio del responsable de mantenimiento, de manera similar a la que se ha descrito (ver <>). En este punto, los nuevos trabajos se evalúan para decidir si son seguros y si están listos para los usuarios o si por el contrario necesitan más trabajo. Si son seguros, se integran en la rama `next`, y se envía dicha rama al repositorio público para que todo el mundo pueda probar las nuevas funcionalidades ya integradas. -[[merwf_f]] +[[rmerwf_f]] .Gestionando un conjunto complejo de ramas puntuales paralelas. image::images/large-merges-1.png[Gestionando un conjunto complejo de ramas puntuales paralelas.] @@ -355,7 +355,7 @@ Cuando una rama puntual se ha integrado en la rama `master`, se elimina del repo El proyecto Git también tiene una rama `maint` creada a partir de la última versión para ofrecer parches, en caso de que fuera necesaria una versión de mantenimiento. Así, cuando clonas el repositorio de Git, tienes cuatro ramas que puedes recuperar para evaluar el proyecto en diferentes etapas de desarrollo, dependiendo de si quieres tener una versión muy avanzada o de cómo quieras contribuir. De esta forma, el responsable de mantenimiento tiene un flujo de trabajo estructurado para ayudarle a aprobar las nuevas contribuciones. -[[_rebase_cherry_pick]] +[[r_rebase_cherry_pick]] ===== Flujos de trabajo reorganizando o entresacando (((workflows, rebasing and cherry-picking))) @@ -411,14 +411,14 @@ Ahora, cuando hagas una integración que resuelva conflictos, la resolución se Si fuera necesario, puedes interactuar con la cache de rerere usando el comando `git rerere`. Cuando se invoca sin ningún parámetro adicional, Git comprueba su base de datos de resoluciones en busca de coincidencias con cualquier conflicto durante la integración actual e intenta resolverlo (aunque se hace automáticamente en caso de que `rerere.enabled` sea `true`). -También existen subcomandos para ver qué se grabará, para eliminar de la caché una resolución específica y para limpiar completamante la caché. Veremos más detalles sobre rerere en <<_rerere>>. +También existen subcomandos para ver qué se grabará, para eliminar de la caché una resolución específica y para limpiar completamante la caché. Veremos más detalles sobre rerere en <>. -[[_tagging_releases]] +[[r_tagging_releases]] ==== Etiquetando tus versiones (((tags)))(((tags, signing))) Cuando decides lanzar una versión, probablemente quieras etiquetarla para poder generarla más adelante en cualquier momento. -Puedes crear una nueva etiqueta siguiendo los pasos descritos en <<_git_basics_chapter>>. +Puedes crear una nueva etiqueta siguiendo los pasos descritos en <>. Si decides firmar la etiqueta como responsable de mantenimiento, el etiquetado sería algo así: [source,console] @@ -469,7 +469,7 @@ $ git show maintainer-pgp-pub | gpg --import Esa clave se puede usar para verificar todas tus etiquetas firmadas. Además, si incluyes instrucciones en el mensaje de la etiqueta, el comando `git show ` permitirá que el usuario final obtenga instrucciones más específicas sobre el proceso de verificación de etiquetas. -[[_build_number]] +[[r_build_number]] ==== Generando un número de compilación (((build numbers)))(((git commands, describe))) @@ -490,7 +490,7 @@ El comando `git describe` da preferencia a etiquetas anotadas (etiquetas creadas También puedes usar esta descripción como objetivo de un comando `checkout` o `show`, aunque depende de la parte final del valor SHA-1 abreviado, por lo que podría no ser válida para siempre. Por ejemplo, recientemente el núcleo de Linux pasó de 8 a 10 caracteres para asegurar la unicidad del objeto SHA-1, por lo que los nombres antiguos devueltos por `git describe` fueron invalidados. -[[_preparing_release]] +[[r_preparing_release]] ==== Preparando una versión (((releasing)))(((git commands, archive))) @@ -515,7 +515,7 @@ $ git archive master --prefix='project/' --format=zip > `git describe master`.zi Ahora tienes tanto un archivo tar como zip con la nueva versión de tu proyecto, listos para subirlos a tu sitio web o para enviarlos por e-mail. -[[_the_shortlog]] +[[r_the_shortlog]] ==== El registro resumido (((git commands, shortlog))) @@ -541,4 +541,4 @@ Tom Preston-Werner (4): Regenerated gemspec for version 1.0.2 ----- -Consigues un resumen limpio de todos los commits desde la versión v1.0.1, agrupados por autor, que puedes enviar por correo electrónico a tu lista. \ No newline at end of file +Consigues un resumen limpio de todos los commits desde la versión v1.0.1, agrupados por autor, que puedes enviar por correo electrónico a tu lista. diff --git a/book/06-github/images/2fa-1.png b/book/06-github/images/2fa-1.png deleted file mode 100644 index 20a6e599..00000000 Binary files a/book/06-github/images/2fa-1.png and /dev/null differ diff --git a/book/06-github/images/account-settings.png b/book/06-github/images/account-settings.png deleted file mode 100644 index 622171a6..00000000 Binary files a/book/06-github/images/account-settings.png and /dev/null differ diff --git a/book/06-github/images/avatar-crop.png b/book/06-github/images/avatar-crop.png deleted file mode 100644 index cd1671ae..00000000 Binary files a/book/06-github/images/avatar-crop.png and /dev/null differ diff --git a/book/06-github/images/blink-01-start.png b/book/06-github/images/blink-01-start.png deleted file mode 100644 index be140e19..00000000 Binary files a/book/06-github/images/blink-01-start.png and /dev/null differ diff --git a/book/06-github/images/blink-02-pr.png b/book/06-github/images/blink-02-pr.png deleted file mode 100644 index 96816571..00000000 Binary files a/book/06-github/images/blink-02-pr.png and /dev/null differ diff --git a/book/06-github/images/blink-03-pull-request-open.png b/book/06-github/images/blink-03-pull-request-open.png deleted file mode 100644 index 70350865..00000000 Binary files a/book/06-github/images/blink-03-pull-request-open.png and /dev/null differ diff --git a/book/06-github/images/blink-04-email.png b/book/06-github/images/blink-04-email.png deleted file mode 100644 index af3090e7..00000000 Binary files a/book/06-github/images/blink-04-email.png and /dev/null differ diff --git a/book/06-github/images/blink-04-pr-comment.png b/book/06-github/images/blink-04-pr-comment.png deleted file mode 100644 index 4e31e773..00000000 Binary files a/book/06-github/images/blink-04-pr-comment.png and /dev/null differ diff --git a/book/06-github/images/blink-05-general-comment.png b/book/06-github/images/blink-05-general-comment.png deleted file mode 100644 index 1c3f4f3e..00000000 Binary files a/book/06-github/images/blink-05-general-comment.png and /dev/null differ diff --git a/book/06-github/images/blink-06-final.png b/book/06-github/images/blink-06-final.png deleted file mode 100644 index 06dc9de6..00000000 Binary files a/book/06-github/images/blink-06-final.png and /dev/null differ diff --git a/book/06-github/images/blink-pull-request-open copy.png b/book/06-github/images/blink-pull-request-open copy.png deleted file mode 100644 index ad7976e3..00000000 Binary files a/book/06-github/images/blink-pull-request-open copy.png and /dev/null differ diff --git a/book/06-github/images/blink-pull-request-open.png b/book/06-github/images/blink-pull-request-open.png deleted file mode 100644 index 3c43df3c..00000000 Binary files a/book/06-github/images/blink-pull-request-open.png and /dev/null differ diff --git a/book/06-github/images/collaborators.png b/book/06-github/images/collaborators.png deleted file mode 100644 index ba126100..00000000 Binary files a/book/06-github/images/collaborators.png and /dev/null differ diff --git a/book/06-github/images/email-settings.png b/book/06-github/images/email-settings.png deleted file mode 100644 index 0291aeac..00000000 Binary files a/book/06-github/images/email-settings.png and /dev/null differ diff --git a/book/06-github/images/emoji.png b/book/06-github/images/emoji.png deleted file mode 100644 index 83c8cd21..00000000 Binary files a/book/06-github/images/emoji.png and /dev/null differ diff --git a/book/06-github/images/forkbutton.png b/book/06-github/images/forkbutton.png deleted file mode 100644 index 9bc4c798..00000000 Binary files a/book/06-github/images/forkbutton.png and /dev/null differ diff --git a/book/06-github/images/hubot.png b/book/06-github/images/hubot.png deleted file mode 100644 index 510b265f..00000000 Binary files a/book/06-github/images/hubot.png and /dev/null differ diff --git a/book/06-github/images/maint-01-email.png b/book/06-github/images/maint-01-email.png deleted file mode 100644 index 1477b36d..00000000 Binary files a/book/06-github/images/maint-01-email.png and /dev/null differ diff --git a/book/06-github/images/maint-02-merge.png b/book/06-github/images/maint-02-merge.png deleted file mode 100644 index 69efa4b6..00000000 Binary files a/book/06-github/images/maint-02-merge.png and /dev/null differ diff --git a/book/06-github/images/maint-03-email-resp.png b/book/06-github/images/maint-03-email-resp.png deleted file mode 100644 index dbd3e648..00000000 Binary files a/book/06-github/images/maint-03-email-resp.png and /dev/null differ diff --git a/book/06-github/images/maint-04-target.png b/book/06-github/images/maint-04-target.png deleted file mode 100644 index 0b153962..00000000 Binary files a/book/06-github/images/maint-04-target.png and /dev/null differ diff --git a/book/06-github/images/maint-05-mentions.png b/book/06-github/images/maint-05-mentions.png deleted file mode 100644 index 35b60f3d..00000000 Binary files a/book/06-github/images/maint-05-mentions.png and /dev/null differ diff --git a/book/06-github/images/maint-06-unsubscribe.png b/book/06-github/images/maint-06-unsubscribe.png deleted file mode 100644 index eaf6e2cf..00000000 Binary files a/book/06-github/images/maint-06-unsubscribe.png and /dev/null differ diff --git a/book/06-github/images/maint-07-notifications.png b/book/06-github/images/maint-07-notifications.png deleted file mode 100644 index 7d07a4b2..00000000 Binary files a/book/06-github/images/maint-07-notifications.png and /dev/null differ diff --git a/book/06-github/images/maint-08-notifications-page.png b/book/06-github/images/maint-08-notifications-page.png deleted file mode 100644 index d4998614..00000000 Binary files a/book/06-github/images/maint-08-notifications-page.png and /dev/null differ diff --git a/book/06-github/images/maint-09-contrib.png b/book/06-github/images/maint-09-contrib.png deleted file mode 100644 index f6d9af3c..00000000 Binary files a/book/06-github/images/maint-09-contrib.png and /dev/null differ diff --git a/book/06-github/images/maint-10-default-branch.png b/book/06-github/images/maint-10-default-branch.png deleted file mode 100644 index bd251d6c..00000000 Binary files a/book/06-github/images/maint-10-default-branch.png and /dev/null differ diff --git a/book/06-github/images/maint-11-transfer.png b/book/06-github/images/maint-11-transfer.png deleted file mode 100644 index 5dc5724c..00000000 Binary files a/book/06-github/images/maint-11-transfer.png and /dev/null differ diff --git a/book/06-github/images/markdown-01-example.png b/book/06-github/images/markdown-01-example.png deleted file mode 100644 index 10bbf18c..00000000 Binary files a/book/06-github/images/markdown-01-example.png and /dev/null differ diff --git a/book/06-github/images/markdown-02-tasks.png b/book/06-github/images/markdown-02-tasks.png deleted file mode 100644 index 6dafbc73..00000000 Binary files a/book/06-github/images/markdown-02-tasks.png and /dev/null differ diff --git a/book/06-github/images/markdown-03-task-summary.png b/book/06-github/images/markdown-03-task-summary.png deleted file mode 100644 index 536aa094..00000000 Binary files a/book/06-github/images/markdown-03-task-summary.png and /dev/null differ diff --git a/book/06-github/images/markdown-04-fenced-code.png b/book/06-github/images/markdown-04-fenced-code.png deleted file mode 100644 index ca3482f9..00000000 Binary files a/book/06-github/images/markdown-04-fenced-code.png and /dev/null differ diff --git a/book/06-github/images/markdown-05-quote.png b/book/06-github/images/markdown-05-quote.png deleted file mode 100644 index 02a8451a..00000000 Binary files a/book/06-github/images/markdown-05-quote.png and /dev/null differ diff --git a/book/06-github/images/markdown-06-emoji-complete.png b/book/06-github/images/markdown-06-emoji-complete.png deleted file mode 100644 index ce949200..00000000 Binary files a/book/06-github/images/markdown-06-emoji-complete.png and /dev/null differ diff --git a/book/06-github/images/markdown-07-emoji.png b/book/06-github/images/markdown-07-emoji.png deleted file mode 100644 index b535756d..00000000 Binary files a/book/06-github/images/markdown-07-emoji.png and /dev/null differ diff --git a/book/06-github/images/markdown-08-drag-drop.png b/book/06-github/images/markdown-08-drag-drop.png deleted file mode 100644 index 1dfb3b98..00000000 Binary files a/book/06-github/images/markdown-08-drag-drop.png and /dev/null differ diff --git a/book/06-github/images/mentions-01-syntax.png b/book/06-github/images/mentions-01-syntax.png deleted file mode 100644 index c960b0c9..00000000 Binary files a/book/06-github/images/mentions-01-syntax.png and /dev/null differ diff --git a/book/06-github/images/mentions-02-render.png b/book/06-github/images/mentions-02-render.png deleted file mode 100644 index 5b4bfee3..00000000 Binary files a/book/06-github/images/mentions-02-render.png and /dev/null differ diff --git a/book/06-github/images/mentions-03-closed.png b/book/06-github/images/mentions-03-closed.png deleted file mode 100644 index cf3ef9e2..00000000 Binary files a/book/06-github/images/mentions-03-closed.png and /dev/null differ diff --git a/book/06-github/images/new-repo.png b/book/06-github/images/new-repo.png deleted file mode 100644 index 485515bd..00000000 Binary files a/book/06-github/images/new-repo.png and /dev/null differ diff --git a/book/06-github/images/neworg.png b/book/06-github/images/neworg.png deleted file mode 100644 index db47fff0..00000000 Binary files a/book/06-github/images/neworg.png and /dev/null differ diff --git a/book/06-github/images/newrepo.png b/book/06-github/images/newrepo.png deleted file mode 100644 index cd508f16..00000000 Binary files a/book/06-github/images/newrepo.png and /dev/null differ diff --git a/book/06-github/images/newrepoform.png b/book/06-github/images/newrepoform.png deleted file mode 100644 index 28fa6a7e..00000000 Binary files a/book/06-github/images/newrepoform.png and /dev/null differ diff --git a/book/06-github/images/notifications.png b/book/06-github/images/notifications.png deleted file mode 100644 index 6768db4d..00000000 Binary files a/book/06-github/images/notifications.png and /dev/null differ diff --git a/book/06-github/images/orgs-01-page.png b/book/06-github/images/orgs-01-page.png deleted file mode 100644 index 149773fe..00000000 Binary files a/book/06-github/images/orgs-01-page.png and /dev/null differ diff --git a/book/06-github/images/orgs-02-teams.png b/book/06-github/images/orgs-02-teams.png deleted file mode 100644 index 46f5f2ce..00000000 Binary files a/book/06-github/images/orgs-02-teams.png and /dev/null differ diff --git a/book/06-github/images/orgs-03-audit.png b/book/06-github/images/orgs-03-audit.png deleted file mode 100644 index 4f063989..00000000 Binary files a/book/06-github/images/orgs-03-audit.png and /dev/null differ diff --git a/book/06-github/images/pr-01-fail.png b/book/06-github/images/pr-01-fail.png deleted file mode 100644 index 80331c1d..00000000 Binary files a/book/06-github/images/pr-01-fail.png and /dev/null differ diff --git a/book/06-github/images/pr-02-merge-fix.png b/book/06-github/images/pr-02-merge-fix.png deleted file mode 100644 index 9da16322..00000000 Binary files a/book/06-github/images/pr-02-merge-fix.png and /dev/null differ diff --git a/book/06-github/images/reposettingslink.png b/book/06-github/images/reposettingslink.png deleted file mode 100644 index 45e60162..00000000 Binary files a/book/06-github/images/reposettingslink.png and /dev/null differ diff --git a/book/06-github/images/scripting-01-services.png b/book/06-github/images/scripting-01-services.png deleted file mode 100644 index 07c20103..00000000 Binary files a/book/06-github/images/scripting-01-services.png and /dev/null differ diff --git a/book/06-github/images/scripting-02-email-service.png b/book/06-github/images/scripting-02-email-service.png deleted file mode 100644 index 209bfe76..00000000 Binary files a/book/06-github/images/scripting-02-email-service.png and /dev/null differ diff --git a/book/06-github/images/scripting-03-webhook.png b/book/06-github/images/scripting-03-webhook.png deleted file mode 100644 index 103eb92a..00000000 Binary files a/book/06-github/images/scripting-03-webhook.png and /dev/null differ diff --git a/book/06-github/images/scripting-04-webhook-debug.png b/book/06-github/images/scripting-04-webhook-debug.png deleted file mode 100644 index 617e41ee..00000000 Binary files a/book/06-github/images/scripting-04-webhook-debug.png and /dev/null differ diff --git a/book/06-github/images/scripting-05-access-token.png b/book/06-github/images/scripting-05-access-token.png deleted file mode 100644 index 17507717..00000000 Binary files a/book/06-github/images/scripting-05-access-token.png and /dev/null differ diff --git a/book/06-github/images/scripting-06-comment.png b/book/06-github/images/scripting-06-comment.png deleted file mode 100644 index 52448174..00000000 Binary files a/book/06-github/images/scripting-06-comment.png and /dev/null differ diff --git a/book/06-github/images/scripting-07-status.png b/book/06-github/images/scripting-07-status.png deleted file mode 100644 index a34314d9..00000000 Binary files a/book/06-github/images/scripting-07-status.png and /dev/null differ diff --git a/book/06-github/images/signup.png b/book/06-github/images/signup.png deleted file mode 100644 index 916a882c..00000000 Binary files a/book/06-github/images/signup.png and /dev/null differ diff --git a/book/06-github/images/ssh-keys.png b/book/06-github/images/ssh-keys.png deleted file mode 100644 index b9dec471..00000000 Binary files a/book/06-github/images/ssh-keys.png and /dev/null differ diff --git a/book/06-github/images/your-profile.png b/book/06-github/images/your-profile.png deleted file mode 100644 index 50fa0c1e..00000000 Binary files a/book/06-github/images/your-profile.png and /dev/null differ diff --git a/book/06-github/sections/1-setting-up-account.asc b/book/06-github/sections/1-setting-up-account.asc index c17a2a7b..da637518 100644 --- a/book/06-github/sections/1-setting-up-account.asc +++ b/book/06-github/sections/1-setting-up-account.asc @@ -39,7 +39,7 @@ comienzas a hacer cosas como bifurcar (fork) proyectos y enviar tus propios cambios más tarde. Si prefieres usar SSH, necesitas configurar una clave pública. Si aun no -la tienes, mira cómo generarla en <<_generate_ssh_key>>.) +la tienes, mira cómo generarla en <>.) Abre tu panel de control de la cuenta utilizando el enlace de la parte superior derecha de la ventana: @@ -63,7 +63,7 @@ trabajo" de modo que si tienes que revocar alguna clave más tarde, te resultar más fácil decidir cuál es. ==== -[[_personal_avatar]] +[[r_personal_avatar]] ==== Tu icono También, si quieres, puedes reemplazar el icono (avatar) que te generaron para @@ -95,11 +95,11 @@ en tus contribuciones (commits) y quieres que GitHub sepa que son de tu cuenta, necesitas añadirlas todas en la sección Emails de la sección de administración. -[[_add_email_addresses]] +[[r_add_email_addresses]] .Añadiendo direcciones de correo image::images/email-settings.png[Añadiendo direcciones de correo.] -En <<_add_email_addresses>> podemos ver los diferentes estados posibles. La +En <> podemos ver los diferentes estados posibles. La dirección inicial se verifica y se utiliza como dirección principal, lo que significa que es donde vas a recibir cualquier notificación. La siguiente dirección se puede verificar y ponerla entonces como dirección principal, diff --git a/book/06-github/sections/2-contributing.asc b/book/06-github/sections/2-contributing.asc index 255ea4fa..17bc358c 100755 --- a/book/06-github/sections/2-contributing.asc +++ b/book/06-github/sections/2-contributing.asc @@ -42,7 +42,7 @@ En unos segundos te redireccionarán a una página nueva de proyecto, en tu cuenta y con tu propia copia del código fuente. -[[_github_flow]] +[[r_github_flow]] ==== El Flujo de Trabajo en GitHub (((GitHub, Flow))) @@ -51,7 +51,7 @@ específico, centrado en las solicitudes de integración (``pull request''). Este flujo es válido tanto si colaboras con un pequeño equipo en un repositorio compartido como si lo haces en una gran red de participantes con docenas de bifurcaciones particulares. -Se centra en el workflow <<_topic_branch>> cubierto en <<_git_branching>>. +Se centra en el workflow <> cubierto en <>. El funcionamiento habitual es el siguiente: @@ -65,7 +65,7 @@ commits. la rama con tus cambios o bien rechazándolos. Este es, básicamente, el flujo de trabajo del Responsable de Integración visto -en <<_integration_manager>>, pero en lugar de usar el correo para comunicarnos +en <>, pero en lugar de usar el correo para comunicarnos y revisar los cambios, lo que se hace es usar las herramientas web de GitHub. Veamos un ejemplo de cómo proponer un cambio en un proyecto de código abierto @@ -185,7 +185,7 @@ En este punto, el propietario puede revisar el cambio sugerido e incorporarlo (merge) al proyecto, o bien rechazarlo o comentarlo. Por ejemplo, si le gusta la idea pero prefiere esperar un poco. -La discusión, en los workflow de <<_distributed_git>>, tiene lugar por +La discusión, en los workflow de <>, tiene lugar por correo electrónico, mientras que en GitHub tiene lugar en línea. El propietario del proyecto puede revisar el diff y dejar un comentario pulsando en cualquier línea del diff. @@ -199,17 +199,17 @@ cambios del repositorio) recibirán una notificación. Más tarde veremos cómo personalizar esto, pero si las notificaciones están activas, Tony recibiría un correo como este: -[[_email_notification]] +[[r_email_notification]] .Comentarios enviados en notificaciones de correo image::images/blink-04-email.png[Correo de notificación] -Cualquiera puede añadir sus propios comentarios. En <<_pr_discussion>> +Cualquiera puede añadir sus propios comentarios. En <> vemos un ejemplo de propietario de proyecto comentando tanto una línea del código como dejando un comentario general en la sección de discusión. Puedes comprobar que los comentarios del código se insertan igualmente en la conversación. -[[_pr_discussion]] +[[r_pr_discussion]] .Página de discusión del Pull Request image::images/blink-05-general-comment.png[Página de discusión del PR] @@ -223,7 +223,7 @@ nuevamente y, cuando visiten la página, verán lo que ha cambiado. De hecho, al ver que un cambio en una línea de código tenía ya un comentario, GitHub se da cuenta y oculta el diff obsoleto. -[[_pr_final]] +[[r_pr_final]] .Pull Request final image::images/blink-06-final.png[PR final] @@ -231,7 +231,7 @@ Es interesante notar que si pulsas en ``Files Changed'' dentro del Pull Request, verás el ``diff unificado'', es decir, los cambios que se introducirían en la rama principal si la otra rama fuera fusionada. En términos de git, lo que hace es mostrarte la salida del comando -`git diff master ... `. Mira en <<_what_is_introduced>> para saber +`git diff master ... `. Mira en <> para saber más sobre este tipo de diff. Otra cosa interesante es que GitHub también comprueba si el Pull Request @@ -286,7 +286,7 @@ los parches no son directamente alterados, sino que se realiza un nuevo commit en la rama para enviar la diferencia que materializa esas sugerencias, haciendo avanzar la conversación con el contexto del trabajo previo intacto. -Por ejemplo, si miras de nuevo en <<_pr_final>>, verás que el colaborador +Por ejemplo, si miras de nuevo en <>, verás que el colaborador no reorganiza su commit y envía un nuevo Pull Request. En lugar, lo que hace es añadir nuevos commits y los envía a la misma rama. De este modo, si vuelves a mirar el Pull Request en el futuro, puedes encontrar fácilmente todo el @@ -301,11 +301,11 @@ fusionarse limpiamente, lo normal es corregirlo para que el responsable pueda fusionarlo fácilmente. GitHub comprobará esto y te dirá si cada Pull Request tiene una fusión trivial posible o no. -[[_pr_fail]] +[[r_pr_fail]] .Pull Request que no puede fusionarse limpiamente image::images/pr-01-fail.png[fallo en fusión de PR] -Si ves algo parecido a <<_pr_fail>>, seguramente prefieras corregir la rama +Si ves algo parecido a <>, seguramente prefieras corregir la rama de forma que se vuelva verde de nuevo y el responsable no tenga trabajo extra con ella. @@ -372,7 +372,7 @@ To https://github.com/tonychacon/blink Cuando haces esto, el Pull Request se actualiza automáticamente y se re-chequea para ver si es posible un fusionado automático o no. -[[_pr_merge_fix]] +[[r_pr_merge_fix]] .Ahora el Pull Request ya fusiona bien image::images/pr-02-merge-fix.png[PR corregido] @@ -385,7 +385,7 @@ manejable. Si finalmente prefieres reorganizar la rama para limpiarla, también puedes hacerlo, pero se recomienda no forzar el push sobre la rama del Pull Request. Si otras personas se la han bajado y hacen más trabajo en ella, provocarás -los problemas vistos en <<_rebase_peril>>. En su lugar, envía la rama +los problemas vistos en <>. En su lugar, envía la rama reorganizada a una nueva rama de GitHub y abre con ella un nuevo Pull Request, con referencia al antiguo, cerrando además éste. @@ -411,16 +411,16 @@ anterior, creado un nuevo pull request para ella y ahora queremos hacer una referencia al viejo Pull Request desde el nuevo. También queremos hacer referencia a una incidencia en la bifurcación del repositorio, y una incidencia de un proyecto totalmente distinto. Podemos rellenar la descripción -justo como vemos en <<_pr_references>>. +justo como vemos en <>. -[[_pr_references]] +[[r_pr_references]] .Referencias cruzadas en un Pull Request. image::images/mentions-01-syntax.png[Referencias a PR] Cuando enviamos este pull request, veremos todo como en -<<_pr_references_render>>. +<>. -[[_pr_references_render]] +[[r_pr_references_render]] .Cómo se ven las referencias cruzadas en el Pull Request. image::images/mentions-02-render.png[Referencias a PR] @@ -431,9 +431,9 @@ Ahora, si Tony regresa y cierra el Pull Request original, veremos que GitHub crea un evento en la línea de tiempo del Pull Request. Esto significa que cualquier que visite este Pull Request y vea que está cerrado, puede fácilmente enlazarlo al que lo hizo obsoleto. El enlace se mostrará tal -como en <<_pr_closed>>. +como en <>. -[[_pr_closed]] +[[r_pr_closed]] .Cómo se ven las referencias cruzadas en el Pull Request. image::images/mentions-03-closed.png[PR cerrado] @@ -453,10 +453,10 @@ comentarios, y otros cuadros de texto, se puede usar lo que se conoce ``formato Markdown de GitHub''. El formato Markdown es como escribir en texto plano pero que luego se convierte en texto con formato. -Mira en <<_example_markdown>> un ejemplo de cómo los comentarios o el texto +Mira en <> un ejemplo de cómo los comentarios o el texto puede escribirse y luego formatearse con Markdown. -[[_example_markdown]] +[[r_example_markdown]] .Ejemplo de texto en Markdown y cómo queda después. image::images/markdown-01-example.png[Ejemplo de Markdown] @@ -484,9 +484,9 @@ Puedes crear una lista de tareas así: ---- Si incluimos esto en la descripción de nuestra incidencia o Pull Request, -lo veremos con el aspecto de <<_task_lists>> +lo veremos con el aspecto de <> -[[_task_lists]] +[[r_task_lists]] .Cómo se ven las listas de tareas de Markdown. image::images/markdown-02-tasks.png[Ejemplo de lista de tareas] @@ -501,9 +501,9 @@ que las muestran. Por ejemplo, si tienes un Pull Request con tareas y miras la página resumen de todos los Pull Request, podrás ver cuánto trabajo queda pendiente. Esto ayuda a la gente a dividir los Pull Requests en subtareas y ayuda a otras personas a seguir la evolución de la rama. Se puede ver un -ejemplo de esto en <<_task_list_progress>>. +ejemplo de esto en <>. -[[_task_list_progress]] +[[r_task_list_progress]] .Resumen de lista de tareas en la lista de PR. image::images/markdown-03-task-summary.png[Ejemplo de lista de tareas] @@ -533,9 +533,9 @@ for(int i=0 ; i < 5 ; i++) Si añades junto a los símbolos el nombre de un lenguaje de programación, como hacemos aquí con 'java', GitHub intentará hacer el resaltado de la sintaxis del lenguaje en el fragmento. En el caso anterior, quedaría con -el aspecto de <<_md_code>>. +el aspecto de <>. -[[_md_code]] +[[r_md_code]] .Cómo se ve el fragmento de código. image::images/markdown-04-fenced-code.png[Fragmento de código] @@ -557,9 +557,9 @@ Un ejemplo de cita: How big are these slings and in particular, these arrows? ---- -Una vez introducida, el comentario se vería como en <<_md_quote>>. +Una vez introducida, el comentario se vería como en <>. -[[_md_quote]] +[[r_md_quote]] .Rendered quoting example. image::images/markdown-05-quote.png[Rendered quoting] @@ -571,7 +571,7 @@ Incluso tenemos un asistente de emoji: si escribes un comentario y tecleas el carácter `:`, verás cómo aparecen iconos para ayudarte a completar el que quieras poner. -[[_md_emoji_auto]] +[[r_md_emoji_auto]] .Emoji auto-completando emoji. image::images/markdown-06-emoji-complete.png[Auto-completando emoji] @@ -589,9 +589,9 @@ I :eyes: that :bug: and I :cold_sweat:. :clap::tada::panda_face: ---- -Al introducir el comentario, se mostraría como <<_md_emoji>>. +Al introducir el comentario, se mostraría como <>. -[[_md_emoji]] +[[r_md_emoji]] .Comentando con muchos emoji. image::images/markdown-07-emoji.png[Emoji] @@ -614,10 +614,10 @@ increíblemente útil. En adición a añadir enlaces con imágenes en el formato Markdown a los comentarios, GitHub permite arrastrar y soltar imágenes en las áreas de texto para insertarlas. -[[_md_drag]] +[[r_md_drag]] .Arrastrar y soltar imágenes para subirlas. image::images/markdown-08-drag-drop.png[Arrastrar y soltar imágenes] -Si vuelves a <<_pr_references>>, verás una pequeña nota sobre el área de +Si vuelves a <>, verás una pequeña nota sobre el área de texto ``Parsed as Markdown''. Si pulsas ahí te dará una lista completa de cosas que puedes hacer con el formato Markdown de GitHub. diff --git a/book/06-github/sections/3-maintaining.asc b/book/06-github/sections/3-maintaining.asc index a65466fc..35c98fa0 100755 --- a/book/06-github/sections/3-maintaining.asc +++ b/book/06-github/sections/3-maintaining.asc @@ -1,4 +1,4 @@ -[[_maintaining_gh_project]] +[[r_maintaining_gh_project]] === Mantenimiento de un proyecto Ahora que ya sabes cómo ayudar a un proyecto, veamos el otro lado: cómo @@ -9,12 +9,12 @@ puedes crear, administrar y mantener tu propio proyecto. Vamos a crear un nuevo repositorio para compartir nuestro código en él. Comienza pulsando el botón ``New repository'' en el lado derecho de tu página principal, o bien desde el botón `+` en la barra de botones cercano -a tu nombre de usuario, tal como se ve en <<_new_repo_dropdown>>. +a tu nombre de usuario, tal como se ve en <>. .La zona ``Your repositories''. image::images/newrepo.png[La zona ``Your repositories''.] -[[_new_repo_dropdown]] +[[r_new_repo_dropdown]] .Desplegable ``New repository''. image::images/new-repo.png[Desplegable ``New repository''.] @@ -31,7 +31,7 @@ nombre `/` Dado que no tiene todavía contenido, GitHub te mostrará instrucciones para crear el repositorio Git, o para conectarlo a un proyecto Git existente. No entraremos aquí en esto; si necesitas refrescarlo, -revisa el capítulo <<_git_basics_chapter>>. +revisa el capítulo <>. Ahora que el proyecto está alojado en GitHub, puedes dar la URL a cualquiera con quien quieras compartirlo. Cada proyecto en GitHub es accesible mediante @@ -84,14 +84,14 @@ en el segundo caso procede de gente con acceso al repositorio. En los siguientes ejemplos, supondremos que eres ``tonychacon'' y has creado un nuevo proyecto para Arduino llamado ``fade''. -[[_email_notifications]] +[[r_email_notifications]] ===== Notificaciones por correo electrónico Cuando alguien realiza un cambio en el código y te crea un Pull Request, debes recibir una notificación por correo electrónico avisándote, con un -aspecto similar a <<_email_pr>>. +aspecto similar a <>. -[[_email_pr]] +[[r_email_pr]] .Notificación por correo de nuevo Pull Request. image::images/maint-01-email.png[Notificación por correo de nuevo Pull Request] @@ -102,7 +102,7 @@ usar desde la línea de comandos. Si observas la línea que dice `git pull patch-1`, es una forma simple de fusionar una rama remota sin tener que añadirla localmente. Lo vimos esto -rápidamente en <<_checking_out_remotes>>. Si lo deseas, puedes crear y +rápidamente en <>. Si lo deseas, puedes crear y cambiar a una rama y luego ejecutar el comando para fusionar los cambios del Pull Request. @@ -117,7 +117,7 @@ $ curl http://github.com/tonychacon/fade/pull/1.patch | git am ===== Colaboración en el Pull Request -Como hemos visto en <<_github_flow>>, puedes participar en una discusión con +Como hemos visto en <>, puedes participar en una discusión con la persona que generó el Pull Request. Puedes comentar líneas concretas de código, comentar commits completos o comentar el Pull Request en sí mismo, utilizando donde quieras el formato Markdown. @@ -139,22 +139,22 @@ Si la fusión es trivial, también puedes pulsar el botón ``Merge'' en GitHub. Esto realizará una fusión ``sin avance rápido'', creando un commit de fusión incluso si era posible una fusión con avance rápido. Esto significa que cada vez que pulses el botón Merge, se creará un commit de fusión. Como verás -en <<_merge_button>>, GitHub te da toda esta información si pulsas el el enlace +en <>, GitHub te da toda esta información si pulsas el el enlace de ayuda. -[[_merge_button]] +[[r_merge_button]] .Botón Merge e instrucciones para fusionar manualmente un Pull Request. image::images/maint-02-merge.png[Botón Merge] Si decides que no quieres fusionar, también puedes cerrar el Pull Request y la persona que lo creó será notificada. -[[_pr_refs]] +[[r_pr_refs]] ===== Referencias de Pull Request Si tienes muchos Pull Request y no quieres añadir un montón de remotos o hacer muchos cada vez, hay un pequeño truco que GitHub te permite. Es -un poco avanzado y lo veremos en detalle después en <<_refspec>>, pero puede +un poco avanzado y lo veremos en detalle después en <>, pero puede ser bastante útil. En GitHub tenemos que las ramas de Pull Request son una especie de @@ -162,7 +162,7 @@ pseudo-ramas del servidor. De forma predeterminada no las obtendrás cuando hagas un clonado, pero hay una forma algo oscura de acceder a ellos. Para demostrarlo, usaremos un comando de bajo nivel (conocido como de -``fontanería'', sabremos más sobre esto en <<_plumbing_porcelain>>) llamado +``fontanería'', sabremos más sobre esto en <>) llamado `ls-remote`. Este comando no se suele usar en el día a día de Git pero es útil para ver las referencias presentes en el servidor. @@ -287,7 +287,7 @@ página que especifica qué rama quieres usar y desde qué rama quieres hacer la petición. Si pulsas el botón ``Edit'' en el lado derecho de la caja, puedes cambiar no solo las ramas sino también la bifurcación. -[[_pr_targets]] +[[r_pr_targets]] .Cambio manual de la rama o del fork en un pull request. image::images/maint-04-target.png[objetivos de PR] @@ -341,10 +341,10 @@ y puedes elegir tener una de ellas, ambas o ninguna. Las notificaciones web se muestran en la página de Github. Si las tienes activas verás un pequeño punto azul sobre el icono de notificaciones en la parte -superior de la pantalla, en <<_not_center>>. +superior de la pantalla, en <>. -[[_not_center]] +[[r_not_center]] .Centro de notificaciones. image::images/maint-08-notifications-page.png[Centro de notificaciones] @@ -364,7 +364,7 @@ correo y manejarlas todas mediante esta pantalla. Las notificaciones por correo electrónico son la otra manera de gestionar notificaciones con GitHub. Si las tienes activa, recibirás los correos de cada -notificación. Vimos ya algún ejemplo en <<_email_notification>> y <<_email_pr>>. +notificación. Vimos ya algún ejemplo en <> y <>. Los correos también serán agrupados correctamente en conversaciones, con lo que estará bien que uses un cliente de correo que maneje las conversaciones. @@ -373,7 +373,7 @@ En las cabeceras de estos correos se incluyen también algunos metadatos, que serán útiles para crear filtros y reglas adecuados. Por ejemplo, si miramos las cabeceras de los correos enviados a Tony en el -correo visto en <<_email_pr>>, veremos que se envió la siguiente información: +correo visto en <>, veremos que se envió la siguiente información: [source,mbox] ---- @@ -432,9 +432,9 @@ o enlaces en él para facilitar su comprensión. El otro archivo que GitHub reconoce es el archivo `CONTRIBUTING`. Si tienes un archivo con ese nombre y cualquier extensión, GitHub mostrará -algo como <<_contrib_file>> cuando se intente abrir un Pull Request. +algo como <> cuando se intente abrir un Pull Request. -[[_contrib_file]] +[[r_contrib_file]] .Apertura de un Pull Request cuando existe el archivo CONTRIBUTING. image::images/maint-09-contrib.png[Nota sobre cómo participar] @@ -452,7 +452,7 @@ Si usas como rama predeterminada una que no sea ``master'', por ejemplo para que sea objetivo de los Pull Requests, puedes cambiarla en las opciones de configuración del repositorio, en donde pone ``Options''. -[[_default_branch]] +[[r_default_branch]] .Cambio de la rama predeterminada del proyecto. image::images/maint-10-default-branch.png[Rama predeterminada] @@ -466,7 +466,7 @@ Si quieres transferir la propiedad de un proyecto a otro usuario u organización de GitHub, hay una opción para ello al final de ``Options'' llamada ``Transfer ownership''. -[[_transfer_project]] +[[r_transfer_project]] .Transferir propiedad de un proyecto. image::images/maint-11-transfer.png[Transferir] diff --git a/book/06-github/sections/4-managing-organization.asc b/book/06-github/sections/4-managing-organization.asc index 26558e9d..208f4bd7 100755 --- a/book/06-github/sections/4-managing-organization.asc +++ b/book/06-github/sections/4-managing-organization.asc @@ -1,4 +1,4 @@ -[[_github_orgs]] +[[r_github_orgs]] === Gestión de una organización (((GitHub, organizations))) @@ -35,7 +35,7 @@ crearán: la organización o tu cuenta personal. Automáticamente, además, quedarás como vigilante (watcher) de los repositorios que crees en la organización. -Al igual que en <<_personal_avatar>>, puedes subir un icono para +Al igual que en <>, puedes subir un icono para personalizar un poco la organización, que aparecerá entre otros sitios en la página principal de la misma, que lista todos los repositorios y puede ser vista por cualquiera. @@ -60,19 +60,19 @@ repositorio individual. La página de la organización te mostrará un panel simple con todos los repositorios, usuarios y equipos que se encuentran en ella. -[[_org_page]] +[[r_org_page]] .Página de la organización. image::images/orgs-01-page.png[] Para gestionar tus equipos, puedes pulsar en la barra ``Teams'' -del lado derecho en la página <<_org_page>>. Esto te llevará a +del lado derecho en la página <>. Esto te llevará a una página con la que puedes añadir los miembros del equipo, añadir repositorios al equipo o gestionar los ajustes y niveles de acceso del mismo. Cada equipo puede tener acceso sólo lectura, de escritura o administrativo al repositorio. Puedes cambiar -el nivel pulsando en el botón ``Settings'' en <<_team_page>>. +el nivel pulsando en el botón ``Settings'' en <>. -[[_team_page]] +[[r_team_page]] .Página de equipos. image::images/orgs-02-teams.png[] @@ -96,7 +96,7 @@ Las organizaciones pueden también dar a los propietarios acceso a toda la información sobre la misma. Puedes incluso ir a la opción 'Audit Log' y ver los eventos que han sucedido, quién hizo qué y dónde. -[[_audit_log]] +[[r_audit_log]] .Log de auditoría. image::images/orgs-03-audit.png[] diff --git a/book/06-github/sections/5-scripting.asc b/book/06-github/sections/5-scripting.asc index 0d917f1b..d617a356 100755 --- a/book/06-github/sections/5-scripting.asc +++ b/book/06-github/sections/5-scripting.asc @@ -21,9 +21,9 @@ y servicios pueden configurarse desde la sección Settings del repositorio, el mismo sitio donde vimos que podíamos añadir colaboradores al proyecto o cambiar la rama predeterminada. Bajo la opción ``Webhooks and Services'' veremos algo similar -a <<_services_hooks>>. +a <>. -[[_services_hooks]] +[[r_services_hooks]] .Sección Services and Hooks. image::images/scripting-01-services.png[Servicios y enganches] @@ -34,9 +34,9 @@ gestores de incidencias y fallos, salas de charla y sistemas de documentación. Veremos cómo levantar un servicio sencillo, el enganche con el correo electrónico. Si elegimos ``email'' en la opción ``Add Service'' veremos una pantalla de -configuración similar a <<_service_config>>. +configuración similar a <>. -[[_service_config]] +[[r_service_config]] .Configuración de servicio de correo. image::images/scripting-02-email-service.png[Servicio de correo] @@ -66,9 +66,9 @@ web para escuchar las peticiones de GitHub y luego hacer algo con los datos que son enviados. Para activar un enganche, pulsa en el botón ``Add webhook'' de -<<_services_hooks>>. Esto mostrará una página como <<_web_hook>>. +<>. Esto mostrará una página como <>. -[[_web_hook]] +[[r_web_hook]] .Configuración de enganches web. image::images/scripting-03-webhook.png[Enganches web] @@ -132,7 +132,7 @@ mirar qué información se ha enviado, y si fue recibido correctamente, junto con las cabeceras correspondientes de la petición y de la respuesta. Esto facilita mucho las pruebas de tus enganches. -[[_web_hook_debug]] +[[r_web_hook_debug]] .Depuración de un web hook. image::images/scripting-04-webhook-debug.png[Depuración de Webhook] @@ -220,7 +220,7 @@ tu usuario y tu contraseña, aunque generalmente es mejor usar un token de acceso personal. Puedes generarlo en la opción ``Applications'' de tu página de ajustes personales. -[[_access_token]] +[[r_access_token]] .Generación del token de acceso. image::images/scripting-05-access-token.png[Token de acceso] @@ -265,9 +265,9 @@ $ curl -H "Content-Type: application/json" \ ---- Ahora, si vas a la incidencia, verás el comentario que acabas de enviar tal como -en <<_api_comment>>. +en <>. -[[_api_comment]] +[[r_api_comment]] .Comentario enviado desde la API de GitHub. image::images/scripting-06-comment.png[Comentario via API] @@ -348,9 +348,9 @@ y un servicio de validación puede dar por su parte su propio estado; el campo ``context'' serviría para diferenciarlos. Si alguien abre un nuevo Pull Request en GitHub y este enganche está -configurado, verías algo como <<_commit_status>>. +configurado, verías algo como <>. -[[_commit_status]] +[[r_commit_status]] .Estado del commit mediante API. image::images/scripting-07-status.png[Estado del commit] diff --git a/book/07-git-tools/images/double-dot.png b/book/07-git-tools/images/double-dot.png deleted file mode 100644 index a95ba68a..00000000 Binary files a/book/07-git-tools/images/double-dot.png and /dev/null differ diff --git a/book/07-git-tools/images/replace1.png b/book/07-git-tools/images/replace1.png deleted file mode 100644 index 100610c5..00000000 Binary files a/book/07-git-tools/images/replace1.png and /dev/null differ diff --git a/book/07-git-tools/images/replace2.png b/book/07-git-tools/images/replace2.png deleted file mode 100644 index 58fb531d..00000000 Binary files a/book/07-git-tools/images/replace2.png and /dev/null differ diff --git a/book/07-git-tools/images/replace3.png b/book/07-git-tools/images/replace3.png deleted file mode 100644 index 3fafe80a..00000000 Binary files a/book/07-git-tools/images/replace3.png and /dev/null differ diff --git a/book/07-git-tools/images/replace4.png b/book/07-git-tools/images/replace4.png deleted file mode 100644 index 021319ef..00000000 Binary files a/book/07-git-tools/images/replace4.png and /dev/null differ diff --git a/book/07-git-tools/images/replace5.png b/book/07-git-tools/images/replace5.png deleted file mode 100644 index 74b8523e..00000000 Binary files a/book/07-git-tools/images/replace5.png and /dev/null differ diff --git a/book/07-git-tools/images/rerere1.png b/book/07-git-tools/images/rerere1.png deleted file mode 100644 index 06bcef32..00000000 Binary files a/book/07-git-tools/images/rerere1.png and /dev/null differ diff --git a/book/07-git-tools/images/rerere2.png b/book/07-git-tools/images/rerere2.png deleted file mode 100644 index 36021e32..00000000 Binary files a/book/07-git-tools/images/rerere2.png and /dev/null differ diff --git a/book/07-git-tools/images/rerere3.png b/book/07-git-tools/images/rerere3.png deleted file mode 100644 index 83e29b75..00000000 Binary files a/book/07-git-tools/images/rerere3.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-checkout.png b/book/07-git-tools/images/reset-checkout.png deleted file mode 100644 index 69b2f892..00000000 Binary files a/book/07-git-tools/images/reset-checkout.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-ex1.png b/book/07-git-tools/images/reset-ex1.png deleted file mode 100644 index b1adbfe9..00000000 Binary files a/book/07-git-tools/images/reset-ex1.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-ex2.png b/book/07-git-tools/images/reset-ex2.png deleted file mode 100644 index 6cac4be0..00000000 Binary files a/book/07-git-tools/images/reset-ex2.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-ex3.png b/book/07-git-tools/images/reset-ex3.png deleted file mode 100644 index e29b78c4..00000000 Binary files a/book/07-git-tools/images/reset-ex3.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-ex4.png b/book/07-git-tools/images/reset-ex4.png deleted file mode 100644 index 0fb210a9..00000000 Binary files a/book/07-git-tools/images/reset-ex4.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-ex5.png b/book/07-git-tools/images/reset-ex5.png deleted file mode 100644 index 11b00201..00000000 Binary files a/book/07-git-tools/images/reset-ex5.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-ex6.png b/book/07-git-tools/images/reset-ex6.png deleted file mode 100644 index 091285ee..00000000 Binary files a/book/07-git-tools/images/reset-ex6.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-hard.png b/book/07-git-tools/images/reset-hard.png deleted file mode 100644 index f2f8e003..00000000 Binary files a/book/07-git-tools/images/reset-hard.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-mixed.png b/book/07-git-tools/images/reset-mixed.png deleted file mode 100644 index d6ae60ab..00000000 Binary files a/book/07-git-tools/images/reset-mixed.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-path1.png b/book/07-git-tools/images/reset-path1.png deleted file mode 100644 index 0036c409..00000000 Binary files a/book/07-git-tools/images/reset-path1.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-path2.png b/book/07-git-tools/images/reset-path2.png deleted file mode 100644 index ca117fb7..00000000 Binary files a/book/07-git-tools/images/reset-path2.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-path3.png b/book/07-git-tools/images/reset-path3.png deleted file mode 100644 index a6cb5d43..00000000 Binary files a/book/07-git-tools/images/reset-path3.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-soft.png b/book/07-git-tools/images/reset-soft.png deleted file mode 100644 index aab1fe6b..00000000 Binary files a/book/07-git-tools/images/reset-soft.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-squash-r1.png b/book/07-git-tools/images/reset-squash-r1.png deleted file mode 100644 index 7bd260ad..00000000 Binary files a/book/07-git-tools/images/reset-squash-r1.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-squash-r2.png b/book/07-git-tools/images/reset-squash-r2.png deleted file mode 100644 index 46f9ea4e..00000000 Binary files a/book/07-git-tools/images/reset-squash-r2.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-squash-r3.png b/book/07-git-tools/images/reset-squash-r3.png deleted file mode 100644 index 23f82730..00000000 Binary files a/book/07-git-tools/images/reset-squash-r3.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-start.png b/book/07-git-tools/images/reset-start.png deleted file mode 100644 index bbfa8eab..00000000 Binary files a/book/07-git-tools/images/reset-start.png and /dev/null differ diff --git a/book/07-git-tools/images/reset-workflow.png b/book/07-git-tools/images/reset-workflow.png deleted file mode 100644 index 43bd27f3..00000000 Binary files a/book/07-git-tools/images/reset-workflow.png and /dev/null differ diff --git a/book/07-git-tools/images/undomerge-reset.png b/book/07-git-tools/images/undomerge-reset.png deleted file mode 100644 index 99bd7f79..00000000 Binary files a/book/07-git-tools/images/undomerge-reset.png and /dev/null differ diff --git a/book/07-git-tools/images/undomerge-revert.png b/book/07-git-tools/images/undomerge-revert.png deleted file mode 100644 index 1f32a63e..00000000 Binary files a/book/07-git-tools/images/undomerge-revert.png and /dev/null differ diff --git a/book/07-git-tools/images/undomerge-revert2.png b/book/07-git-tools/images/undomerge-revert2.png deleted file mode 100644 index af9e5887..00000000 Binary files a/book/07-git-tools/images/undomerge-revert2.png and /dev/null differ diff --git a/book/07-git-tools/images/undomerge-revert3.png b/book/07-git-tools/images/undomerge-revert3.png deleted file mode 100644 index c1e8e8ba..00000000 Binary files a/book/07-git-tools/images/undomerge-revert3.png and /dev/null differ diff --git a/book/07-git-tools/images/undomerge-start.png b/book/07-git-tools/images/undomerge-start.png deleted file mode 100644 index 5891cbed..00000000 Binary files a/book/07-git-tools/images/undomerge-start.png and /dev/null differ diff --git a/book/07-git-tools/sections/advanced-merging.asc b/book/07-git-tools/sections/advanced-merging.asc index bc544416..a4b46c6c 100644 --- a/book/07-git-tools/sections/advanced-merging.asc +++ b/book/07-git-tools/sections/advanced-merging.asc @@ -1,4 +1,4 @@ -[[_advanced_merging]] +[[r_advanced_merging]] === Fusión Avanzada La fusión en Git suele ser bastante fácil. Dado que Git facilita la fusión de otra rama varias veces, significa que puede tener una rama de larga duración, pero puede mantenerla actualizada sobre la marcha, resolviendo pequeños conflictos a menudo, en lugar de sorprenderse por un conflicto enorme en el final de la serie. @@ -96,7 +96,7 @@ CONFLICT (content): Merge conflict in hello.rb Automatic merge failed; fix conflicts and then commit the result. ---- -[[_abort_merge]] +[[r_abort_merge]] ===== Abortar una Fusión Ahora tenemos algunas opciones. Primero, cubramos cómo salir de esta situación. Si tal vez no esperabas conflictos y aún no quieres lidiar con la situación, simplemente puedes salir de la fusión con `git merge --abort`. @@ -136,7 +136,7 @@ Dado que en este caso, los cambios reales del archivo no eran conflictivos, una Esto es un salvavidas si tienes a alguien en tu equipo a quien le gusta ocasionalmente reformatear todo, desde espacios hasta pestañas o viceversa. -[[_manual_remerge]] +[[r_manual_remerge]] ===== Re-fusión Manual de Archivos Aunque Git maneja muy bien el preprocesamiento de espacios en blanco, hay otros tipos de cambios que quizás Git no pueda manejar de manera automática, pero que son correcciones de secuencias de comandos. Como ejemplo, imaginemos que Git no pudo manejar el cambio en el espacio en blanco y que teníamos que hacerlo a mano. @@ -273,7 +273,7 @@ Removing hello.ours.rb Removing hello.theirs.rb ---- -[[_checking_out_conflicts]] +[[r_checking_out_conflicts]] ===== Revisando Los Conflictos Tal vez en este punto no estemos felices con la resolución por alguna razón, o quizás manualmente editando uno o ambos lados todavía no funciona como es debido y necesitamos más contexto. @@ -363,12 +363,12 @@ El comando `git checkout` puede también tomar la opción de `--ellos`o la `--n Esto puede ser particularmente útil para conflictos de archivos binarios donde simplemente puedes escoger un lado, o donde solo quieres fusionar ciertos archivos desde otra rama – puedes hacer la fusión y luego revisar ciertos archivos de un lado o del otro antes de comprometerlos -[[_merge_log]] +[[r_merge_log]] ===== Registro de Fusión Otra herramienta útil al resolver conflictos de fusión es `git log`. Esto puede ayudarte a tener contexto a lo que pudo haber contribuido a los conflictos. Revisando un poco de historial para recordar por qué dos líneas de desarrollo estaban tocando el mismo código de área puede ser muy útil algunas veces. -Para obtener una lista completa de cometidos únicos que fueron incluidos en cualquiera de las ramas involucradas en esta fusión, podemos usar la sintaxis ``triple dot'' (triple punto) que aprendimos en <<_triple_dot>>. +Para obtener una lista completa de cometidos únicos que fueron incluidos en cualquiera de las ramas involucradas en esta fusión, podemos usar la sintaxis ``triple dot'' (triple punto) que aprendimos en <>. [source,console] ---- @@ -480,7 +480,7 @@ index 0399cd5,59727f0..e1d0799 hello() ---- -[[_undoing_merges]] +[[r_undoing_merges]] ==== Deshaciendo Fusiones Ahora que ya conoces como crear un merge commit (compromiso de fusión), probablemente hayas creado algunos por error. @@ -502,7 +502,7 @@ En la mayoría de los casos si sigues al errante `git merge` con `git reset --ha .History after `git reset --hard HEAD~` image::images/undomerge-reset.png[History after `git reset --hard HEAD~`.] -Ya vimos `restablecer` de nuevo en <<_git_reset>>, así que no debería ser muy difícil averiguar lo que está sucediendo ahí +Ya vimos `restablecer` de nuevo en <>, así que no debería ser muy difícil averiguar lo que está sucediendo ahí Aquí un repaso rápido: `reset --hard` usualmente va a través de tres pasos: . Mover los puntos de la rama HEAD. @@ -511,10 +511,10 @@ Aquí un repaso rápido: `reset --hard` usualmente va a través de tres pasos: . Hacer que el directorio de trabajo parezca el índice. La desventaja de este enfoque es que es reescribir el historial, lo cual puede ser problemático con un depósito compartido. -Revisa <<_rebase_peril>> para más de lo que puede suceder; la versión corta es que si otras personas tienen los compromisos que estas reescribiendo, probablemente deberías evitar `resetear`. +Revisa <> para más de lo que puede suceder; la versión corta es que si otras personas tienen los compromisos que estas reescribiendo, probablemente deberías evitar `resetear`. Este enfoque tampoco funcionará si cual quiera de los otros compromisos han sido creados desde la fusión; mover los refs efectivamente perdería esos cambios. -[[_reverse_commit]] +[[r_reverse_commit]] ===== Revertir el compromiso Si mover los punteros de la rama alrededor no funciona para ti, Git te proporciona la opción de hacer un compromiso (commit) nuevo que deshace todos los cambios de uno ya existente. diff --git a/book/07-git-tools/sections/bundling.asc b/book/07-git-tools/sections/bundling.asc index 3a5d98d8..662c141d 100644 --- a/book/07-git-tools/sections/bundling.asc +++ b/book/07-git-tools/sections/bundling.asc @@ -1,4 +1,4 @@ -[[_bundling]] +[[r_bundling]] === Agrupaciones Aunque ya hemos considerado las maneras mas comunes de transferir la base de datos del Git en el internet (HTTP, SSH, etc.), existe aún una manera de hacerlo, aunque no es muy comúnmente usada puede ser muy útil. @@ -69,7 +69,7 @@ b1ec324 first commit Primero necesitamos determinar el rango de confirmaciones que queremos incluir en la agrupación. No como los protocolos de la red que figuraran en el mínimo de datos para transferir desde la red por nosotros, tendremos que hacer esto manualmente. Ahora simplemente puedes hacer la misma cosa y agrupar el repositorio entero, el que trabajará, pero es mejor solo agrupar las diferencias – solamente las tres confirmaciones que hicimos localmente. -Para hacer eso, tienes que calcular la diferencia. Como hemos descrito en <<_commit_ranges>>, Puedes especificar el rango de confirmaciones en un numero de caminos. Para obtener las tres confirmaciones que tenemos en nuestra rama maestra que no estaban en la rama que copiamos originalmente, podemos usar algo como `origin/master..master` o `master ^origin/master`. Puedes probar esto con el comando de `log`. +Para hacer eso, tienes que calcular la diferencia. Como hemos descrito en <>, Puedes especificar el rango de confirmaciones en un numero de caminos. Para obtener las tres confirmaciones que tenemos en nuestra rama maestra que no estaban en la rama que copiamos originalmente, podemos usar algo como `origin/master..master` o `master ^origin/master`. Puedes probar esto con el comando de `log`. [source,console] ---- diff --git a/book/07-git-tools/sections/credentials.asc b/book/07-git-tools/sections/credentials.asc index 1832d797..e57f965e 100644 --- a/book/07-git-tools/sections/credentials.asc +++ b/book/07-git-tools/sections/credentials.asc @@ -1,4 +1,4 @@ -[[_credential_caching]] +[[r_credential_caching]] === Almacenamiento de credenciales (((credentials))) diff --git a/book/07-git-tools/sections/debugging.asc b/book/07-git-tools/sections/debugging.asc index 7c44fb19..e9a24c31 100644 --- a/book/07-git-tools/sections/debugging.asc +++ b/book/07-git-tools/sections/debugging.asc @@ -3,7 +3,7 @@ Git también provee unas cuantas herramientas para realizar un debug a los problemas en tus proyectos. Porque Git está diseñado para trabajar con casi cualquier tipo de proyecto, estas herramientas son bastante genéricas, pero pueden ayudar a cazar bugs o al culpable cuando las cosas salen mal. -[[_file_annotation]] +[[r_file_annotation]] ==== Anotaciones de archivo Si rastreas un bug en tu código y quieres saber cuándo fue introducido y por qué, la anotación de archivo será muchas veces tu mejor herramienta. @@ -63,7 +63,7 @@ Esto es realmente útil. Normalmente, se obtiene como el commit original aquel de dónde se copió el código, porque esta es la primera vez en la que se tocaron estas líneas en el archivo. Git te informa el commit original donde se escribieron esas líneas, incluso si esto fue hecho en otro archivo. -[[_binary_search]] +[[r_binary_search]] ==== Búsqueda binaria diff --git a/book/07-git-tools/sections/interactive-staging.asc b/book/07-git-tools/sections/interactive-staging.asc index 0232f3f1..c83375fc 100644 --- a/book/07-git-tools/sections/interactive-staging.asc +++ b/book/07-git-tools/sections/interactive-staging.asc @@ -1,4 +1,4 @@ -[[_interactive_staging]] +[[r_interactive_staging]] === Organización interactiva El git viene con unos cuantos scripts que hace que algunas líneas de comando sean más fáciles de usar. diff --git a/book/07-git-tools/sections/replace.asc b/book/07-git-tools/sections/replace.asc index 19956da6..5543f79f 100644 --- a/book/07-git-tools/sections/replace.asc +++ b/book/07-git-tools/sections/replace.asc @@ -1,4 +1,4 @@ -[[_replace]] +[[r_replace]] === Replace Los objetos de Git son inmutables, pero proporciona una manera interesante de pretender reemplazar objetos en su base de datos con otros objetos. diff --git a/book/07-git-tools/sections/rerere.asc b/book/07-git-tools/sections/rerere.asc index 81d78ea5..c2e9dc44 100644 --- a/book/07-git-tools/sections/rerere.asc +++ b/book/07-git-tools/sections/rerere.asc @@ -1,4 +1,4 @@ -[[_rerere]] +[[r_rerere]] === Rerere La funcionalidad del "git rerere" es una característica oculta. El nombre se refiere a "reuse recorded resolution" y como el nombre lo insinúa, te permite pedirle a Git que recuerde cómo resolviste un conflicto de hunk, así que la próxima vez que vea el mismo conflicto, Git puede resolverlo automáticamente por ti. @@ -135,7 +135,7 @@ Ahora podemos ver que "Recorded resolution for FILE" (Registró solución para A image::images/rerere2.png[] -Ahroa, deshagamos esa unión y luego hagámosle rebase en la cima de nuestra rama maestra en su lugar. Podemos tener nuestra rama de vuelta usando "reset" como vimos en <<_git_reset>>. +Ahroa, deshagamos esa unión y luego hagámosle rebase en la cima de nuestra rama maestra en su lugar. Podemos tener nuestra rama de vuelta usando "reset" como vimos en <>. [source,console] ---- @@ -212,7 +212,7 @@ def hello end ---- -Vimos un ejemplo de esto en <<_advanced_merging>>. +Vimos un ejemplo de esto en <>. Por ahora, aunque resolvámoslo sólo ejecuntando "rerere" de nuevo: [source,console] diff --git a/book/07-git-tools/sections/reset.asc b/book/07-git-tools/sections/reset.asc index 97d1a0de..7b5e159a 100644 --- a/book/07-git-tools/sections/reset.asc +++ b/book/07-git-tools/sections/reset.asc @@ -1,4 +1,4 @@ -[[_git_reset]] +[[r_git_reset]] === Reiniciar Desmitificado Antes de pasar a herramientas más especializadas, hablemos de `reset` y `checkout`. @@ -50,7 +50,7 @@ $ git ls-tree -r HEAD Los comandos `cat-file` y `ls-tree` son comandos de ``fontanería'' que se usan para cosas de nivel inferior y que no se usan realmente en el trabajo diario, pero nos ayudan a ver qué está sucediendo aquí. -[[_the_index]] +[[r_the_index]] ===== El Índice El índice es su *siguiente commit propuesta*. También nos hemos estado refiriendo a este concepto como el ``Área de Preparación'' de Git ya que esto es lo que Git ve cuando ejecutas `git commit`. @@ -161,7 +161,7 @@ Con `reset --soft`, simplemente se detendrá allí. Ahora tómese un segundo para mirar ese diagrama y darse cuenta de lo que sucedió: esencialmente deshizo el último comando `git commit`. Cuando ejecuta `git commit`, Git crea una nueva confirmación y mueve la rama a la que apunta HEAD. Cuando haces `reset` de vuelta a `HEAD~` (el padre de HEAD), está volviendo a colocar la rama donde estaba, sin cambiar el índice o el Directorio de Trabajo. -Ahora puedes actualizar el índice y ejecutar `git commit` nuevamente para lograr lo que `git commit --amend` hubiera hecho (ver <<_git_amend>>). +Ahora puedes actualizar el índice y ejecutar `git commit` nuevamente para lograr lo que `git commit --amend` hubiera hecho (ver <>). ===== Paso 2: Actualizando el índice (--mixed) @@ -222,7 +222,7 @@ Si miramos el diagrama para ese comando y pensamos en lo que hace `git add`, son image::images/reset-path2.png[] Esta es la razón por la cual el resultado del comando `git status` sugiere que ejecute esto para descentralizar un archivo. -(Consulte <<_unstaging>> para más sobre esto). +(Consulte <> para más sobre esto). Igualmente podríamos no permitir que Git suponga que queríamos ``extraer los datos de HEAD'' especificando una commit específica para extraer esa versión del archivo. Simplemente ejecutaríamos algo como `git reset eb43bf file.txt`. diff --git a/book/07-git-tools/sections/revision-selection.asc b/book/07-git-tools/sections/revision-selection.asc index 839ea360..bd78684a 100644 --- a/book/07-git-tools/sections/revision-selection.asc +++ b/book/07-git-tools/sections/revision-selection.asc @@ -1,4 +1,4 @@ -[[_revision_selection]] +[[r_revision_selection]] === Revisión por selección Git te permite especificar ciertos commits o un rango de estos en muchas maneras. @@ -82,7 +82,7 @@ Si todos los 6.5 mil millones de humanos en la Tierra estuvieran programando, y Existe una probabilidad más alta de que cada miembro de tu equipo de programación sea atacado y asesinado por lobos en incidentes sin relación y todo esto en la misma noche. ==== -[[_branch_references]] +[[r_branch_references]] ==== Referencias por rama El camino más sencillo para especificar un commit requiere que este tenga una rama de referencia apuntando al mismo. @@ -96,7 +96,7 @@ $ git show topic1 ---- Si se quiere ver a qué SHA-1 apunta un rama en específico, o si se quiere ver lo que cualquiera de estos ejemplos expresa en terminos de SHA-1s, puede utilizar una herramienta de plomería de Git llamada `rev-parse`. -Se puede ver <<_git_internals>> para más información sobre las herramientas de plomería; básicamente, `rev-parse` existe para operaciones de bajo nivel y no está diseñado para ser utilizado en operaciones diarias. +Se puede ver <> para más información sobre las herramientas de plomería; básicamente, `rev-parse` existe para operaciones de bajo nivel y no está diseñado para ser utilizado en operaciones diarias. Aquí puedes correr `rev-parse` en tu rama. [source,console] @@ -105,7 +105,7 @@ $ git rev-parse topic1 ca82a6dff817ec66f44342007202690a93763949 ---- -[[_git_reflog]] +[[r_git_reflog]] ==== Nombres cortos de RefLog Una de las cosas que Git hace en segundo plano mientras tu estás trabajando a distancia es mantener un ``reflog'' - un log de a dónde se apuntan las referencias de tu HEAD y tu rama en los últimos meses. @@ -253,7 +253,7 @@ Date: Fri Nov 7 13:47:59 2008 -0500 También se puede combinar estas sintaxis - se puede obtener el segundo padre de la referencia previa ( asumiendo que fue una fusión confirmada) utilizando `HEAD~3^2`, y así sucesivamente. -[[_commit_ranges]] +[[r_commit_ranges]] ==== Rangos de Commits Ahora que ya puede especificar commits individuales, vamos a a ver cómo especificar un rango de commits. @@ -263,9 +263,9 @@ Esto es particularmete útil para administrar las ramas - si se tienen muchas ra La forma más común de especificar un rango es mediante la sintaxis de doble punto. Esto básicamente pide a Git que resuelva un rango de commits que es alcanzable desde un commit pero que no es alcanzable desde otro. -Por ejemplo, digamos que se tiene un historial de commits que se ve como <>. +Por ejemplo, digamos que se tiene un historial de commits que se ve como <>. -[[double_dot]] +[[rdouble_dot]] .Example history for range selection. image::images/double-dot.png[Ejemplo historial para un rango de seleción.] @@ -326,11 +326,11 @@ $ git log refA refB --not refC Esto lo convierte en un sistema de consultas muy poderoso que debería ayudar a descubrir qué hay en sus ramas. -[[_triple_dot]] +[[r_triple_dot]] ===== Tres puntos La última sintaxis de selección de rangos es la de tres puntos, que especifica todos los commits que son alcanzables por alguna de dos referencias pero no por las dos al mismo tiempo. -Mire atrás al ejemplo de historial de commits en <>. +Mire atrás al ejemplo de historial de commits en <>. Si se quiere ver lo que está en `master` o `experiment` pero no en ambos, se puede utilizar [source,console] diff --git a/book/07-git-tools/sections/rewriting-history.asc b/book/07-git-tools/sections/rewriting-history.asc index 629b945f..be8bc70d 100644 --- a/book/07-git-tools/sections/rewriting-history.asc +++ b/book/07-git-tools/sections/rewriting-history.asc @@ -1,4 +1,4 @@ -[[_rewriting_history]] +[[r_rewriting_history]] Reescribiendo la Historia Muchas veces, al trabajar con Git, vas a querer confirmar tu historia por alguna razón. @@ -8,7 +8,7 @@ Esto puede desenvolverse en el cambio de las confirmaciones, cambiando mensajes En esta sección, verás cómo complementar esas tareas tan útiles que harán parece que la confirmación de tu historia parezca del modo en el cual quisiste compartirla. -[[_git_amend]] +[[r_git_amend]] ==== Cambiando la última confirmación Cambiar la última confirmación es probablemente lo más común que le harás a tu historia. @@ -30,7 +30,7 @@ Tu manejas los cambios que quieras editando el archivo y oprimiendo `git add` en Debes ser cuidadoso con esta técnica porque puedes modificar los cambios del SHA-1 de la confirmación Es como un muy pequeño rebase – no necesitas modificar tu ultima confirmación si ya el haz puesto. -[[_changing_multiple]] +[[r_changing_multiple]] ==== Cambiando la confirmación de múltiples mensajes Para modificar una confirmación que está más atrás en tu historia, deberás aplicar herramientas más complejas @@ -163,7 +163,7 @@ pick f7f3f6d changed my name a bit Cuando guardes y salgas del editor, Git te recordará de tu rama de padres de estas confirmaciones, aplicando 310154e y después f7f3f6d, y después se parará. Cambias efectivamente el orden de esas confirmaciones y eliminas la “added cat-file’’ confirmación completamente. -[[_squashing]] +[[r_squashing]] ==== Unir confirmaciones También es posible el tomar series de confirmaciones y unirlas todas en una sola confirmación con la herramienta interactiva de rebase. @@ -267,7 +267,7 @@ El comando es `filter-branch`, y este puede reescribir una gran cantidad de fran Como sea, podría ser muy útil. Aprenderás unas cuantas maneras muy comunes de obtener una idea de algunas de las cosas que es capaz de hacer. -[[_removing_file_every_commit]] +[[r_removing_file_every_commit]] ===== Remover un archivo de cada confirmación Esto ocurre comúnmente. diff --git a/book/07-git-tools/sections/searching.asc b/book/07-git-tools/sections/searching.asc index 31ab971a..57ae2020 100644 --- a/book/07-git-tools/sections/searching.asc +++ b/book/07-git-tools/sections/searching.asc @@ -1,4 +1,4 @@ -[[_searching]] +[[r_searching]] === Buscando @@ -7,7 +7,7 @@ Con casi cualquier tamaño de código de base, a menudo necesitará encontrar en ======= -[[_git_grep]] +[[r_git_grep]] ==== Git Grep diff --git a/book/07-git-tools/sections/signing.asc b/book/07-git-tools/sections/signing.asc index 17d78511..89b28bb9 100644 --- a/book/07-git-tools/sections/signing.asc +++ b/book/07-git-tools/sections/signing.asc @@ -1,4 +1,4 @@ -[[_signing]] +[[r_signing]] === Firmando tu trabajo Git es criptográficamente seguro, pero no es a prueba de tontos. Si estás tomando trabajo de otros de internet y quieres verificar que los commits son realmente de fuentes seguras, Git tiene unas cuantas maneras de firmar y verificar utilizando GPG. @@ -105,7 +105,7 @@ gpg: Can't check signature: public key not found error: could not verify the tag 'v1.4.2.1' ---- -[[_signing_commits]] +[[r_signing_commits]] ==== Firmando Commits En versiones más recientes de Git (v1.7.9 en adelante), ahora puedes firmar commits individuales. Si estás interesado en firmar commits directamente en lugar de solo los tags, todo lo que necesitas hacer es agregar un `-S` a tu comando `git commit`. diff --git a/book/07-git-tools/sections/stashing-cleaning.asc b/book/07-git-tools/sections/stashing-cleaning.asc index 186aae97..2f566901 100644 --- a/book/07-git-tools/sections/stashing-cleaning.asc +++ b/book/07-git-tools/sections/stashing-cleaning.asc @@ -1,4 +1,4 @@ -[[_git_stashing]] +[[r_git_stashing]] === Guardado rápido y Limpieza Muchas veces, cuando has estado trabajando en una parte de tu proyecto, las cosas se encuentran desordenadas y quieres cambiar de ramas por un momento para trabajar en algo más. @@ -205,7 +205,7 @@ Dropped refs/stash@{0} (f0dfc4d5dc332d1cee34a634182e168c4efc3359) Este es un buen método rápido para recuperar rápidamente trabajos guardados y trabajar en una nueva rama. -[[_git_clean]] +[[r_git_clean]] ==== Limpiando tu Directorio de Trabajo Finalmente, puede que no quieras hacer guardado rápido de algo de trabajo o de archivos en tu directorio de trabajo, pero quieres desaserte de ellos. El comando `git clean` hará esto por ti. diff --git a/book/07-git-tools/sections/submodules.asc b/book/07-git-tools/sections/submodules.asc index b99fcda9..62c7b22a 100644 --- a/book/07-git-tools/sections/submodules.asc +++ b/book/07-git-tools/sections/submodules.asc @@ -1,4 +1,4 @@ -[[_git_submodules]] +[[r_git_submodules]] === Submódulos A menudo ocurre que mientras trabaja en un proyecto, necesita usar otro proyecto desde adentro. @@ -16,7 +16,7 @@ Git aborda este problema utilizando submódulos. Los submódulos le permiten mantener un repositorio de Git como un subdirectorio de otro repositorio de Git. Esto le permite clonar otro repositorio en su proyecto y mantener sus commits separados. -[[_starting_submodules]] +[[r_starting_submodules]] ==== Comenzando con los Submódulos Pasaremos por el desarrollo de un proyecto simple que se ha dividido en un proyecto principal y algunos subproyectos. @@ -121,7 +121,7 @@ $ git commit -am 'added DbConnector module' Observe el modo `160000` para la entrada` DbConnector`. Ese es un modo especial en Git que básicamente significa que está registrando una confirmación como una entrada de directorio en lugar de un subdirectorio o un archivo. -[[_cloning_submodules]] +[[r_cloning_submodules]] ==== Clonación de un Proyecto con Submódulos Aquí clonaremos un proyecto con un submódulo. @@ -462,7 +462,7 @@ Unable to merge 'c75e92a2b3855c9e5b66f915308390d9db204aca' in submodule path 'Db Puede acceder al directorio de submódulos y solucionar el conflicto tal como lo haría normalmente. ======= -[[_publishing_submodules]] +[[r_publishing_submodules]] ===== Publicando Cambios de Submódulo @@ -738,7 +738,7 @@ Aquí podemos ver que estamos definiendo una función en un submódulo y llamán ===== Alias Útiles -Es posible que desee configurar algunos alias para algunos de estos comandos, ya que pueden ser bastante largos y no puede establecer opciones de configuración para la mayoría de ellos para que sean predeterminados. Cubrimos la configuración de alias de Git en <<_git_aliases>>, pero aquí hay un ejemplo de lo que puede querer configurar si planea trabajar mucho con submódulos en Git. +Es posible que desee configurar algunos alias para algunos de estos comandos, ya que pueden ser bastante largos y no puede establecer opciones de configuración para la mayoría de ellos para que sean predeterminados. Cubrimos la configuración de alias de Git en <>, pero aquí hay un ejemplo de lo que puede querer configurar si planea trabajar mucho con submódulos en Git. [source,console] ---- diff --git a/book/07-git-tools/sections/subtree-merges.asc b/book/07-git-tools/sections/subtree-merges.asc index 49ad9b6a..90e78177 100644 --- a/book/07-git-tools/sections/subtree-merges.asc +++ b/book/07-git-tools/sections/subtree-merges.asc @@ -1,4 +1,4 @@ -[[_subtree_merge]] +[[r_subtree_merge]] ===== Convergencia de Subárbol @@ -48,7 +48,7 @@ Este concepto es algo extraño. No todos los branchs en su repositorio tendrán En este caso, queremos integrar el proyecto Rack a nuestro proyecto `master` como un subdirectorio. Podemos hacer eso en Git con `git read-tree`. -Aprenderá más sobre `read-tree` y sus amigos en <<_git_internals>>, pero por ahora sepa que este interpreta el árbol raíz de un branch en su area de staging y directorio de trabajo. +Aprenderá más sobre `read-tree` y sus amigos en <>, pero por ahora sepa que este interpreta el árbol raíz de un branch en su area de staging y directorio de trabajo. Sólo cambiamos de vuelta a su branch `master`, e integramos el branch `rack_branch` al subdirectorio `rack` de nuestro branch `master` de nuestro proyecto principal: [source,console] @@ -80,7 +80,7 @@ Automatic merge went well; stopped before committing as requested Todos los cambios del proyeto Rack se convergieron y están listos para ser encomendados localmente. También puede hacer lo opuesto - hacer cambios en el subdirectorio `rack` de su master branch y luego convergerlos a su branch `rack_branch` más adelante para entregarlos a los mantenedores o empujarlos río arriba. -Esto nos deja una manera de tener un flujo de trabajo algo similar al flujo de trabajo de submódulo sin utilizar submódulos (de los cuales hablaremos en <<_git_submodules>>). Podemos mantener branchs con otros proyectos relacionados en nuestro repositorio y convergerlos tipo subárbol a nuestro proyecto ocasionalmente. Esto es bueno por ciertas razones, por ejemplo todo el códido se encomienda a un único lugar. Sin embargo, tiene el defecto de ser un poco más complejo y facilita el cometer errores al reintegrar cambios o empujar accidentalmente un branch a un repositorio con el que no guarda relación. +Esto nos deja una manera de tener un flujo de trabajo algo similar al flujo de trabajo de submódulo sin utilizar submódulos (de los cuales hablaremos en <>). Podemos mantener branchs con otros proyectos relacionados en nuestro repositorio y convergerlos tipo subárbol a nuestro proyecto ocasionalmente. Esto es bueno por ciertas razones, por ejemplo todo el códido se encomienda a un único lugar. Sin embargo, tiene el defecto de ser un poco más complejo y facilita el cometer errores al reintegrar cambios o empujar accidentalmente un branch a un repositorio con el que no guarda relación. Otra particularidad es que para diferenciar entre lo que tiene en su subdirectorio `rack` y el código en su branch `rack_branch` - para ver si necesita convergerlos - no puede usar el comando `diff` normal. En lugar de esto, debe ejecutar `git diff-tree` con el branch que desea comparar a: diff --git a/book/08-customizing-git/images/clean.png b/book/08-customizing-git/images/clean.png deleted file mode 100644 index eed88a53..00000000 Binary files a/book/08-customizing-git/images/clean.png and /dev/null differ diff --git a/book/08-customizing-git/images/p4merge.png b/book/08-customizing-git/images/p4merge.png deleted file mode 100644 index b051b7a6..00000000 Binary files a/book/08-customizing-git/images/p4merge.png and /dev/null differ diff --git a/book/08-customizing-git/images/smudge.png b/book/08-customizing-git/images/smudge.png deleted file mode 100644 index 1edd3866..00000000 Binary files a/book/08-customizing-git/images/smudge.png and /dev/null differ diff --git a/book/08-customizing-git/sections/attributes.asc b/book/08-customizing-git/sections/attributes.asc index c161e65e..fc0a4ea2 100755 --- a/book/08-customizing-git/sections/attributes.asc +++ b/book/08-customizing-git/sections/attributes.asc @@ -187,7 +187,7 @@ index 88839c4..4afcb7c 100644 Aquí se ve claramente que ha cambiado el tamaño del archivo y las dimensiones de la imagen. -[[_keyword_expansion]] +[[r_keyword_expansion]] ==== Expansión de palabras clave (((keyword expansion))) @@ -236,15 +236,15 @@ sustituciones en los archivos al guardar o recuperar (commit/checkout). Se trata de los filtros ``clean'' y ``smudge''. En el archivo `.gitattibutes' puedes indicar filtros para carpetas o archivos determinados y luego preparar tus propios scripts para procesarlos justo antes de confirmar cambios en ellos -(``clean'', ver <>), o justo antes de recuperarlos (``smudge'', ver -<>). Estos filtros pueden utilizarse para realizar todo tipo de +(``clean'', ver <>), o justo antes de recuperarlos (``smudge'', ver +<>). Estos filtros pueden utilizarse para realizar todo tipo de acciones útiles. -[[filters_a]] +[[rfilters_a]] .Ejecución de filtro ``smudge'' en el checkout. image::images/smudge.png[Ejecución de filtro ``smudge'' en el checkout.] -[[filters_b]] +[[rfilters_b]] .Ejecución de filtro ``clean'' antes de confirmar el cambio. image::images/clean.png[Ejecución de filtro ``clean'' antes de confirmar el cambio.] diff --git a/book/08-customizing-git/sections/config.asc b/book/08-customizing-git/sections/config.asc index be3aff41..d5eb96f5 100755 --- a/book/08-customizing-git/sections/config.asc +++ b/book/08-customizing-git/sections/config.asc @@ -1,8 +1,8 @@ -[[_git_config]] +[[r_git_config]] === Configuración de Git (((git commands, config))) -Como se ha visto brevemente en <<_getting_started>>, podemos acceder a los +Como se ha visto brevemente en <>, podemos acceder a los ajustes de configuración de Git a través del comando 'git config'. Una de las primeras acciones que has realizado con Git ha sido el configurar tu nombre y tu dirección de correo-e. @@ -159,7 +159,7 @@ comandos, independientemente de lo largo que sea éste. (((GPG))) Si tienes costumbre de firmar tus etiquetas (tal y como se ha visto en -<<_signing>>), configurar tu clave de firma GPG puede facilitarte la labor. +<>), configurar tu clave de firma GPG puede facilitarte la labor. Puedes configurar tu clave ID de esta forma: [source,console] @@ -181,7 +181,7 @@ $ git tag -s Se pueden indicar expresiones en el archivo '.gitignore' de tu proyecto para indicar a Git lo que debe considerar o no como archivos sin seguimiento, o lo que interará o no seleccionar cuando lances el comando 'git add', tal y como -se indicó en <<_ignoring>>. +se indicó en <>. Pero a veces, necesitas ignorar ciertos archivos en todos los repositorios con los que trabajas. Por ejemplo, si trabajas en una computadora con Mac OS @@ -285,7 +285,7 @@ Puedes ajustar un color a cualquiera de los siguientes valores: `normal`, También puedes aplicar atributos tales como `bold` (negrita), `dim` (tenue), `ul` (subrayado), `blink` (parpadeante) y `reverse`(video inverso). -[[_external_merge_tools]] +[[r_external_merge_tools]] ==== Herramientas externas para fusión y diferencias (((mergetool)))(((difftool))) @@ -645,4 +645,4 @@ a través de la mesa (push across the board), --ningún usuario lo podrá hacer- Para borrar ramas remotas, tendrás que borrar los archivos de referencia manualmente sobre el propio servidor. Existen también algunas otras maneras más interesantes de hacer esto mismo, pero para usuarios concretos, a través -de permisos (ACLs); tal y como veremos en <<_an_example_git_enforced_policy>>. +de permisos (ACLs); tal y como veremos en <>. diff --git a/book/08-customizing-git/sections/hooks.asc b/book/08-customizing-git/sections/hooks.asc index 91e0c340..98a51b16 100755 --- a/book/08-customizing-git/sections/hooks.asc +++ b/book/08-customizing-git/sections/hooks.asc @@ -1,4 +1,4 @@ -[[_git_hooks]] +[[r_git_hooks]] === Puntos de enganche en Git (((hooks))) @@ -44,7 +44,7 @@ de correo electrónico y todos los demás. Observa que los puntos de enganche del lado del cliente *no se copian* cuando clonas el repositorio. Si quieres que tengan un efecto para forzar una política es necesario que esté en el lado del cliente. Por ejemplo, mira en -<<_an_example_git_enforced_policy>>. +<>. ==== ===== Puntos en el flujo de trabajo de confirmación de cambios @@ -93,7 +93,7 @@ pero podemos obtener fácilmente la última confirmación de cambios con el comando `git log -1 HEAD`. Habitualmente, este script final se suele utilizar para realizar notificaciones o tareas similares. -[[_email_hooks]] +[[r_email_hooks]] ===== Puntos en el flujo de trabajo del correo electrónico Tienes disponibles tres puntos de enganche en el lado cliente para interactuar @@ -123,7 +123,7 @@ punto `post-applypatch`. Puedes utilizarlo para notificar de su aplicación al grupo o al autor del parche. No puedes detener el proceso de parcheo con este script. -[[_other_client_hooks]] +[[r_other_client_hooks]] ===== Otros puntos de enganche del lado cliente El punto `pre-rebase` se activa antes de cualquier reorganización y puede diff --git a/book/08-customizing-git/sections/policy.asc b/book/08-customizing-git/sections/policy.asc index 3f781d5c..42cdaeab 100644 --- a/book/08-customizing-git/sections/policy.asc +++ b/book/08-customizing-git/sections/policy.asc @@ -1,4 +1,4 @@ -[[_an_example_git_enforced_policy]] +[[r_an_example_git_enforced_policy]] === Un ejemplo de implantación de una determinada política en Git (((policy example))) @@ -54,7 +54,7 @@ puts "(#{$refname}) (#{$oldrev[0,6]}) (#{$newrev[0,6]})" Sí, estoy usando variables globales. No me juzgues por ello, que es más sencillo mostrarlo de esta manera. -[[_enforcing_commit_message_format]] +[[r_enforcing_commit_message_format]] ===== Obligando a utilizar un formato específico en el mensaje de commit Tu primer desafío es asegurarte que todos y cada uno de los mensajes de @@ -91,7 +91,7 @@ una expresión regular de búsqueda del patrón deseado. Tienes que imaginarte cómo puedes obtener el mensaje de cada una de esas confirmaciones de cambios a comprobar. Para obtener los datos "en crudo" de una confirmación de cambios, puedes utilizar otro comando de mantenimiento de -Git denominado `git cat-file`. En <<_git_internals>> volveremos en detalle +Git denominado `git cat-file`. En <> volveremos en detalle sobre estos comandos de mantenimiento; pero, por ahora, esto es lo que obtienes con dicho comando: diff --git a/book/09-git-and-other-scms/images/git-fusion-boot.png b/book/09-git-and-other-scms/images/git-fusion-boot.png deleted file mode 100644 index 07bdbbeb..00000000 Binary files a/book/09-git-and-other-scms/images/git-fusion-boot.png and /dev/null differ diff --git a/book/09-git-and-other-scms/images/git-fusion-perforce-graph.png b/book/09-git-and-other-scms/images/git-fusion-perforce-graph.png deleted file mode 100644 index 0883befb..00000000 Binary files a/book/09-git-and-other-scms/images/git-fusion-perforce-graph.png and /dev/null differ diff --git a/book/09-git-and-other-scms/images/git-tfs-ct.png b/book/09-git-and-other-scms/images/git-tfs-ct.png deleted file mode 100644 index e6311fe1..00000000 Binary files a/book/09-git-and-other-scms/images/git-tfs-ct.png and /dev/null differ diff --git a/book/09-git-and-other-scms/sections/client-p4.asc b/book/09-git-and-other-scms/sections/client-p4.asc index 4dd46cef..fc2a7c4d 100644 --- a/book/09-git-and-other-scms/sections/client-p4.asc +++ b/book/09-git-and-other-scms/sections/client-p4.asc @@ -11,7 +11,7 @@ Hay dos opciones si desea mezclar el uso de Perforce y Git. La primera que veremos es el puente ``Git Fusion'' de los creadores de Perforce, que le permite exponer los subárboles de su depósito de Perforce como repositorios de lectura y escritura de Git. La segunda es git-p4, un puente del lado del cliente que le permite usar Git como un cliente Perforce, sin requerir ninguna reconfiguración del servidor Perforce. -[[_p4_git_fusion]] +[[r_p4_git_fusion]] ===== Git Fusion (((Perforce, Git Fusion))) @@ -590,7 +590,7 @@ Nuestra historia se volvió lineal, como si hubiéramos vuelto a basar antes de Esto significa que puede ser libre para crear, trabajar, deshacer y fusionar ramas en el lado de Git sin miedo a que su historia se vuelva incompatible con Perforce. Si puede volver a establecerla, puede contribuir a un servidor de Perforce. -[[_git_p4_branches]] +[[r_git_p4_branches]] ====== Ramificación Si su proyecto Perforce tiene múltiples ramas, no está sin suerte; git-p4 puede manejar eso de una manera que lo haga sentir como Git. diff --git a/book/09-git-and-other-scms/sections/client-svn.asc b/book/09-git-and-other-scms/sections/client-svn.asc index e2823927..a94a168d 100644 --- a/book/09-git-and-other-scms/sections/client-svn.asc +++ b/book/09-git-and-other-scms/sections/client-svn.asc @@ -1,4 +1,4 @@ -[[_git_svn]] +[[r_git_svn]] ==== Git y Subversión diff --git a/book/09-git-and-other-scms/sections/import-custom.asc b/book/09-git-and-other-scms/sections/import-custom.asc index 53e7cee7..4d66ba91 100644 --- a/book/09-git-and-other-scms/sections/import-custom.asc +++ b/book/09-git-and-other-scms/sections/import-custom.asc @@ -1,4 +1,4 @@ -[[_custom_importer]] +[[r_custom_importer]] ==== Un proveedor individual (((git commands, fast-import))) @@ -6,7 +6,7 @@ Si su sistema no es uno de los arriba mencionados, usted debe buscar un importador online - importadores de calidad están disponibles para muchos otros sistemas, incluido el CVS, Clear Case, Visual Source Safe, incluso un directorio de archivos. Si ninguna de estas herramientas funciona para usted, tiene una herramienta más obsoleta o necesita un método de importación más personalizado, debería usar `git fast-import'.. Este comando lee instrucciones simples de stdin para escribir datos Git específicos. -Es mucho más fácil crear objetos Git de esta manera que ejecutar los comandos raw Git o intentar escribir los objetos raw (ver <<<_git_internals>> para más información). +Es mucho más fácil crear objetos Git de esta manera que ejecutar los comandos raw Git o intentar escribir los objetos raw (ver <<> para más información). De esta manera, puede escribir un script de importación que lee la documentación necesaria del sistema desde el que está cargando e imprime instrucciones directas a stdout. A continuación, puede ejecutar este programa y canalizar su resultado mediante `git fast-import @@ -29,7 +29,7 @@ Como recordará, Git es fundamentalmente una listado enlazado de objetos commit Todo lo que tienes por hacer es indicarle a `fast-import`qué son las snapshots de contenido, cuáles son los puntos de datos de confirmación y el orden en que van a entrar. Su estrategia será para ir a través de snapshots Uno a la vez y crear commits con el contenido de cada directorio, vinculando cada commit al anterior. -Como hicimos en <<_an_example_git_enforced_policy>>, scribiremos esto en Ruby, porque es con lo que generalmente trabajamos y tiende a ser fácilmente legible.Usted puede escribir este ejemplo con bastante facilidad en cualquier elemento con el que esté familiarizado - sólo tiene que escribir la información apropiada a "stdout"., si se está ejecutando en Windows, esto significa que usted tendrá que tener especial cuidado de no introducir porte devoluciones al final de sus líneas - Importación rápida de git es muy particular acerca de que sólo quieren saltos de línea (LF) salto de línea (CRLF) usando windows. +Como hicimos en <>, scribiremos esto en Ruby, porque es con lo que generalmente trabajamos y tiende a ser fácilmente legible.Usted puede escribir este ejemplo con bastante facilidad en cualquier elemento con el que esté familiarizado - sólo tiene que escribir la información apropiada a "stdout"., si se está ejecutando en Windows, esto significa que usted tendrá que tener especial cuidado de no introducir porte devoluciones al final de sus líneas - Importación rápida de git es muy particular acerca de que sólo quieren saltos de línea (LF) salto de línea (CRLF) usando windows. Para empezar, cambiará al directorio de destino e identificará cada subdirectorio, cada uno de los cuales es snapshot que desea importar como un commit. diff --git a/book/09-git-and-other-scms/sections/import-p4.asc b/book/09-git-and-other-scms/sections/import-p4.asc index 88ad6954..71fd563e 100644 --- a/book/09-git-and-other-scms/sections/import-p4.asc +++ b/book/09-git-and-other-scms/sections/import-p4.asc @@ -1,4 +1,4 @@ -[[_perforce_import]] +[[r_perforce_import]] ==== Perforce (((Perforce)))(((Importing, from Perforce))) @@ -13,7 +13,7 @@ Git Fusion te deja con lo que parece ser un repositorio nativo de Git, que luego Incluso puede usar Perforce como su host Git si gusta. -[[_git_p4]] +[[r_git_p4]] ===== Git-p4 Git-p4 también puede actuar como una herramienta de importación. diff --git a/book/09-git-and-other-scms/sections/import-tfs.asc b/book/09-git-and-other-scms/sections/import-tfs.asc index 61eda335..200180d0 100644 --- a/book/09-git-and-other-scms/sections/import-tfs.asc +++ b/book/09-git-and-other-scms/sections/import-tfs.asc @@ -1,4 +1,4 @@ -[[_git_tfs]] +[[r_git_tfs]] ==== TFS (((TFS)))(((Importing, from TFS))) diff --git a/book/10-git-internals/images/data-model-1.png b/book/10-git-internals/images/data-model-1.png deleted file mode 100644 index d11b69c0..00000000 Binary files a/book/10-git-internals/images/data-model-1.png and /dev/null differ diff --git a/book/10-git-internals/images/data-model-2.png b/book/10-git-internals/images/data-model-2.png deleted file mode 100644 index ca6b9ba6..00000000 Binary files a/book/10-git-internals/images/data-model-2.png and /dev/null differ diff --git a/book/10-git-internals/images/data-model-3.png b/book/10-git-internals/images/data-model-3.png deleted file mode 100644 index 8f76ae1f..00000000 Binary files a/book/10-git-internals/images/data-model-3.png and /dev/null differ diff --git a/book/10-git-internals/images/data-model-4.png b/book/10-git-internals/images/data-model-4.png deleted file mode 100644 index ea9734f2..00000000 Binary files a/book/10-git-internals/images/data-model-4.png and /dev/null differ diff --git a/book/10-git-internals/sections/environment.asc b/book/10-git-internals/sections/environment.asc index 0375b22a..f73c3e98 100644 --- a/book/10-git-internals/sections/environment.asc +++ b/book/10-git-internals/sections/environment.asc @@ -221,7 +221,7 @@ Es probablemente más fácil usar simplemente el archivo `~/.ssh/config` para es *`GIT_ASKPASS`* es una sobreescritura para el valor de configuración `core.askpass`. Este es el programa invocado cada vez que Git necesita pedir al usuario las credenciales, que puede mostrar un indicador similar a la línea de comandos, y debería devolver la respuesta en `stdout`. -(Consulta <<_credential_caching>> para más detalles acerca de este subsistema.) +(Consulta <> para más detalles acerca de este subsistema.) *`GIT_NAMESPACE`* controla el acceso a las referencias de un espacio de nombres, y es equivalente al indicador `--namespace`. Esto es principalmente útil en el lado servidor, donde puedes querer almacenar múltiples bifurcaciones (forks) de un único repositorio en un repositorio, solo manteniendo las referencias separadas. diff --git a/book/10-git-internals/sections/maintenance.asc b/book/10-git-internals/sections/maintenance.asc index 09b878d9..8c4d8367 100644 --- a/book/10-git-internals/sections/maintenance.asc +++ b/book/10-git-internals/sections/maintenance.asc @@ -3,7 +3,7 @@ De vez en cuando, es posible que necesites hacer algo de limpieza, (compactar un repositorio, adecuar un repositorio importado, recuperar trabajo perdido,...). En ese apartado vamos a ver algunos de esos escenarios. -[[_git_gc]] +[[r_git_gc]] ==== Mantenimiento De cuando en cuando, Git lanza automáticamente un comando llamado ''auto gc''. @@ -55,7 +55,7 @@ Cualquier referencia que no puedas encontrar en la carpeta `refs`, es muy posibl Merece destacar que la última línea de este archivo comenzaba con `^`. Esto nos indica que la etiqueta inmediatamente anterior es una etiqueta anotada y que esa línea es la confirmación de cambios a la que apunta dicha etiqueta anotada. -[[_data_recovery]] +[[r_data_recovery]] ==== Recuperación de datos En algún momento de tu trabajo con Git, perderás por error una confirmación de cambios. @@ -94,7 +94,7 @@ El problema es cómo localizarla, --porque, ¿no te la sabrás de memoria, no?-- El método más rápido para conseguirlo suele ser utilizar una herramienta denominada `git reflog`. Según trabajas, Git suele guardar un silencioso registro de donde está HEAD en cada momento. Cada vez que confirmas cambios o cambias de rama, el registro (reflog) es actualizado. -El registro reflog se actualiza incluso cuando utilizas el comando `git update-ref`, siendo ésta otra de las razones por las que es recomendable utilizar ese comando en lugar de escribir manualmente los valores SHA-1 en los archivos de referencia, tal y como hemos visto en <<_git_refs>>. +El registro reflog se actualiza incluso cuando utilizas el comando `git update-ref`, siendo ésta otra de las razones por las que es recomendable utilizar ese comando en lugar de escribir manualmente los valores SHA-1 en los archivos de referencia, tal y como hemos visto en <>. Con el comando `git reflog` puedes revisar donde has estado en cualquier momento pasado: [source,console] @@ -172,7 +172,7 @@ dangling blob 7108f7ecb345ee9d0084193f147cdad4d2998293 En este caso, puedes ver la confirmación de cambios perdida después del texto ''dangling commit''. Y la puedes recuperar del mismo modo, añadiendo una rama que apunte a esa clave SHA-1. -[[_removing_objects]] +[[r_removing_objects]] ==== Borrando objetos Git tiene grandes cosas, pero el hecho de que un `git clone` siempre descargue la historia completa del proyecto (incluyendo todas y cada una de las versiones de todos y cada uno de los archivos) puede causar problemas. @@ -263,7 +263,7 @@ dadf7258d699da2c8d89b09ef6670edb7d5f91b4 commit 229 159 12 ---- El archivo enorme es el último: 5MB. -Para concretar cual es el archivo, puedes utilizar el comando `rev-list` que ya vimos brevemente en <<_enforcing_commit_message_format>>. +Para concretar cual es el archivo, puedes utilizar el comando `rev-list` que ya vimos brevemente en <>. Con la opción `--objects`, obtendrás la lista de todas las SHA-1s de todas las confirmaciones de cambio, junto a las SHA-1s de los objetos binarios y las ubicaciones (paths) de cada uno de ellos. Puedes usar esta información para localizar el nombre del objeto binario: @@ -284,7 +284,7 @@ dadf725 oops - removed large tarball ---- Para borrar realmente ese archivo de tu historial Git, has de reescribir todas las confirmaciones de cambio desde `7b30847`. -Y, para ello, puedes emplear el comando `filter-branch` que se vió en <<_rewriting_history>>: +Y, para ello, puedes emplear el comando `filter-branch` que se vió en <>: [source,console] ---- @@ -295,7 +295,7 @@ Rewrite dadf7258d699da2c8d89b09ef6670edb7d5f91b4 (2/2) Ref 'refs/heads/master' was rewritten ---- -La opción `--index-filter` es similar a la `--tree-filter` vista en <<_rewriting_history>>, pero, en lugar de modificar archivos activados (checked out) en el disco, se modifica el área de preparación (staging area) o índice. +La opción `--index-filter` es similar a la `--tree-filter` vista en <>, pero, en lugar de modificar archivos activados (checked out) en el disco, se modifica el área de preparación (staging area) o índice. En lugar de borrar un archivo concreto con una orden tal como `rm archivo`, has de borrarlo con `git rm --cached` (es decir, tienes que borrarlo del índice, en lugar de del disco). Con eso conseguimos aumentar la velocidad, ya que el proceso es mucho más rápido, porque Git no ha de activar cada revisión a disco antes de procesar tu filtro. Aunque también puedes hacer lo mismo con la opción`--tree-filter`, si así lo prefieres. diff --git a/book/10-git-internals/sections/objects.asc b/book/10-git-internals/sections/objects.asc index ecfa321d..cf184622 100644 --- a/book/10-git-internals/sections/objects.asc +++ b/book/10-git-internals/sections/objects.asc @@ -1,4 +1,4 @@ -[[_objects]] +[[r_objects]] === Los objetos Git Git es un sistema de archivo orientado a contenidos. @@ -119,7 +119,7 @@ $ git cat-file -t 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a blob ---- -[[_tree_objects]] +[[r_tree_objects]] ==== Objetos tipo árbol El siguiente tipo de objeto a revisar serán los árboles, que se encargan de resolver el problema de guardar un nombre de archivo, a la par que guardamos conjuntamente un grupo de archivos. @@ -231,7 +231,7 @@ Puedes pensar en algo parecido a esto para representar los datos guardados por G .La estructura del contenido Git para tus datos actuales. image::images/data-model-2.png[La estructura del contenido Git para tus datos actuales.] -[[_git_commit_objects]] +[[r_git_commit_objects]] ==== Objetos de confirmación de cambios Tienes tres árboldes que representan diferentes momentos interesantes de tu proyecto, pero el problema principal sigue siendo el estar obligado a recordar los tres valores SHA-1 para poder recuperar cualquiera de esos momentos. diff --git a/book/10-git-internals/sections/plumbing-porcelain.asc b/book/10-git-internals/sections/plumbing-porcelain.asc index 7262a2f3..e5af9e46 100644 --- a/book/10-git-internals/sections/plumbing-porcelain.asc +++ b/book/10-git-internals/sections/plumbing-porcelain.asc @@ -1,4 +1,4 @@ -[[_plumbing_porcelain]] +[[r_plumbing_porcelain]] === Fontanería y porcelana Este libro habla acerca de como utilizar Git con más o menos 30 verbos, tales como `checkout`, `branch`, `remote`, etc. @@ -29,7 +29,7 @@ refs/ Puede que veas algunos otros archivos en tu carpeta `.git`, pero este es el contenido de un repositorio recién creado tras ejecutar `git init`, -es la estructura por defecto. El archivo `description` se utiliza solo en el programa GitWeb; por lo que no necesitas preocuparte por él. El archivo `config` contiene las opciones de configuración específicas de este proyecto concreto, y la carpeta `info` guarda un archivo global de exclusión con los patrones a ignorar además de los presentes en el archivo `.gitignore`. -La carpeta `hooks` contiene tus scripts, tanto de la parte cliente como de la parte servidor, tal y como se ha visto a detalle en el <<_git_hooks>>. +La carpeta `hooks` contiene tus scripts, tanto de la parte cliente como de la parte servidor, tal y como se ha visto a detalle en el <>. Esto nos deja con cuatro entradas importantes: los archivos `HEAD` e `index` (todavía por ser creado), y las carpetas `objects` y `refs`. Estos elementos forman el núcleo de Git. diff --git a/book/10-git-internals/sections/refs.asc b/book/10-git-internals/sections/refs.asc index 773061db..00335cf7 100644 --- a/book/10-git-internals/sections/refs.asc +++ b/book/10-git-internals/sections/refs.asc @@ -1,4 +1,4 @@ -[[_git_refs]] +[[r_git_refs]] === Referencias Git Puedes utilizar algo así como `git log 1a410e` para echar un vistazo a lo largo de toda tu historia, recorriéndola y encontrando todos tus objetos. Pero para ello has necesitado recordar que la última confirmación de cambios es `1a410e`. @@ -66,7 +66,7 @@ image::images/data-model-4.png[Objetos en la carpeta Git, con referencias a las Cuando lanzas comandos como `git branch (nombrederama)`, lo que hace Git es añadir, a cualquier nueva referencia que vayas a crear, el valor SHA-1 de la última confirmación de cambios en esa rama. -[[_the_head]] +[[r_the_head]] ==== La CABEZA (HEAD) Y ahora nos preguntamos, al lanzar el comando `git branch (nombrederama)`, ¿cómo sabe Git cuál es el valor SHA-1 de la última confirmación de cambios?. @@ -125,7 +125,7 @@ El objeto tipo etiqueta es muy parecido al tipo confirmación de cambios, --cont Su principal diferencia reside en que generalmente apunta a una confirmación de cambios (commit) en lugar de a un árbol (tree). Es como una referencia a una rama, pero permaneciendo siempre inmóvil, --apuntando siempre a la misma confirmación de cambios--, dando un nombre mas amigable a esta. -Tal y como se ha comentado en <<_git_basics_chapter>>, hay dos tipos de etiquetas: las anotativas y las ligeras. +Tal y como se ha comentado en <>, hay dos tipos de etiquetas: las anotativas y las ligeras. Puedes crear una etiqueta ligera lanzando un comando tal como: [source,console] diff --git a/book/10-git-internals/sections/refspec.asc b/book/10-git-internals/sections/refspec.asc index 2b5aca75..643f0fb3 100644 --- a/book/10-git-internals/sections/refspec.asc +++ b/book/10-git-internals/sections/refspec.asc @@ -1,4 +1,4 @@ -[[_refspec]] +[[r_refspec]] === Las especificaciones para hacer referencia a... (refspec) A lo largo del libro hemos utilizado sencillos mapeados entre ramas remotas y referencias locales, pero las cosas pueden ser bastante más complejas. @@ -95,7 +95,7 @@ Si tienes un equipo QA que envía al servidor una serie de ramas, y deseas recup De esta forma, puedes asignar fácilmente espacios de nombres; y resolver así complejos flujos de trabajo donde tengas simultáneamente, por ejemplo, un equipo QA enviando ramas, varios desarrolladores enviando ramas también y equipos integradores enviando y colaborando en ramas remotas. -[[_pushing_refspecs]] +[[r_pushing_refspecs]] ==== Enviando (push) referencias Es útil poder recuperar (fetch) referencias relativas en espacios de nombres, tal y como hemos visto, pero, ¿cómo pueden enviar (push) sus ramas al espacio de nombres `qa/` los miembros de equipo QA ?. diff --git a/book/A-git-in-other-environments/images/branch_widget_mac.png b/book/A-git-in-other-environments/images/branch_widget_mac.png deleted file mode 100644 index 73b00b35..00000000 Binary files a/book/A-git-in-other-environments/images/branch_widget_mac.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/branch_widget_win.png b/book/A-git-in-other-environments/images/branch_widget_win.png deleted file mode 100644 index 285195ed..00000000 Binary files a/book/A-git-in-other-environments/images/branch_widget_win.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/egit.png b/book/A-git-in-other-environments/images/egit.png deleted file mode 100644 index 284ebe7f..00000000 Binary files a/book/A-git-in-other-environments/images/egit.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/git-bash.png b/book/A-git-in-other-environments/images/git-bash.png deleted file mode 100644 index 59f00bb8..00000000 Binary files a/book/A-git-in-other-environments/images/git-bash.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/git-gui.png b/book/A-git-in-other-environments/images/git-gui.png deleted file mode 100644 index 9c988047..00000000 Binary files a/book/A-git-in-other-environments/images/git-gui.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/github_mac.png b/book/A-git-in-other-environments/images/github_mac.png deleted file mode 100644 index acd59cfe..00000000 Binary files a/book/A-git-in-other-environments/images/github_mac.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/github_win.png b/book/A-git-in-other-environments/images/github_win.png deleted file mode 100644 index 1780863d..00000000 Binary files a/book/A-git-in-other-environments/images/github_win.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/gitk.png b/book/A-git-in-other-environments/images/gitk.png deleted file mode 100644 index 9fac838d..00000000 Binary files a/book/A-git-in-other-environments/images/gitk.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/posh-git.png b/book/A-git-in-other-environments/images/posh-git.png deleted file mode 100644 index 0d087574..00000000 Binary files a/book/A-git-in-other-environments/images/posh-git.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/vs-1.png b/book/A-git-in-other-environments/images/vs-1.png deleted file mode 100644 index 5c4e9291..00000000 Binary files a/book/A-git-in-other-environments/images/vs-1.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/vs-2.png b/book/A-git-in-other-environments/images/vs-2.png deleted file mode 100644 index a70ff9f0..00000000 Binary files a/book/A-git-in-other-environments/images/vs-2.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/zsh-oh-my.png b/book/A-git-in-other-environments/images/zsh-oh-my.png deleted file mode 100644 index 15cac3a9..00000000 Binary files a/book/A-git-in-other-environments/images/zsh-oh-my.png and /dev/null differ diff --git a/book/A-git-in-other-environments/images/zsh-prompt.png b/book/A-git-in-other-environments/images/zsh-prompt.png deleted file mode 100644 index cf609fb3..00000000 Binary files a/book/A-git-in-other-environments/images/zsh-prompt.png and /dev/null differ diff --git a/book/A-git-in-other-environments/sections/guis.asc b/book/A-git-in-other-environments/sections/guis.asc index 3213b916..f9c48a7f 100644 --- a/book/A-git-in-other-environments/sections/guis.asc +++ b/book/A-git-in-other-environments/sections/guis.asc @@ -198,11 +198,11 @@ If you already have a local repository, just drag its directory from the Finder Una vez instalado y configurado el cliente GitHub está listo para utilizarse en muchas tareas Git habituales. El flujo de trabajo previsto para esta herramienta se denomina ``Flujo GitHub.'' -Veremos con más detalle esto en <<_github_flow>>, pero, en esencia, consistirá en (a) realizar commits sobre una rama y (b) sincronizarse con un repositorio remoto con cierta regularidad. +Veremos con más detalle esto en <>, pero, en esencia, consistirá en (a) realizar commits sobre una rama y (b) sincronizarse con un repositorio remoto con cierta regularidad. //// Once it's installed and configured, you can use the GitHub client for many common Git tasks. The intended workflow for this tool is sometimes called the ``GitHub Flow.'' -We cover this in more detail in <<_github_flow>>, but the general gist is that (a) you'll be committing to a branch, and (b) you'll be syncing up with a remote repository fairly regularly. +We cover this in more detail in <>, but the general gist is that (a) you'll be committing to a branch, and (b) you'll be syncing up with a remote repository fairly regularly. //// La gestión de ramas es uno de los puntos en donde las dos herramientas varían. diff --git a/book/A-git-in-other-environments/sections/powershell.asc b/book/A-git-in-other-environments/sections/powershell.asc index 7b45df5a..70baaada 100644 --- a/book/A-git-in-other-environments/sections/powershell.asc +++ b/book/A-git-in-other-environments/sections/powershell.asc @@ -1,4 +1,4 @@ -[[_git_powershell]] +[[r_git_powershell]] === Git en Powershell El terminal de la línea de comandos estándar en Windows (`cmd.exe`) no es realmente capaz de ofrecer una experiencia personalizada en Git, pero si está utilizando Powershell tiene mucha suerte. diff --git a/book/A-git-in-other-environments/sections/visualstudio.asc b/book/A-git-in-other-environments/sections/visualstudio.asc index 60f0f755..ca5d9029 100644 --- a/book/A-git-in-other-environments/sections/visualstudio.asc +++ b/book/A-git-in-other-environments/sections/visualstudio.asc @@ -22,16 +22,16 @@ image::images/vs-1.png[Conectándose a un repositorio Git desde el Team Explorer Visual Studio recuerda todos los proyectos que se han abierto y que están controlados mediante Git, y estarán disponibles en la lista de abajo. Si no consigues ver el proyecto, haz clic en el enlace "Add" y escribe la ruta del directorio de trabajo. -Haciendo doble clic sobre uno de los repositorios locales Git, te lleva a la vista de inicio, que es como <>. +Haciendo doble clic sobre uno de los repositorios locales Git, te lleva a la vista de inicio, que es como <>. Este es el centro para realizar las acciones Git. Cuando estás _escribiendo_ código, probablemente dediques la mayor parte del tiempo sobre el visor de "Changes" (Cambios), aunque cuando llegue el momento de descargar (pull down) los cambios realizados por tus compañeros, seguramente utilizarás los visores de "Unsynced Commits" (Commit no sincronizados) y de "Branches" (Ramas). //// Visual Studio remembers all of the projects you've opened that are Git-controlled, and they're available in the list at the bottom. If you don't see the one you want there, click the "Add" link and type in the path to the working directory. -Double clicking on one of the local Git repositories leads you to the Home view, which looks like <>. +Double clicking on one of the local Git repositories leads you to the Home view, which looks like <>. This is a hub for performing Git actions; when you're _writing_ code, you'll probably spend most of your time in the "Changes" view, but when it comes time to pull down changes made by your teammates, you'll use the "Unsynced Commits" and "Branches" views. //// -[[vs_home]] +[[rvs_home]] .Vista de inicio del repositorio Git en Visual Studio. image::images/vs-2.png[Vista de inicio del repositorio Git en Visual Studio.] diff --git a/book/A-git-in-other-environments/sections/zsh.asc b/book/A-git-in-other-environments/sections/zsh.asc index 429fcae7..cf7a4527 100644 --- a/book/A-git-in-other-environments/sections/zsh.asc +++ b/book/A-git-in-other-environments/sections/zsh.asc @@ -37,8 +37,8 @@ image::images/zsh-prompt.png[Prompt `zsh` personalizado.] Zsh es lo suficientemente potente, tanto así que existen marcos metodológicos enteros dedicados a mejorarlo. Uno de estos se llama "oh-my-zsh", y puede ser encontrado en https://github.com/robbyrussell/oh-my-zsh[]. El sistema plug-in de oh-my-zsh viene con una poderosa completación de pestañas git, y tiene una variedad de "temas" de prompt, de los cuales muchos muestran datos de control de versiones. -<> es tan sólo un ejemplo de lo que puede realizarse con este sistema. +<> es tan sólo un ejemplo de lo que puede realizarse con este sistema. -[[oh_my_zsh_git]] +[[roh_my_zsh_git]] .An example of an oh-my-zsh theme. image::images/zsh-oh-my.png[Ejemplo de un tema oh-my-zsh.] diff --git a/book/B-embedding-git/sections/jgit.asc b/book/B-embedding-git/sections/jgit.asc index b3442f71..45dd610c 100644 --- a/book/B-embedding-git/sections/jgit.asc +++ b/book/B-embedding-git/sections/jgit.asc @@ -95,7 +95,7 @@ Los objetos Ref también se utilizan para representar referencias a etiquetas y La segunda línea obtiene el destino de la referencia `master`, que se devuelve como una instancia ObjectId. ObjectId representa el hash SHA-1 de un objeto, que podría o no existir en la base de datos de objetos de Git. -La tercera línea es similar, pero muestra cómo maneja JGit la sintaxis rev-parse (para más información sobre esto, consulta <<_branch_references>>); puedes pasar cualquier especificador de objeto que Git entienda, y JGit devolverá una ObjectId válida para ese objeto, o `null`. +La tercera línea es similar, pero muestra cómo maneja JGit la sintaxis rev-parse (para más información sobre esto, consulta <>); puedes pasar cualquier especificador de objeto que Git entienda, y JGit devolverá una ObjectId válida para ese objeto, o `null`. Las dos líneas siguientes muestran cómo cargar el contenido en bruto de un objeto. En este ejemplo, llamamos a `ObjectLoader.copyTo()` para transmitir el contenido del objeto directamente a la salida estándar, pero ObjectLoader también tiene métodos para leer el tipo y el tamaño de un objeto, así como devolverlo como un array de bytes. diff --git a/book/B-embedding-git/sections/libgit2.asc b/book/B-embedding-git/sections/libgit2.asc index 46b0db18..e60cbcf6 100644 --- a/book/B-embedding-git/sections/libgit2.asc +++ b/book/B-embedding-git/sections/libgit2.asc @@ -34,7 +34,7 @@ El tipo `git_repository` representa un identificador a un repositorio con una ca Éste es el método más simple, para cuando se conoce la ruta exacta al directorio de trabajo de un repositorio o carpeta `.git`. También está el `git_repository_open_ext` que incluye opciones para buscar, `git_clone` y compañía para hacer un clon local de un repositorio remoto, y `git_repository_init` para la creación de un repositorio completamente nuevo. -El segundo fragmento de código utiliza la sintaxis rev-parse (ver <<_branch_references>> para más información) para obtener el commit al HEAD finalmente apunta. +El segundo fragmento de código utiliza la sintaxis rev-parse (ver <> para más información) para obtener el commit al HEAD finalmente apunta. El tipo devuelto es un puntero `git_object`, lo que representa algo que existe en la base de datos de objetos de Git para un repositorio. `git_object` es en realidad un tipo ''padre'' de varios tipos diferentes de objetos; el diseño de memoria para cada uno de los tipos ''hijo'' es el mismo que para `git_object`, por lo que puedes hacer casting de forma segura hacia la derecha. En este caso, `git_object_type (commit)` devolvería `GIT_OBJ_COMMIT`, así que es seguro hacer casting a un puntero `git_commit`. @@ -105,7 +105,7 @@ commit = repo.lookup(commit_id) # <8> <8> El valor de retorno es el hash SHA-1 de un nuevo objeto commit, que luego se puede utilizar para obtener un objeto `Commit`. El código en Ruby es bonito y limpio, pero ya que Libgit2 está haciendo el trabajo pesado, este código se ejecutará bastante rápido, también. -Si no eres un rubyista, tocamos algunos otros vínculos en <<_libgit2_bindings>>. +Si no eres un rubyista, tocamos algunos otros vínculos en <>. ==== Funcionalidad Avanzada @@ -178,7 +178,7 @@ El resto es arbitrario; esta estructura puede ser tan grande o tan pequeña como La función de inicialización reserva memoria para la estructura, establece el contexto personalizado, y luego rellena los miembros de la estructura `parent` que soporta. Echa un vistazo al archivo `include/git2/sys/odb_backend.h` en el código fuente de Libgit2 para un conjunto completo de llamadas; tu caso de uso particular te ayudará a determinar cuál de éstas querrás soportar. -[[_libgit2_bindings]] +[[r_libgit2_bindings]] ==== Otros Vínculos (Bindings) Libgit2 tiene vínculos para muchos lenguajes. diff --git a/book/dedication.asc b/book/dedication.asc new file mode 100644 index 00000000..15d646e3 --- /dev/null +++ b/book/dedication.asc @@ -0,0 +1,6 @@ +[dedication] +== Dedicatorias + +_A mi esposa, Becky, sin la cual esta aventura nunca hubiera comenzado. - Ben_ + +_Esta edición está dedicada a mis niñas. A mi esposa Jessica que me ha apoyado durante todos estos años y a mi hija Josefina, que me apoyará cuando esté demasiado mayor para saber lo que pasa. - Scott_ diff --git a/book/license.asc b/book/license.asc new file mode 100644 index 00000000..490603e1 --- /dev/null +++ b/book/license.asc @@ -0,0 +1,4 @@ +[preface] +== Licence + +include::../LICENSE.asc[] diff --git a/book/preface_ben.asc b/book/preface_ben.asc new file mode 100644 index 00000000..102cabba --- /dev/null +++ b/book/preface_ben.asc @@ -0,0 +1,12 @@ +[preface] +== Prefacio por Ben Straub + +La primera edición de este libro es lo que me enganchó a Git. +Ésta fue mi introducción a un estilo de hacer software que se sentía más natural que todo lo que había visto antes. +Había sido desarrollador durante varios años para entonces, pero éste fue el giro que me envió por un camino mucho más interesante que el que había seguido. + +Ahora, años después, soy contribuyente a una de las principales implementaciones de Git, he trabajado para la empresa más grande de alojamiento Git, y he viajado por el mundo enseñando a la gente acerca de Git. +Cuando Scott me preguntó si estaría interesado en trabajar en la segunda edición, ni siquiera me lo pensé. + +Ha sido un gran placer y un privilegio trabajar en este libro. +Espero que le ayude tanto como lo hizo conmigo. diff --git a/book/preface.asc b/book/preface_scott.asc similarity index 62% rename from book/preface.asc rename to book/preface_scott.asc index c13d8ea2..7264b377 100644 --- a/book/preface.asc +++ b/book/preface_scott.asc @@ -1,63 +1,35 @@ -Pro Git -======= -:doctype: book -:docinfo: -:toc: -:toclevels: 2 - -[preface] +[preface] == Prefacio por Scott Chacon -Bienvenidos a la segunda edición de Pro Git. -La primera edición fue publicada hace más de cuatro años. -Desde entonces mucho ha cambiado aunque muchas cosas importantes no. -Mientras que la mayoría de los conceptos y comandos básicos siguen siendo válidos hoy gracias a que el equipo principal de Git es bastante fantástico manteniendo la compatibilidad con versiones anteriores, ha habido algunas adiciones y cambios significativos en la comunidad circundante a Git. +Bienvenidos a la segunda edición de Pro Git. +La primera edición fue publicada hace más de cuatro años. +Desde entonces mucho ha cambiado aunque muchas cosas importantes no. +Mientras que la mayoría de los conceptos y comandos básicos siguen siendo válidos hoy gracias a que el equipo principal de Git es bastante fantástico manteniendo la compatibilidad con versiones anteriores, ha habido algunas adiciones y cambios significativos en la comunidad circundante a Git. La segunda edición de este libro pretende dar respuesta a esos cambios y actualizar el libro para que pueda ser más útil al nuevo usuario. -Cuando escribí la primera edición, Git seguía siendo relativamente difícil de usar y una herramienta escasamente utilizada por algunos hackers. -Estaba empezando a cobrar fuerza en algunas comunidades, pero no había alcanzado la ubicuidad que tiene actualmente. -Desde entonces, casi todas las comunidades de código abierto lo han adoptado. -Git ha hecho un progreso increíble en Windows, en la explosión de interfaces gráficas de usuario para el mismo en todas las plataformas, en soporte IDE y en uso en empresas. -El Pro Git de hace cuatro años no trataba nada de eso. +Cuando escribí la primera edición, Git seguía siendo relativamente difícil de usar y una herramienta escasamente utilizada por algunos hackers. +Estaba empezando a cobrar fuerza en algunas comunidades, pero no había alcanzado la ubicuidad que tiene actualmente. +Desde entonces, casi todas las comunidades de código abierto lo han adoptado. +Git ha hecho un progreso increíble en Windows, en la explosión de interfaces gráficas de usuario para el mismo en todas las plataformas, en soporte IDE y en uso en empresas. +El Pro Git de hace cuatro años no trataba nada de eso. Uno de los principales objetivos de esta nueva edición es tocar todas esas nuevas fronteras en la comunidad de Git. -La comunidad de código abierto que usa Git también se ha disparado. -Cuando originalmente me puse a escribir el libro hace casi cinco años (me tomó algún tiempo sacar la primera versión), acababa de empezar a trabajar en una empresa muy poco conocida desarrollando un sitio web de alojamiento Git llamada GitHub. -En el momento de la publicación había quizás unos pocos miles de personas que utilizaban el sitio y sólo cuatro de nosotros trabajando en él. -Al momento de escribir esta introducción, GitHub está anunciando nuestro proyecto alojado número 10 millones, con casi 5 millones de cuentas de desarrollador registradas y más de 230 empleados. +La comunidad de código abierto que usa Git también se ha disparado. +Cuando originalmente me puse a escribir el libro hace casi cinco años (me tomó algún tiempo sacar la primera versión), acababa de empezar a trabajar en una empresa muy poco conocida desarrollando un sitio web de alojamiento Git llamada GitHub. +En el momento de la publicación había quizás unos pocos miles de personas que utilizaban el sitio y sólo cuatro de nosotros trabajando en él. +Al momento de escribir esta introducción, GitHub está anunciando nuestro proyecto alojado número 10 millones, con casi 5 millones de cuentas de desarrollador registradas y más de 230 empleados. Amado u odiado, GitHub ha cambiado en gran medida grandes franjas de la comunidad de código abierto de una manera que era apenas concebible cuando me senté a escribir la primera edición. -Escribí una pequeña sección en la versión original de Pro Git sobre GitHub como un ejemplo de Git hospedado con la cual nunca me sentí muy cómodo. +Escribí una pequeña sección en la versión original de Pro Git sobre GitHub como un ejemplo de Git hospedado con la cual nunca me sentí muy cómodo. No me gustaba estar escribiendo sobre lo que esencialmente consideraba un recurso comunitario y también hablando de mi empresa. -Aunque aún me desagrada ese conflicto de intereses, la importancia de GitHub en la comunidad Git es inevitable. -En lugar de un ejemplo de alojamiento Git, he decidido desarrollar esa parte del libro más detalladamente describiendo lo qué GitHub es y cómo utilizarlo de forma eficaz. +Aunque aún me desagrada ese conflicto de intereses, la importancia de GitHub en la comunidad Git es inevitable. +En lugar de un ejemplo de alojamiento Git, he decidido desarrollar esa parte del libro más detalladamente describiendo lo qué GitHub es y cómo utilizarlo de forma eficaz. Si vas a aprender a usar Git entonces saber cómo utilizar GitHub te ayudará a tomar parte en una comunidad enorme, que es valiosa no importa qué alojamiento Git decidas utilizar para tu propio código. -El otro gran cambio en el tiempo transcurrido desde la última publicación ha sido el desarrollo y aumento del protocolo HTTP para las transacciones de red de Git. +El otro gran cambio en el tiempo transcurrido desde la última publicación ha sido el desarrollo y aumento del protocolo HTTP para las transacciones de red de Git. La mayoría de los ejemplos en el libro han sido cambiados a HTTP desde SSH porque es mucho más sencillo. -Ha sido increíble ver a Git crecer en los últimos años a partir de un sistema de control de versiones relativamente desconocido a uno que domina básicamente el control de versiones comerciales y de código abierto. +Ha sido increíble ver a Git crecer en los últimos años a partir de un sistema de control de versiones relativamente desconocido a uno que domina básicamente el control de versiones comerciales y de código abierto. Estoy feliz de que Pro Git lo haya hecho tan bien y también haya sido capaz de ser uno de los pocos libros técnicos en el mercado que es a la vez bastante exitoso y completamente de código abierto. Espero que disfruten de esta edición actualizada de Pro Git. - -[preface] -== Prefacio por Ben Straub - -La primera edición de este libro es lo que me enganchó a Git. -Ésta fue mi introducción a un estilo de hacer software que se sentía más natural que todo lo que había visto antes. -Había sido desarrollador durante varios años para entonces, pero éste fue el giro que me envió por un camino mucho más interesante que el que había seguido. - -Ahora, años después, soy contribuyente a una de las principales implementaciones de Git, he trabajado para la empresa más grande de alojamiento Git, y he viajado por el mundo enseñando a la gente acerca de Git. -Cuando Scott me preguntó si estaría interesado en trabajar en la segunda edición, ni siquiera me lo pensé. - -Ha sido un gran placer y un privilegio trabajar en este libro. -Espero que le ayude tanto como lo hizo conmigo. - -[preface] -== Dedicatorias - -_A mi esposa, Becky, sin la cual esta aventura nunca hubiera comenzado. - Ben_ - -_Esta edición está dedicada a mis niñas. A mi esposa Jessica que me ha apoyado durante todos estos años y a mi hija Josefina, que me apoyará cuando esté demasiado mayor para saber lo que pasa. - Scott_ - diff --git a/book/01-introduction/1-introduction.asc b/ch01-introduction.asc similarity index 66% rename from book/01-introduction/1-introduction.asc rename to ch01-introduction.asc index 6d19a193..6eb15fb6 100644 --- a/book/01-introduction/1-introduction.asc +++ b/ch01-introduction.asc @@ -1,21 +1,22 @@ -[[_getting_started]] +[#ch01-introduction] +[[r_getting_started]] == Inicio - Sobre el Control de Versiones Este capítulo se va a hablar de cómo comenzar a utilizar Git. Empezaremos describiendo algunos conceptos básicos sobre las herramientas de control de versiones; después, trataremos de explicar cómo hacer que Git funcione en tu sistema; finalmente, exploraremos cómo configurarlo para empezar a trabajar con él. Al final de este capítulo deberás entender las razones por las cuales Git existe y conviene que lo uses, y deberás tener todo preparado para comenzar. -include::sections/about-version-control.asc[] +include::book/01-introduction/sections/about-version-control.asc[] -include::sections/history.asc[] +include::book/01-introduction/sections/history.asc[] -include::sections/basics.asc[] +include::book/01-introduction/sections/basics.asc[] -include::sections/command-line.asc[] +include::book/01-introduction/sections/command-line.asc[] -include::sections/installing.asc[] +include::book/01-introduction/sections/installing.asc[] -include::sections/first-time-setup.asc[] +include::book/01-introduction/sections/first-time-setup.asc[] -include::sections/help.asc[] +include::book/01-introduction/sections/help.asc[] === Resumen diff --git a/book/02-git-basics/1-git-basics.asc b/ch02-git-basics.asc similarity index 71% rename from book/02-git-basics/1-git-basics.asc rename to ch02-git-basics.asc index 286a9126..50250b55 100644 --- a/book/02-git-basics/1-git-basics.asc +++ b/ch02-git-basics.asc @@ -1,4 +1,5 @@ -[[_git_basics_chapter]] +[#ch02-git-basics] +[[r_git_basics_chapter]] == Fundamentos de Git Si pudieras leer solo un capítulo para empezar a trabajar con Git, este es el capítulo que debes leer. @@ -6,19 +7,19 @@ Este capítulo cubre todos los comandos básicos que necesitas para hacer la gra Al final del capítulo, deberás ser capaz de configurar e inicializar un repositorio, comenzar y detener el seguimiento de archivos, y preparar (stage) y confirmar (commit) cambios. También te enseñaremos a configurar Git para que ignore ciertos archivos y patrones, cómo enmendar errores rápida y fácilmente, cómo navegar por la historia de tu proyecto y ver cambios entre confirmaciones, y cómo enviar (push) y recibir (pull) de repositorios remotos. -include::sections/getting-a-repository.asc[] +include::book/02-git-basics/sections/getting-a-repository.asc[] -include::sections/recording-changes.asc[] +include::book/02-git-basics/sections/recording-changes.asc[] -include::sections/viewing-history.asc[] +include::book/02-git-basics/sections/viewing-history.asc[] -include::sections/undoing.asc[] +include::book/02-git-basics/sections/undoing.asc[] -include::sections/remotes.asc[] +include::book/02-git-basics/sections/remotes.asc[] -include::sections/tagging.asc[] +include::book/02-git-basics/sections/tagging.asc[] -include::sections/aliases.asc[] +include::book/02-git-basics/sections/aliases.asc[] === Resumen diff --git a/book/03-git-branching/1-git-branching.asc b/ch03-git-branching.asc similarity index 82% rename from book/03-git-branching/1-git-branching.asc rename to ch03-git-branching.asc index 3e1731ce..25aa455c 100644 --- a/book/03-git-branching/1-git-branching.asc +++ b/ch03-git-branching.asc @@ -1,4 +1,5 @@ -[[_git_branching]] +[#ch03-git-branching] +[[r_git_branching]] == Ramificaciones en Git (((branches))) @@ -12,17 +13,17 @@ La forma en la que Git maneja las ramificaciones es increíblemente rápida, hac A diferencia de otros sistemas de control de versiones, Git promueve un ciclo de desarrollo donde las ramas se crean y se unen ramas entre sí, incluso varias veces en el mismo día. Entender y manejar esta opción te proporciona una poderosa y exclusiva herramienta que puede, literalmente, cambiar la forma en la que desarrollas. -include::sections/nutshell.asc[] +include::book/03-git-branching/sections/nutshell.asc[] -include::sections/basic-branching-and-merging.asc[] +include::book/03-git-branching/sections/basic-branching-and-merging.asc[] -include::sections/branch-management.asc[] +include::book/03-git-branching/sections/branch-management.asc[] -include::sections/workflows.asc[] +include::book/03-git-branching/sections/workflows.asc[] -include::sections/remote-branches.asc[] +include::book/03-git-branching/sections/remote-branches.asc[] -include::sections/rebasing.asc[] +include::book/03-git-branching/sections/rebasing.asc[] === Recapitulación diff --git a/book/04-git-server/1-git-server.asc b/ch04-git-server.asc similarity index 85% rename from book/04-git-server/1-git-server.asc rename to ch04-git-server.asc index d25d25b0..6c898003 100644 --- a/book/04-git-server/1-git-server.asc +++ b/ch04-git-server.asc @@ -1,3 +1,4 @@ +[#ch04-git-server] == Git en el Servidor (((serving repositories))) @@ -19,23 +20,23 @@ Un repositorio remoto es generalmente un _repositorio básico_ – un repositori Dado que el repositorio es solamente utilizado como un punto de colaboración, no hay razón para tener una copia instantánea verificada en el disco; tan solo son datos Git. En los más simples términos, un repositorio básico es el contenido `.git` del directorio de tu proyecto y nada más. -include::sections/protocols.asc[] +include::book/04-git-server/sections/protocols.asc[] -include::sections/git-on-a-server.asc[] +include::book/04-git-server/sections/git-on-a-server.asc[] -include::sections/generating-ssh-key.asc[] +include::book/04-git-server/sections/generating-ssh-key.asc[] -include::sections/setting-up-server.asc[] +include::book/04-git-server/sections/setting-up-server.asc[] -include::sections/git-daemon.asc[] +include::book/04-git-server/sections/git-daemon.asc[] -include::sections/smart-http.asc[] +include::book/04-git-server/sections/smart-http.asc[] -include::sections/gitweb.asc[] +include::book/04-git-server/sections/gitweb.asc[] -include::sections/gitlab.asc[] +include::book/04-git-server/sections/gitlab.asc[] -include::sections/hosted.asc[] +include::book/04-git-server/sections/hosted.asc[] === Resumen diff --git a/book/05-distributed-git/1-distributed-git.asc b/ch05-distributed-git.asc similarity index 81% rename from book/05-distributed-git/1-distributed-git.asc rename to ch05-distributed-git.asc index 8f4224c3..cf8752ed 100644 --- a/book/05-distributed-git/1-distributed-git.asc +++ b/ch05-distributed-git.asc @@ -1,4 +1,5 @@ -[[_distributed_git]] +[#ch05-distributed-git] +[[r_distributed_git]] == Git en entornos distribuidos (((distributed git))) @@ -7,11 +8,11 @@ Ahora que ya tienes un repositorio Git configurado como punto de trabajo para qu En este capítulo verás como trabajar con Git en un entorno distribuido como colaborador o como integrador. Es decir, aprenderás como contribuir adecuadamente a un proyecto, de manera fácil tanto para ti como para el responsable del proyecto, y también como mantener adecuadamente un proyecto con múltiples desarrolladores. -include::sections/distributed-workflows.asc[] +include::book/05-distributed-git/sections/distributed-workflows.asc[] -include::sections/contributing.asc[] +include::book/05-distributed-git/sections/contributing.asc[] -include::sections/maintaining.asc[] +include::book/05-distributed-git/sections/maintaining.asc[] === Resumen diff --git a/book/06-github/1-github.asc b/ch06-github.asc similarity index 82% rename from book/06-github/1-github.asc rename to ch06-github.asc index 92169225..a166e94e 100644 --- a/book/06-github/1-github.asc +++ b/ch06-github.asc @@ -1,4 +1,5 @@ -[[_github]] +[#ch06-github] +[[r_github]] == GitHub (((GitHub))) @@ -20,7 +21,7 @@ de programación de GitHub (API) y muchos otros pequeños trucos que te harán, en general, la vida más fácil. Si no vas a utilizar GitHub para hospedar tus proyectos o para colaborar -con otros, puedes saltar directamente a <<_git_tools>>. +con otros, puedes saltar directamente a <>. [WARNING] .Cambios en la interfaz @@ -31,15 +32,15 @@ incluye este libro. Probablemente la versión en línea de este libro tenga esas capturas más actualizadas. ==== -include::sections/1-setting-up-account.asc[] +include::book/06-github/sections/1-setting-up-account.asc[] -include::sections/2-contributing.asc[] +include::book/06-github/sections/2-contributing.asc[] -include::sections/3-maintaining.asc[] +include::book/06-github/sections/3-maintaining.asc[] -include::sections/4-managing-organization.asc[] +include::book/06-github/sections/4-managing-organization.asc[] -include::sections/5-scripting.asc[] +include::book/06-github/sections/5-scripting.asc[] === Resumen diff --git a/book/07-git-tools/1-git-tools.asc b/ch07-git-tools.asc similarity index 58% rename from book/07-git-tools/1-git-tools.asc rename to ch07-git-tools.asc index 6f64048b..113728dd 100644 --- a/book/07-git-tools/1-git-tools.asc +++ b/ch07-git-tools.asc @@ -1,4 +1,5 @@ -[[_git_tools]] +[#ch07-git-tools] +[[r_git_tools]] == Herramientas de Git Hasta ahora, ya has aprendido la mayoría de los comandos diarios y el flujo de trabajo que necesitas para manejar y mantener un repositorio de Git para tu control del código fuente. @@ -6,33 +7,33 @@ Has conseguido cumplir con las tareas básicas de seguimiento y has agregado arc Ahora vas a explorar unas cuantas cosas bastantes poderosas que Git puede realizar y que no necesariamente vas a usar en tu día a día, pero que puedes necesitar en algún momento. -include::sections/revision-selection.asc[] +include::book/07-git-tools/sections/revision-selection.asc[] -include::sections/interactive-staging.asc[] +include::book/07-git-tools/sections/interactive-staging.asc[] -include::sections/stashing-cleaning.asc[] +include::book/07-git-tools/sections/stashing-cleaning.asc[] -include::sections/signing.asc[] +include::book/07-git-tools/sections/signing.asc[] -include::sections/searching.asc[] +include::book/07-git-tools/sections/searching.asc[] -include::sections/rewriting-history.asc[] +include::book/07-git-tools/sections/rewriting-history.asc[] -include::sections/reset.asc[] +include::book/07-git-tools/sections/reset.asc[] -include::sections/advanced-merging.asc[] +include::book/07-git-tools/sections/advanced-merging.asc[] -include::sections/rerere.asc[] +include::book/07-git-tools/sections/rerere.asc[] -include::sections/debugging.asc[] +include::book/07-git-tools/sections/debugging.asc[] -include::sections/submodules.asc[] +include::book/07-git-tools/sections/submodules.asc[] -include::sections/bundling.asc[] +include::book/07-git-tools/sections/bundling.asc[] -include::sections/replace.asc[] +include::book/07-git-tools/sections/replace.asc[] -include::sections/credentials.asc[] +include::book/07-git-tools/sections/credentials.asc[] === Resumen diff --git a/book/08-customizing-git/1-customizing-git.asc b/ch08-customizing-git.asc similarity index 80% rename from book/08-customizing-git/1-customizing-git.asc rename to ch08-customizing-git.asc index 50a831b1..a02e11be 100644 --- a/book/08-customizing-git/1-customizing-git.asc +++ b/ch08-customizing-git.asc @@ -1,4 +1,5 @@ -[[_customizing_git]] +[#ch08-customizing-git] +[[r_customizing_git]] == Personalización de Git Hasta ahora, hemos visto los aspectos básicos del funcionamiento de Git y la @@ -10,13 +11,13 @@ principales ajustes y el sistema de anclajes (hooks). Con estas operaciones, será fácil conseguir que Git trabaje exactamente como tú, tu empresa o tu grupo necesitéis. -include::sections/config.asc[] +include::book/08-customizing-git/sections/config.asc[] -include::sections/attributes.asc[] +include::book/08-customizing-git/sections/attributes.asc[] -include::sections/hooks.asc[] +include::book/08-customizing-git/sections/hooks.asc[] -include::sections/policy.asc[] +include::book/08-customizing-git/sections/policy.asc[] === Recapitulación diff --git a/book/09-git-and-other-scms/1-git-and-other-scms.asc b/ch09-git-and-other-scms.asc similarity index 76% rename from book/09-git-and-other-scms/1-git-and-other-scms.asc rename to ch09-git-and-other-scms.asc index 0f2880ce..14e488b3 100644 --- a/book/09-git-and-other-scms/1-git-and-other-scms.asc +++ b/ch09-git-and-other-scms.asc @@ -1,3 +1,4 @@ +[#ch09-git-and-other-scms] == Git y Otros Sistemas El mundo no es perfecto. @@ -15,15 +16,15 @@ Git proporciona una experiencia tan agradable para los desarrolladores que mucha Hay un número de estos adaptadores disponibles, llamados ``bridges''. Aquí vamos a cubrir los que es más probable que se encuentren en la naturaleza. -include::sections/client-svn.asc[] +include::book/09-git-and-other-scms/sections/client-svn.asc[] -include::sections/client-hg.asc[] +include::book/09-git-and-other-scms/sections/client-hg.asc[] -include::sections/client-p4.asc[] +include::book/09-git-and-other-scms/sections/client-p4.asc[] -include::sections/client-tfs.asc[] +include::book/09-git-and-other-scms/sections/client-tfs.asc[] -[[_migrating]] +[[r_migrating]] === Migración a Git (((Migración a Git))) @@ -31,15 +32,15 @@ Si tiene una base de código existente en otro VCS pero ha decidido comenzar a u Esta sección revisa algunos importadores para sistemas comunes y luego demuestra cómo desarrollar su propio importador personalizado. Aprenderá a importar datos de varios de los sistemas SCM profesionales más grandes, ya que conforman la mayoría de los usuarios que están cambiando, y porque las herramientas de alta calidad para ellos son fáciles de conseguir. -include::sections/import-svn.asc[] +include::book/09-git-and-other-scms/sections/import-svn.asc[] -include::sections/import-hg.asc[] +include::book/09-git-and-other-scms/sections/import-hg.asc[] -include::sections/import-p4.asc[] +include::book/09-git-and-other-scms/sections/import-p4.asc[] -include::sections/import-tfs.asc[] +include::book/09-git-and-other-scms/sections/import-tfs.asc[] -include::sections/import-custom.asc[] +include::book/09-git-and-other-scms/sections/import-custom.asc[] === Resumen Debería sentirse cómodo al usar Git como cliente para otros sistemas de control de versiones, o importar casi cualquier repositorio existente en Git sin perder datos. diff --git a/book/10-git-internals/1-git-internals.asc b/ch10-git-internals.asc similarity index 84% rename from book/10-git-internals/1-git-internals.asc rename to ch10-git-internals.asc index ad85b66e..bd6af9a1 100644 --- a/book/10-git-internals/1-git-internals.asc +++ b/ch10-git-internals.asc @@ -1,4 +1,5 @@ -[[_git_internals]] +[#ch10-git-internals] +[[r_git_internals]] == Los entresijos internos de Git Puede que hayas llegado a este capítulo saltando desde alguno previo o puede que hayas llegado tras leer todo el resto del libro - en uno u otro caso, aquí es donde aprenderás acerca del funcionamiento interno y la implementación de Git. @@ -17,21 +18,21 @@ La capa de contenido localizable del sistema de archivos es increíblemente inte A continuación mostraremos los mecanismos de transporte y las tareas de mantenimiento del repositorio que posiblemente necesites usar alguna vez. -include::sections/plumbing-porcelain.asc[] +include::book/10-git-internals/sections/plumbing-porcelain.asc[] -include::sections/objects.asc[] +include::book/10-git-internals/sections/objects.asc[] -include::sections/refs.asc[] +include::book/10-git-internals/sections/refs.asc[] -include::sections/packfiles.asc[] +include::book/10-git-internals/sections/packfiles.asc[] -include::sections/refspec.asc[] +include::book/10-git-internals/sections/refspec.asc[] -include::sections/transfer-protocols.asc[] +include::book/10-git-internals/sections/transfer-protocols.asc[] -include::sections/maintenance.asc[] +include::book/10-git-internals/sections/maintenance.asc[] -include::sections/environment.asc[] +include::book/10-git-internals/sections/environment.asc[] === Recapitulación diff --git a/images/2fa-1.png b/images/2fa-1.png new file mode 100644 index 00000000..5abd7437 Binary files /dev/null and b/images/2fa-1.png differ diff --git a/images/account-settings.png b/images/account-settings.png new file mode 100644 index 00000000..ea9ef1b1 Binary files /dev/null and b/images/account-settings.png differ diff --git a/images/advance-master.png b/images/advance-master.png new file mode 100644 index 00000000..c3a7ebe6 Binary files /dev/null and b/images/advance-master.png differ diff --git a/images/advance-testing.png b/images/advance-testing.png new file mode 100644 index 00000000..312e65e1 Binary files /dev/null and b/images/advance-testing.png differ diff --git a/images/areas.png b/images/areas.png new file mode 100644 index 00000000..da98fb03 Binary files /dev/null and b/images/areas.png differ diff --git a/images/avatar-crop.png b/images/avatar-crop.png new file mode 100644 index 00000000..622e05d8 Binary files /dev/null and b/images/avatar-crop.png differ diff --git a/images/basic-branching-1.png b/images/basic-branching-1.png new file mode 100644 index 00000000..acc3866f Binary files /dev/null and b/images/basic-branching-1.png differ diff --git a/images/basic-branching-2.png b/images/basic-branching-2.png new file mode 100644 index 00000000..c3f14914 Binary files /dev/null and b/images/basic-branching-2.png differ diff --git a/images/basic-branching-3.png b/images/basic-branching-3.png new file mode 100644 index 00000000..ebc9ca95 Binary files /dev/null and b/images/basic-branching-3.png differ diff --git a/images/basic-branching-4.png b/images/basic-branching-4.png new file mode 100644 index 00000000..ab8f2228 Binary files /dev/null and b/images/basic-branching-4.png differ diff --git a/images/basic-branching-5.png b/images/basic-branching-5.png new file mode 100644 index 00000000..947133f7 Binary files /dev/null and b/images/basic-branching-5.png differ diff --git a/images/basic-branching-6.png b/images/basic-branching-6.png new file mode 100644 index 00000000..6023d694 Binary files /dev/null and b/images/basic-branching-6.png differ diff --git a/images/basic-merging-1.png b/images/basic-merging-1.png new file mode 100644 index 00000000..e1bcc27f Binary files /dev/null and b/images/basic-merging-1.png differ diff --git a/images/basic-merging-2.png b/images/basic-merging-2.png new file mode 100644 index 00000000..a2438266 Binary files /dev/null and b/images/basic-merging-2.png differ diff --git a/images/basic-rebase-1.png b/images/basic-rebase-1.png new file mode 100644 index 00000000..44ea49e3 Binary files /dev/null and b/images/basic-rebase-1.png differ diff --git a/images/basic-rebase-2.png b/images/basic-rebase-2.png new file mode 100644 index 00000000..c82140cd Binary files /dev/null and b/images/basic-rebase-2.png differ diff --git a/images/basic-rebase-3.png b/images/basic-rebase-3.png new file mode 100644 index 00000000..a1afaef6 Binary files /dev/null and b/images/basic-rebase-3.png differ diff --git a/images/basic-rebase-4.png b/images/basic-rebase-4.png new file mode 100644 index 00000000..e97c1685 Binary files /dev/null and b/images/basic-rebase-4.png differ diff --git a/images/benevolent-dictator.png b/images/benevolent-dictator.png new file mode 100644 index 00000000..aeb47e7c Binary files /dev/null and b/images/benevolent-dictator.png differ diff --git a/images/bitnami.png b/images/bitnami.png new file mode 100644 index 00000000..9852e727 Binary files /dev/null and b/images/bitnami.png differ diff --git a/images/blink-01-start.png b/images/blink-01-start.png new file mode 100644 index 00000000..ccf06e7c Binary files /dev/null and b/images/blink-01-start.png differ diff --git a/images/blink-02-pr.png b/images/blink-02-pr.png new file mode 100644 index 00000000..ec9f08c5 Binary files /dev/null and b/images/blink-02-pr.png differ diff --git a/images/blink-03-pull-request-open.png b/images/blink-03-pull-request-open.png new file mode 100644 index 00000000..442a3294 Binary files /dev/null and b/images/blink-03-pull-request-open.png differ diff --git a/images/blink-04-email.png b/images/blink-04-email.png new file mode 100644 index 00000000..52b61378 Binary files /dev/null and b/images/blink-04-email.png differ diff --git a/images/blink-04-pr-comment.png b/images/blink-04-pr-comment.png new file mode 100644 index 00000000..46402d55 Binary files /dev/null and b/images/blink-04-pr-comment.png differ diff --git a/images/blink-05-general-comment.png b/images/blink-05-general-comment.png new file mode 100644 index 00000000..7cf1205f Binary files /dev/null and b/images/blink-05-general-comment.png differ diff --git a/images/blink-06-final.png b/images/blink-06-final.png new file mode 100644 index 00000000..155a5ef4 Binary files /dev/null and b/images/blink-06-final.png differ diff --git a/images/blink-pull-request-open copy.png b/images/blink-pull-request-open copy.png new file mode 100644 index 00000000..5e40c6d9 Binary files /dev/null and b/images/blink-pull-request-open copy.png differ diff --git a/images/blink-pull-request-open.png b/images/blink-pull-request-open.png new file mode 100644 index 00000000..223144c2 Binary files /dev/null and b/images/blink-pull-request-open.png differ diff --git a/images/branch-and-history.png b/images/branch-and-history.png new file mode 100644 index 00000000..2b4ab17e Binary files /dev/null and b/images/branch-and-history.png differ diff --git a/images/branch_widget_mac.png b/images/branch_widget_mac.png new file mode 100644 index 00000000..3361dca4 Binary files /dev/null and b/images/branch_widget_mac.png differ diff --git a/images/branch_widget_win.png b/images/branch_widget_win.png new file mode 100644 index 00000000..11e2f1c4 Binary files /dev/null and b/images/branch_widget_win.png differ diff --git a/images/centralized.png b/images/centralized.png new file mode 100644 index 00000000..9aa3e902 Binary files /dev/null and b/images/centralized.png differ diff --git a/images/centralized_workflow.png b/images/centralized_workflow.png new file mode 100644 index 00000000..d5d660f5 Binary files /dev/null and b/images/centralized_workflow.png differ diff --git a/images/checkout-master.png b/images/checkout-master.png new file mode 100644 index 00000000..06e98787 Binary files /dev/null and b/images/checkout-master.png differ diff --git a/images/clean.png b/images/clean.png new file mode 100644 index 00000000..ec8fcaa5 Binary files /dev/null and b/images/clean.png differ diff --git a/images/collaborators.png b/images/collaborators.png new file mode 100644 index 00000000..01a480d5 Binary files /dev/null and b/images/collaborators.png differ diff --git a/images/commit-and-tree.png b/images/commit-and-tree.png new file mode 100644 index 00000000..3ddf1cd5 Binary files /dev/null and b/images/commit-and-tree.png differ diff --git a/images/commits-and-parents.png b/images/commits-and-parents.png new file mode 100644 index 00000000..d5639726 Binary files /dev/null and b/images/commits-and-parents.png differ diff --git a/images/data-model-1.png b/images/data-model-1.png new file mode 100644 index 00000000..9331e915 Binary files /dev/null and b/images/data-model-1.png differ diff --git a/images/data-model-2.png b/images/data-model-2.png new file mode 100644 index 00000000..eb1d48e1 Binary files /dev/null and b/images/data-model-2.png differ diff --git a/images/data-model-3.png b/images/data-model-3.png new file mode 100644 index 00000000..317acbb0 Binary files /dev/null and b/images/data-model-3.png differ diff --git a/images/data-model-4.png b/images/data-model-4.png new file mode 100644 index 00000000..38136440 Binary files /dev/null and b/images/data-model-4.png differ diff --git a/images/deltas.png b/images/deltas.png new file mode 100644 index 00000000..47904edb Binary files /dev/null and b/images/deltas.png differ diff --git a/images/distributed.png b/images/distributed.png new file mode 100644 index 00000000..53cfcaeb Binary files /dev/null and b/images/distributed.png differ diff --git a/images/double-dot.png b/images/double-dot.png new file mode 100644 index 00000000..53175c15 Binary files /dev/null and b/images/double-dot.png differ diff --git a/images/egit.png b/images/egit.png new file mode 100644 index 00000000..27a7011a Binary files /dev/null and b/images/egit.png differ diff --git a/images/email-settings.png b/images/email-settings.png new file mode 100644 index 00000000..b073ded3 Binary files /dev/null and b/images/email-settings.png differ diff --git a/images/emoji.png b/images/emoji.png new file mode 100644 index 00000000..42b01fb0 Binary files /dev/null and b/images/emoji.png differ diff --git a/images/forkbutton.png b/images/forkbutton.png new file mode 100644 index 00000000..8ce7ff22 Binary files /dev/null and b/images/forkbutton.png differ diff --git a/images/git-bash.png b/images/git-bash.png new file mode 100644 index 00000000..a0bbfb23 Binary files /dev/null and b/images/git-bash.png differ diff --git a/images/git-diff-check.png b/images/git-diff-check.png new file mode 100644 index 00000000..20161b20 Binary files /dev/null and b/images/git-diff-check.png differ diff --git a/images/git-fusion-boot.png b/images/git-fusion-boot.png new file mode 100644 index 00000000..79272afe Binary files /dev/null and b/images/git-fusion-boot.png differ diff --git a/images/git-fusion-perforce-graph.png b/images/git-fusion-perforce-graph.png new file mode 100644 index 00000000..022293cd Binary files /dev/null and b/images/git-fusion-perforce-graph.png differ diff --git a/images/git-gui.png b/images/git-gui.png new file mode 100644 index 00000000..6d05a94c Binary files /dev/null and b/images/git-gui.png differ diff --git a/images/git-instaweb.png b/images/git-instaweb.png new file mode 100644 index 00000000..c1ba06cf Binary files /dev/null and b/images/git-instaweb.png differ diff --git a/images/git-osx-installer.png b/images/git-osx-installer.png new file mode 100644 index 00000000..8224b4a1 Binary files /dev/null and b/images/git-osx-installer.png differ diff --git a/images/git-tfs-ct.png b/images/git-tfs-ct.png new file mode 100644 index 00000000..d081f272 Binary files /dev/null and b/images/git-tfs-ct.png differ diff --git a/images/github_mac.png b/images/github_mac.png new file mode 100644 index 00000000..5e3aea0d Binary files /dev/null and b/images/github_mac.png differ diff --git a/images/github_win.png b/images/github_win.png new file mode 100644 index 00000000..33134562 Binary files /dev/null and b/images/github_win.png differ diff --git a/images/gitk.png b/images/gitk.png new file mode 100644 index 00000000..16ee0e27 Binary files /dev/null and b/images/gitk.png differ diff --git a/images/gitlab-broadcast.png b/images/gitlab-broadcast.png new file mode 100644 index 00000000..8d3f690d Binary files /dev/null and b/images/gitlab-broadcast.png differ diff --git a/images/gitlab-groups.png b/images/gitlab-groups.png new file mode 100644 index 00000000..6dde95eb Binary files /dev/null and b/images/gitlab-groups.png differ diff --git a/images/gitlab-menu.png b/images/gitlab-menu.png new file mode 100644 index 00000000..868ef912 Binary files /dev/null and b/images/gitlab-menu.png differ diff --git a/images/gitlab-users.png b/images/gitlab-users.png new file mode 100644 index 00000000..ebc226b7 Binary files /dev/null and b/images/gitlab-users.png differ diff --git a/images/head-to-master.png b/images/head-to-master.png new file mode 100644 index 00000000..86c7ae85 Binary files /dev/null and b/images/head-to-master.png differ diff --git a/images/head-to-testing.png b/images/head-to-testing.png new file mode 100644 index 00000000..08352d60 Binary files /dev/null and b/images/head-to-testing.png differ diff --git a/images/hubot.png b/images/hubot.png new file mode 100644 index 00000000..b057f1de Binary files /dev/null and b/images/hubot.png differ diff --git a/images/integration-manager.png b/images/integration-manager.png new file mode 100644 index 00000000..fd0d531e Binary files /dev/null and b/images/integration-manager.png differ diff --git a/images/interesting-rebase-1.png b/images/interesting-rebase-1.png new file mode 100644 index 00000000..ed58a06c Binary files /dev/null and b/images/interesting-rebase-1.png differ diff --git a/images/interesting-rebase-2.png b/images/interesting-rebase-2.png new file mode 100644 index 00000000..95c30681 Binary files /dev/null and b/images/interesting-rebase-2.png differ diff --git a/images/interesting-rebase-3.png b/images/interesting-rebase-3.png new file mode 100644 index 00000000..45aeeca2 Binary files /dev/null and b/images/interesting-rebase-3.png differ diff --git a/images/interesting-rebase-4.png b/images/interesting-rebase-4.png new file mode 100644 index 00000000..44b6ca5f Binary files /dev/null and b/images/interesting-rebase-4.png differ diff --git a/images/interesting-rebase-5.png b/images/interesting-rebase-5.png new file mode 100644 index 00000000..aa0745db Binary files /dev/null and b/images/interesting-rebase-5.png differ diff --git a/images/large-merges-1.png b/images/large-merges-1.png new file mode 100644 index 00000000..d3ee025a Binary files /dev/null and b/images/large-merges-1.png differ diff --git a/images/large-merges-2.png b/images/large-merges-2.png new file mode 100644 index 00000000..2d23e691 Binary files /dev/null and b/images/large-merges-2.png differ diff --git a/images/lifecycle.png b/images/lifecycle.png new file mode 100644 index 00000000..922b02c0 Binary files /dev/null and b/images/lifecycle.png differ diff --git a/images/local.png b/images/local.png new file mode 100644 index 00000000..1779acfb Binary files /dev/null and b/images/local.png differ diff --git a/images/lr-branches-1.png b/images/lr-branches-1.png new file mode 100644 index 00000000..ad7c9c9a Binary files /dev/null and b/images/lr-branches-1.png differ diff --git a/images/lr-branches-2.png b/images/lr-branches-2.png new file mode 100644 index 00000000..8db4bc08 Binary files /dev/null and b/images/lr-branches-2.png differ diff --git a/images/maint-01-email.png b/images/maint-01-email.png new file mode 100644 index 00000000..6de46981 Binary files /dev/null and b/images/maint-01-email.png differ diff --git a/images/maint-02-merge.png b/images/maint-02-merge.png new file mode 100644 index 00000000..62ba7f74 Binary files /dev/null and b/images/maint-02-merge.png differ diff --git a/images/maint-03-email-resp.png b/images/maint-03-email-resp.png new file mode 100644 index 00000000..0d2a096c Binary files /dev/null and b/images/maint-03-email-resp.png differ diff --git a/images/maint-04-target.png b/images/maint-04-target.png new file mode 100644 index 00000000..1a6476fa Binary files /dev/null and b/images/maint-04-target.png differ diff --git a/images/maint-05-mentions.png b/images/maint-05-mentions.png new file mode 100644 index 00000000..4660bbc7 Binary files /dev/null and b/images/maint-05-mentions.png differ diff --git a/images/maint-06-unsubscribe.png b/images/maint-06-unsubscribe.png new file mode 100644 index 00000000..e0689451 Binary files /dev/null and b/images/maint-06-unsubscribe.png differ diff --git a/images/maint-07-notifications.png b/images/maint-07-notifications.png new file mode 100644 index 00000000..a8665093 Binary files /dev/null and b/images/maint-07-notifications.png differ diff --git a/images/maint-08-notifications-page.png b/images/maint-08-notifications-page.png new file mode 100644 index 00000000..3008539b Binary files /dev/null and b/images/maint-08-notifications-page.png differ diff --git a/images/maint-09-contrib.png b/images/maint-09-contrib.png new file mode 100644 index 00000000..bb2a1726 Binary files /dev/null and b/images/maint-09-contrib.png differ diff --git a/images/maint-10-default-branch.png b/images/maint-10-default-branch.png new file mode 100644 index 00000000..4fed6970 Binary files /dev/null and b/images/maint-10-default-branch.png differ diff --git a/images/maint-11-transfer.png b/images/maint-11-transfer.png new file mode 100644 index 00000000..a55e385c Binary files /dev/null and b/images/maint-11-transfer.png differ diff --git a/images/managed-team-1.png b/images/managed-team-1.png new file mode 100644 index 00000000..489b6322 Binary files /dev/null and b/images/managed-team-1.png differ diff --git a/images/managed-team-2.png b/images/managed-team-2.png new file mode 100644 index 00000000..25c2db2b Binary files /dev/null and b/images/managed-team-2.png differ diff --git a/images/managed-team-3.png b/images/managed-team-3.png new file mode 100644 index 00000000..a8a08a70 Binary files /dev/null and b/images/managed-team-3.png differ diff --git a/images/managed-team-flow.png b/images/managed-team-flow.png new file mode 100644 index 00000000..6d83ac4d Binary files /dev/null and b/images/managed-team-flow.png differ diff --git a/images/markdown-01-example.png b/images/markdown-01-example.png new file mode 100644 index 00000000..455fe32a Binary files /dev/null and b/images/markdown-01-example.png differ diff --git a/images/markdown-02-tasks.png b/images/markdown-02-tasks.png new file mode 100644 index 00000000..00cf536e Binary files /dev/null and b/images/markdown-02-tasks.png differ diff --git a/images/markdown-03-task-summary.png b/images/markdown-03-task-summary.png new file mode 100644 index 00000000..8168ed12 Binary files /dev/null and b/images/markdown-03-task-summary.png differ diff --git a/images/markdown-04-fenced-code.png b/images/markdown-04-fenced-code.png new file mode 100644 index 00000000..c9335f5c Binary files /dev/null and b/images/markdown-04-fenced-code.png differ diff --git a/images/markdown-05-quote.png b/images/markdown-05-quote.png new file mode 100644 index 00000000..83f62d39 Binary files /dev/null and b/images/markdown-05-quote.png differ diff --git a/images/markdown-06-emoji-complete.png b/images/markdown-06-emoji-complete.png new file mode 100644 index 00000000..840d7014 Binary files /dev/null and b/images/markdown-06-emoji-complete.png differ diff --git a/images/markdown-07-emoji.png b/images/markdown-07-emoji.png new file mode 100644 index 00000000..e94cc138 Binary files /dev/null and b/images/markdown-07-emoji.png differ diff --git a/images/markdown-08-drag-drop.png b/images/markdown-08-drag-drop.png new file mode 100644 index 00000000..983b9f96 Binary files /dev/null and b/images/markdown-08-drag-drop.png differ diff --git a/images/mentions-01-syntax.png b/images/mentions-01-syntax.png new file mode 100644 index 00000000..87a22a0a Binary files /dev/null and b/images/mentions-01-syntax.png differ diff --git a/images/mentions-02-render.png b/images/mentions-02-render.png new file mode 100644 index 00000000..9cbd2b7b Binary files /dev/null and b/images/mentions-02-render.png differ diff --git a/images/mentions-03-closed.png b/images/mentions-03-closed.png new file mode 100644 index 00000000..202563bd Binary files /dev/null and b/images/mentions-03-closed.png differ diff --git a/images/merging-workflows-1.png b/images/merging-workflows-1.png new file mode 100644 index 00000000..461de6e2 Binary files /dev/null and b/images/merging-workflows-1.png differ diff --git a/images/merging-workflows-2.png b/images/merging-workflows-2.png new file mode 100644 index 00000000..5a0d1fcf Binary files /dev/null and b/images/merging-workflows-2.png differ diff --git a/images/merging-workflows-3.png b/images/merging-workflows-3.png new file mode 100644 index 00000000..f3a32367 Binary files /dev/null and b/images/merging-workflows-3.png differ diff --git a/images/merging-workflows-4 2.png b/images/merging-workflows-4 2.png new file mode 100644 index 00000000..32ae908e Binary files /dev/null and b/images/merging-workflows-4 2.png differ diff --git a/images/merging-workflows-4.png b/images/merging-workflows-4.png new file mode 100644 index 00000000..2ad04c13 Binary files /dev/null and b/images/merging-workflows-4.png differ diff --git a/images/merging-workflows-5.png b/images/merging-workflows-5.png new file mode 100644 index 00000000..151cbd27 Binary files /dev/null and b/images/merging-workflows-5.png differ diff --git a/images/new-repo.png b/images/new-repo.png new file mode 100644 index 00000000..4e4f1623 Binary files /dev/null and b/images/new-repo.png differ diff --git a/images/neworg.png b/images/neworg.png new file mode 100644 index 00000000..a4491c40 Binary files /dev/null and b/images/neworg.png differ diff --git a/images/newrepo.png b/images/newrepo.png new file mode 100644 index 00000000..952cb2fb Binary files /dev/null and b/images/newrepo.png differ diff --git a/images/newrepoform.png b/images/newrepoform.png new file mode 100644 index 00000000..dc49a50b Binary files /dev/null and b/images/newrepoform.png differ diff --git a/images/notifications.png b/images/notifications.png new file mode 100644 index 00000000..31e05951 Binary files /dev/null and b/images/notifications.png differ diff --git a/images/orgs-01-page.png b/images/orgs-01-page.png new file mode 100644 index 00000000..82006b79 Binary files /dev/null and b/images/orgs-01-page.png differ diff --git a/images/orgs-02-teams.png b/images/orgs-02-teams.png new file mode 100644 index 00000000..7183746e Binary files /dev/null and b/images/orgs-02-teams.png differ diff --git a/images/orgs-03-audit.png b/images/orgs-03-audit.png new file mode 100644 index 00000000..3a353af3 Binary files /dev/null and b/images/orgs-03-audit.png differ diff --git a/images/p4merge.png b/images/p4merge.png new file mode 100644 index 00000000..776b74f5 Binary files /dev/null and b/images/p4merge.png differ diff --git a/images/perils-of-rebasing-1.png b/images/perils-of-rebasing-1.png new file mode 100644 index 00000000..013e04bf Binary files /dev/null and b/images/perils-of-rebasing-1.png differ diff --git a/images/perils-of-rebasing-2.png b/images/perils-of-rebasing-2.png new file mode 100644 index 00000000..2c14ccdf Binary files /dev/null and b/images/perils-of-rebasing-2.png differ diff --git a/images/perils-of-rebasing-3.png b/images/perils-of-rebasing-3.png new file mode 100644 index 00000000..505407a0 Binary files /dev/null and b/images/perils-of-rebasing-3.png differ diff --git a/images/perils-of-rebasing-4.png b/images/perils-of-rebasing-4.png new file mode 100644 index 00000000..01b9dbba Binary files /dev/null and b/images/perils-of-rebasing-4.png differ diff --git a/images/perils-of-rebasing-5.png b/images/perils-of-rebasing-5.png new file mode 100644 index 00000000..20a18929 Binary files /dev/null and b/images/perils-of-rebasing-5.png differ diff --git a/images/posh-git.png b/images/posh-git.png new file mode 100644 index 00000000..f66505cf Binary files /dev/null and b/images/posh-git.png differ diff --git a/images/pr-01-fail.png b/images/pr-01-fail.png new file mode 100644 index 00000000..2337656a Binary files /dev/null and b/images/pr-01-fail.png differ diff --git a/images/pr-02-merge-fix.png b/images/pr-02-merge-fix.png new file mode 100644 index 00000000..cc2bafdf Binary files /dev/null and b/images/pr-02-merge-fix.png differ diff --git a/images/public-small-1.png b/images/public-small-1.png new file mode 100644 index 00000000..efcb90d6 Binary files /dev/null and b/images/public-small-1.png differ diff --git a/images/public-small-2.png b/images/public-small-2.png new file mode 100644 index 00000000..9dd40631 Binary files /dev/null and b/images/public-small-2.png differ diff --git a/images/public-small-3.png b/images/public-small-3.png new file mode 100644 index 00000000..fa06f77e Binary files /dev/null and b/images/public-small-3.png differ diff --git a/images/rebasing-1.png b/images/rebasing-1.png new file mode 100644 index 00000000..cd3efa16 Binary files /dev/null and b/images/rebasing-1.png differ diff --git a/images/rebasing-2.png b/images/rebasing-2.png new file mode 100644 index 00000000..55ca410b Binary files /dev/null and b/images/rebasing-2.png differ diff --git a/images/remote-branches-1.png b/images/remote-branches-1.png new file mode 100644 index 00000000..759538f4 Binary files /dev/null and b/images/remote-branches-1.png differ diff --git a/images/remote-branches-2.png b/images/remote-branches-2.png new file mode 100644 index 00000000..14cfe56c Binary files /dev/null and b/images/remote-branches-2.png differ diff --git a/images/remote-branches-3.png b/images/remote-branches-3.png new file mode 100644 index 00000000..6d1993e4 Binary files /dev/null and b/images/remote-branches-3.png differ diff --git a/images/remote-branches-4.png b/images/remote-branches-4.png new file mode 100644 index 00000000..b4183bf1 Binary files /dev/null and b/images/remote-branches-4.png differ diff --git a/images/remote-branches-5.png b/images/remote-branches-5.png new file mode 100644 index 00000000..be228239 Binary files /dev/null and b/images/remote-branches-5.png differ diff --git a/images/replace1.png b/images/replace1.png new file mode 100644 index 00000000..f5a23f7f Binary files /dev/null and b/images/replace1.png differ diff --git a/images/replace2.png b/images/replace2.png new file mode 100644 index 00000000..5b03076c Binary files /dev/null and b/images/replace2.png differ diff --git a/images/replace3.png b/images/replace3.png new file mode 100644 index 00000000..5c3191cd Binary files /dev/null and b/images/replace3.png differ diff --git a/images/replace4.png b/images/replace4.png new file mode 100644 index 00000000..553820c0 Binary files /dev/null and b/images/replace4.png differ diff --git a/images/replace5.png b/images/replace5.png new file mode 100644 index 00000000..41e7cd7b Binary files /dev/null and b/images/replace5.png differ diff --git a/images/reposettingslink.png b/images/reposettingslink.png new file mode 100644 index 00000000..a3f0db44 Binary files /dev/null and b/images/reposettingslink.png differ diff --git a/images/rerere1.png b/images/rerere1.png new file mode 100644 index 00000000..34ab3b7b Binary files /dev/null and b/images/rerere1.png differ diff --git a/images/rerere2.png b/images/rerere2.png new file mode 100644 index 00000000..85dd47f4 Binary files /dev/null and b/images/rerere2.png differ diff --git a/images/rerere3.png b/images/rerere3.png new file mode 100644 index 00000000..b299ac74 Binary files /dev/null and b/images/rerere3.png differ diff --git a/images/reset-checkout.png b/images/reset-checkout.png new file mode 100644 index 00000000..fe036345 Binary files /dev/null and b/images/reset-checkout.png differ diff --git a/images/reset-ex1.png b/images/reset-ex1.png new file mode 100644 index 00000000..2ffd68b2 Binary files /dev/null and b/images/reset-ex1.png differ diff --git a/images/reset-ex2.png b/images/reset-ex2.png new file mode 100644 index 00000000..f4ffd2a7 Binary files /dev/null and b/images/reset-ex2.png differ diff --git a/images/reset-ex3.png b/images/reset-ex3.png new file mode 100644 index 00000000..74274933 Binary files /dev/null and b/images/reset-ex3.png differ diff --git a/images/reset-ex4.png b/images/reset-ex4.png new file mode 100644 index 00000000..3cfbf7fc Binary files /dev/null and b/images/reset-ex4.png differ diff --git a/images/reset-ex5.png b/images/reset-ex5.png new file mode 100644 index 00000000..c21a2534 Binary files /dev/null and b/images/reset-ex5.png differ diff --git a/images/reset-ex6.png b/images/reset-ex6.png new file mode 100644 index 00000000..c64cc38f Binary files /dev/null and b/images/reset-ex6.png differ diff --git a/images/reset-hard.png b/images/reset-hard.png new file mode 100644 index 00000000..a9da7ced Binary files /dev/null and b/images/reset-hard.png differ diff --git a/images/reset-mixed.png b/images/reset-mixed.png new file mode 100644 index 00000000..0266fe51 Binary files /dev/null and b/images/reset-mixed.png differ diff --git a/images/reset-path1.png b/images/reset-path1.png new file mode 100644 index 00000000..1672e02b Binary files /dev/null and b/images/reset-path1.png differ diff --git a/images/reset-path2.png b/images/reset-path2.png new file mode 100644 index 00000000..08308e5e Binary files /dev/null and b/images/reset-path2.png differ diff --git a/images/reset-path3.png b/images/reset-path3.png new file mode 100644 index 00000000..e01f80ae Binary files /dev/null and b/images/reset-path3.png differ diff --git a/images/reset-soft.png b/images/reset-soft.png new file mode 100644 index 00000000..831d9f6f Binary files /dev/null and b/images/reset-soft.png differ diff --git a/images/reset-squash-r1.png b/images/reset-squash-r1.png new file mode 100644 index 00000000..e703a309 Binary files /dev/null and b/images/reset-squash-r1.png differ diff --git a/images/reset-squash-r2.png b/images/reset-squash-r2.png new file mode 100644 index 00000000..8b3bd443 Binary files /dev/null and b/images/reset-squash-r2.png differ diff --git a/images/reset-squash-r3.png b/images/reset-squash-r3.png new file mode 100644 index 00000000..87e44cbe Binary files /dev/null and b/images/reset-squash-r3.png differ diff --git a/images/reset-start.png b/images/reset-start.png new file mode 100644 index 00000000..70b3fb06 Binary files /dev/null and b/images/reset-start.png differ diff --git a/images/reset-workflow.png b/images/reset-workflow.png new file mode 100644 index 00000000..1c01e0d5 Binary files /dev/null and b/images/reset-workflow.png differ diff --git a/images/scripting-01-services.png b/images/scripting-01-services.png new file mode 100644 index 00000000..3af65a12 Binary files /dev/null and b/images/scripting-01-services.png differ diff --git a/images/scripting-02-email-service.png b/images/scripting-02-email-service.png new file mode 100644 index 00000000..b1e59497 Binary files /dev/null and b/images/scripting-02-email-service.png differ diff --git a/images/scripting-03-webhook.png b/images/scripting-03-webhook.png new file mode 100644 index 00000000..bf90bcb7 Binary files /dev/null and b/images/scripting-03-webhook.png differ diff --git a/images/scripting-04-webhook-debug.png b/images/scripting-04-webhook-debug.png new file mode 100644 index 00000000..e91c9e29 Binary files /dev/null and b/images/scripting-04-webhook-debug.png differ diff --git a/images/scripting-05-access-token.png b/images/scripting-05-access-token.png new file mode 100644 index 00000000..f4041423 Binary files /dev/null and b/images/scripting-05-access-token.png differ diff --git a/images/scripting-06-comment.png b/images/scripting-06-comment.png new file mode 100644 index 00000000..7dd27911 Binary files /dev/null and b/images/scripting-06-comment.png differ diff --git a/images/scripting-07-status.png b/images/scripting-07-status.png new file mode 100644 index 00000000..b0dad61e Binary files /dev/null and b/images/scripting-07-status.png differ diff --git a/images/signup.png b/images/signup.png new file mode 100644 index 00000000..73e8d9a6 Binary files /dev/null and b/images/signup.png differ diff --git a/images/small-team-1.png b/images/small-team-1.png new file mode 100644 index 00000000..d13654ec Binary files /dev/null and b/images/small-team-1.png differ diff --git a/images/small-team-2.png b/images/small-team-2.png new file mode 100644 index 00000000..1af62787 Binary files /dev/null and b/images/small-team-2.png differ diff --git a/images/small-team-3.png b/images/small-team-3.png new file mode 100644 index 00000000..3b01de8b Binary files /dev/null and b/images/small-team-3.png differ diff --git a/images/small-team-4.png b/images/small-team-4.png new file mode 100644 index 00000000..b5e8c00b Binary files /dev/null and b/images/small-team-4.png differ diff --git a/images/small-team-5.png b/images/small-team-5.png new file mode 100644 index 00000000..e0215e4f Binary files /dev/null and b/images/small-team-5.png differ diff --git a/images/small-team-6.png b/images/small-team-6.png new file mode 100644 index 00000000..35794441 Binary files /dev/null and b/images/small-team-6.png differ diff --git a/images/small-team-7.png b/images/small-team-7.png new file mode 100644 index 00000000..6bbbc2d8 Binary files /dev/null and b/images/small-team-7.png differ diff --git a/images/small-team-flow.png b/images/small-team-flow.png new file mode 100644 index 00000000..c8589ba6 Binary files /dev/null and b/images/small-team-flow.png differ diff --git a/images/smudge.png b/images/smudge.png new file mode 100644 index 00000000..d86aa05c Binary files /dev/null and b/images/smudge.png differ diff --git a/images/snapshots.png b/images/snapshots.png new file mode 100644 index 00000000..1036a424 Binary files /dev/null and b/images/snapshots.png differ diff --git a/images/ssh-keys.png b/images/ssh-keys.png new file mode 100644 index 00000000..34c0ff88 Binary files /dev/null and b/images/ssh-keys.png differ diff --git a/images/topic-branches-1.png b/images/topic-branches-1.png new file mode 100644 index 00000000..3bdca0dc Binary files /dev/null and b/images/topic-branches-1.png differ diff --git a/images/topic-branches-2.png b/images/topic-branches-2.png new file mode 100644 index 00000000..fe139d99 Binary files /dev/null and b/images/topic-branches-2.png differ diff --git a/images/two-branches.png b/images/two-branches.png new file mode 100644 index 00000000..aa6377a0 Binary files /dev/null and b/images/two-branches.png differ diff --git a/images/undomerge-reset.png b/images/undomerge-reset.png new file mode 100644 index 00000000..3ffcc624 Binary files /dev/null and b/images/undomerge-reset.png differ diff --git a/images/undomerge-revert.png b/images/undomerge-revert.png new file mode 100644 index 00000000..87cd7c93 Binary files /dev/null and b/images/undomerge-revert.png differ diff --git a/images/undomerge-revert2.png b/images/undomerge-revert2.png new file mode 100644 index 00000000..dc5727ea Binary files /dev/null and b/images/undomerge-revert2.png differ diff --git a/images/undomerge-revert3.png b/images/undomerge-revert3.png new file mode 100644 index 00000000..71f94a63 Binary files /dev/null and b/images/undomerge-revert3.png differ diff --git a/images/undomerge-start.png b/images/undomerge-start.png new file mode 100644 index 00000000..518a71d8 Binary files /dev/null and b/images/undomerge-start.png differ diff --git a/images/vs-1.png b/images/vs-1.png new file mode 100644 index 00000000..312cde3b Binary files /dev/null and b/images/vs-1.png differ diff --git a/images/vs-2.png b/images/vs-2.png new file mode 100644 index 00000000..78d404c2 Binary files /dev/null and b/images/vs-2.png differ diff --git a/images/your-profile.png b/images/your-profile.png new file mode 100644 index 00000000..01373f60 Binary files /dev/null and b/images/your-profile.png differ diff --git a/images/zsh-oh-my.png b/images/zsh-oh-my.png new file mode 100644 index 00000000..dd1d4e06 Binary files /dev/null and b/images/zsh-oh-my.png differ diff --git a/images/zsh-prompt.png b/images/zsh-prompt.png new file mode 100644 index 00000000..634a8c5a Binary files /dev/null and b/images/zsh-prompt.png differ diff --git a/progit.asc b/progit.asc index 96f38f0d..001445a4 100644 --- a/progit.asc +++ b/progit.asc @@ -1,35 +1,51 @@ Pro Git ======= -:doctype: book +:doctype: book :docinfo: :toc: :toclevels: 2 +:pagenums: :front-cover-image: image:book/cover.png[width=1050,height=1600] +:toc-title: 目次 -include::book/preface.asc[] +ifdef::ebook-format[:leveloffset: -1] -include::book/01-introduction/1-introduction.asc[] +include::book/license.asc[] -include::book/02-git-basics/1-git-basics.asc[] +include::book/preface_scott.asc[] -include::book/03-git-branching/1-git-branching.asc[] +include::book/preface_ben.asc[] -include::book/04-git-server/1-git-server.asc[] +include::book/dedication.asc[] -include::book/05-distributed-git/1-distributed-git.asc[] +//include::book/contributors.asc[] -include::book/06-github/1-github.asc[] +include::book/introduction.asc[] -include::book/07-git-tools/1-git-tools.asc[] +include::ch01-introduction.asc[] -include::book/08-customizing-git/1-customizing-git.asc[] +include::ch02-git-basics.asc[] -include::book/09-git-and-other-scms/1-git-and-other-scms.asc[] +include::ch03-git-branching.asc[] -include::book/10-git-internals/1-git-internals.asc[] +include::ch04-git-server.asc[] -include::book/A-git-in-other-environments/1-git-other-environments.asc[] +include::ch05-distributed-git.asc[] -include::book/B-embedding-git/1-embedding-git.asc[] +include::ch06-github.asc[] -include::book/C-git-commands/1-git-commands.asc[] +include::ch07-git-tools.asc[] + +include::ch08-customizing-git.asc[] + +include::ch09-git-and-other-scms.asc[] + +include::ch10-git-internals.asc[] + +include::A-git-in-other-environments.asc[] + +include::B-embedding-git.asc[] + +include::C-git-commands.asc[] + +ifndef::ebook-format[include::index.asc[]]