├── .github └── workflows │ ├── pr-build.yml │ └── release-on-merge.yml ├── .gitignore ├── .mailmap ├── .travis.yml ├── A-git-in-other-environments.asc ├── B-embedding-git.asc ├── C-git-commands.asc ├── CONTRIBUTING.md ├── Gemfile ├── Gemfile.lock ├── LICENSE.asc ├── README.asc ├── Rakefile ├── TRANSLATION_NOTES.asc ├── atlas.json ├── book ├── 01-introduction │ └── sections │ │ ├── about-version-control.asc │ │ ├── basics.asc │ │ ├── command-line.asc │ │ ├── first-time-setup.asc │ │ ├── help.asc │ │ ├── history.asc │ │ └── installing.asc ├── 02-git-basics │ └── sections │ │ ├── aliases.asc │ │ ├── getting-a-repository.asc │ │ ├── recording-changes.asc │ │ ├── remotes.asc │ │ ├── tagging.asc │ │ ├── undoing.asc │ │ └── viewing-history.asc ├── 03-git-branching │ └── sections │ │ ├── basic-branching-and-merging.asc │ │ ├── branch-management.asc │ │ ├── nutshell.asc │ │ ├── rebasing.asc │ │ ├── remote-branches.asc │ │ └── workflows.asc ├── 04-git-server │ └── sections │ │ ├── generating-ssh-key.asc │ │ ├── git-daemon.asc │ │ ├── git-on-a-server.asc │ │ ├── gitlab.asc │ │ ├── gitweb.asc │ │ ├── hosted.asc │ │ ├── protocols.asc │ │ ├── setting-up-server.asc │ │ └── smart-http.asc ├── 05-distributed-git │ └── sections │ │ ├── contributing.asc │ │ ├── distributed-workflows.asc │ │ └── maintaining.asc ├── 06-github │ ├── callouts │ │ ├── 1.pdf │ │ ├── 1.png │ │ ├── 10.pdf │ │ ├── 10.png │ │ ├── 2.pdf │ │ ├── 2.png │ │ ├── 3.pdf │ │ ├── 3.png │ │ ├── 4.pdf │ │ ├── 4.png │ │ ├── 5.pdf │ │ ├── 5.png │ │ ├── 6.pdf │ │ ├── 6.png │ │ ├── 7.pdf │ │ ├── 7.png │ │ ├── 8.pdf │ │ ├── 8.png │ │ ├── 9.pdf │ │ └── 9.png │ └── sections │ │ ├── 1-setting-up-account.asc │ │ ├── 2-contributing.asc │ │ ├── 3-maintaining.asc │ │ ├── 4-managing-organization.asc │ │ └── 5-scripting.asc ├── 07-git-tools │ ├── callouts │ │ ├── 1.pdf │ │ ├── 1.png │ │ ├── 10.pdf │ │ ├── 10.png │ │ ├── 2.pdf │ │ ├── 2.png │ │ ├── 3.pdf │ │ ├── 3.png │ │ ├── 4.pdf │ │ ├── 4.png │ │ ├── 5.pdf │ │ ├── 5.png │ │ ├── 6.pdf │ │ ├── 6.png │ │ ├── 7.pdf │ │ ├── 7.png │ │ ├── 8.pdf │ │ ├── 8.png │ │ ├── 9.pdf │ │ └── 9.png │ ├── git-credential-read-only │ └── sections │ │ ├── advanced-merging.asc │ │ ├── bundling.asc │ │ ├── credentials.asc │ │ ├── debugging.asc │ │ ├── interactive-staging.asc │ │ ├── replace.asc │ │ ├── rerere.asc │ │ ├── reset.asc │ │ ├── revision-selection.asc │ │ ├── rewriting-history.asc │ │ ├── searching.asc │ │ ├── signing.asc │ │ ├── stashing-cleaning.asc │ │ ├── submodules.asc │ │ └── subtree-merges.asc ├── 08-customizing-git │ └── sections │ │ ├── attributes.asc │ │ ├── config.asc │ │ ├── hooks.asc │ │ └── policy.asc ├── 09-git-and-other-scms │ └── sections │ │ ├── client-hg.asc │ │ ├── client-p4.asc │ │ ├── client-svn.asc │ │ ├── client-tfs.asc │ │ ├── import-custom.asc │ │ ├── import-hg.asc │ │ ├── import-p4.asc │ │ ├── import-svn.asc │ │ └── import-tfs.asc ├── 10-git-internals │ └── sections │ │ ├── environment.asc │ │ ├── maintenance.asc │ │ ├── objects.asc │ │ ├── packfiles.asc │ │ ├── plumbing-porcelain.asc │ │ ├── refs.asc │ │ ├── refspec.asc │ │ └── transfer-protocols.asc ├── A-git-in-other-environments │ └── sections │ │ ├── bash.asc │ │ ├── eclipse.asc │ │ ├── guis.asc │ │ ├── powershell.asc │ │ ├── visualstudio.asc │ │ └── zsh.asc ├── B-embedding-git │ ├── callouts │ │ ├── 1.pdf │ │ ├── 1.png │ │ ├── 10.pdf │ │ ├── 10.png │ │ ├── 2.pdf │ │ ├── 2.png │ │ ├── 3.pdf │ │ ├── 3.png │ │ ├── 4.pdf │ │ ├── 4.png │ │ ├── 5.pdf │ │ ├── 5.png │ │ ├── 6.pdf │ │ ├── 6.png │ │ ├── 7.pdf │ │ ├── 7.png │ │ ├── 8.pdf │ │ ├── 8.png │ │ ├── 9.pdf │ │ └── 9.png │ └── sections │ │ ├── command-line.asc │ │ ├── jgit.asc │ │ └── libgit2.asc ├── contributors.asc ├── cover.html ├── cover.png ├── dedication.asc ├── index.asc ├── introduction.asc ├── license.asc ├── preface_ben.asc ├── preface_scott.asc └── toc.asc ├── callouts ├── 1.pdf ├── 1.png ├── 10.pdf ├── 10.png ├── 2.pdf ├── 2.png ├── 3.pdf ├── 3.png ├── 4.pdf ├── 4.png ├── 5.pdf ├── 5.png ├── 6.pdf ├── 6.png ├── 7.pdf ├── 7.png ├── 8.pdf ├── 8.png ├── 9.pdf └── 9.png ├── ch01-introduction.asc ├── ch02-git-basics.asc ├── ch03-git-branching.asc ├── ch04-git-server.asc ├── ch05-distributed-git.asc ├── ch06-github.asc ├── ch07-git-tools.asc ├── ch08-customizing-git.asc ├── ch09-git-and-other-scms.asc ├── ch10-git-internals.asc ├── diagram-source └── progit.sketch ├── images ├── 2fa-1.png ├── account-settings.png ├── advance-master.png ├── advance-testing.png ├── areas.png ├── avatar-crop.png ├── basic-branching-1.png ├── basic-branching-2.png ├── basic-branching-3.png ├── basic-branching-4.png ├── basic-branching-5.png ├── basic-branching-6.png ├── basic-merging-1.png ├── basic-merging-2.png ├── basic-rebase-1.png ├── basic-rebase-2.png ├── basic-rebase-3.png ├── basic-rebase-4.png ├── benevolent-dictator.png ├── bitnami.png ├── blink-01-start.png ├── blink-02-pr.png ├── blink-03-pull-request-open.png ├── blink-04-email.png ├── blink-04-pr-comment.png ├── blink-05-general-comment.png ├── blink-06-final.png ├── blink-pull-request-open copy.png ├── blink-pull-request-open.png ├── branch-and-history.png ├── branch_widget_mac.png ├── branch_widget_win.png ├── centralized.png ├── centralized_workflow.png ├── checkout-master.png ├── clean.png ├── collaborators.png ├── commit-and-tree.png ├── commits-and-parents.png ├── data-model-1.png ├── data-model-2.png ├── data-model-3.png ├── data-model-4.png ├── deltas.png ├── distributed.png ├── double-dot.png ├── egit.png ├── email-settings.png ├── emoji.png ├── forkbutton.png ├── git-bash.png ├── git-diff-check.png ├── git-fusion-boot.png ├── git-fusion-perforce-graph.png ├── git-gui.png ├── git-instaweb.png ├── git-osx-installer.png ├── git-tfs-ct.png ├── github_mac.png ├── github_win.png ├── gitk.png ├── gitlab-broadcast.png ├── gitlab-groups.png ├── gitlab-menu.png ├── gitlab-users.png ├── head-to-master.png ├── head-to-testing.png ├── hubot.png ├── integration-manager.png ├── interesting-rebase-1.png ├── interesting-rebase-2.png ├── interesting-rebase-3.png ├── interesting-rebase-4.png ├── interesting-rebase-5.png ├── large-merges-1.png ├── large-merges-2.png ├── lifecycle.png ├── local.png ├── lr-branches-1.png ├── lr-branches-2.png ├── maint-01-email.png ├── maint-02-merge.png ├── maint-03-email-resp.png ├── maint-04-target.png ├── maint-05-mentions.png ├── maint-06-unsubscribe.png ├── maint-07-notifications.png ├── maint-08-notifications-page.png ├── maint-09-contrib.png ├── maint-10-default-branch.png ├── maint-11-transfer.png ├── managed-team-1.png ├── managed-team-2.png ├── managed-team-3.png ├── managed-team-flow.png ├── markdown-01-example.png ├── markdown-02-tasks.png ├── markdown-03-task-summary.png ├── markdown-04-fenced-code.png ├── markdown-05-quote.png ├── markdown-06-emoji-complete.png ├── markdown-07-emoji.png ├── markdown-08-drag-drop.png ├── mentions-01-syntax.png ├── mentions-02-render.png ├── mentions-03-closed.png ├── merging-workflows-1.png ├── merging-workflows-2.png ├── merging-workflows-3.png ├── merging-workflows-4 2.png ├── merging-workflows-4.png ├── merging-workflows-5.png ├── new-repo.png ├── neworg.png ├── newrepo.png ├── newrepoform.png ├── notifications.png ├── orgs-01-page.png ├── orgs-02-teams.png ├── orgs-03-audit.png ├── p4merge.png ├── perils-of-rebasing-1.png ├── perils-of-rebasing-2.png ├── perils-of-rebasing-3.png ├── perils-of-rebasing-4.png ├── perils-of-rebasing-5.png ├── posh-git.png ├── pr-01-fail.png ├── pr-02-merge-fix.png ├── public-small-1.png ├── public-small-2.png ├── public-small-3.png ├── rebasing-1.png ├── rebasing-2.png ├── remote-branches-1.png ├── remote-branches-2.png ├── remote-branches-3.png ├── remote-branches-4.png ├── remote-branches-5.png ├── replace1.png ├── replace2.png ├── replace3.png ├── replace4.png ├── replace5.png ├── reposettingslink.png ├── rerere1.png ├── rerere2.png ├── rerere3.png ├── reset-checkout.png ├── reset-ex1.png ├── reset-ex2.png ├── reset-ex3.png ├── reset-ex4.png ├── reset-ex5.png ├── reset-ex6.png ├── reset-hard.png ├── reset-mixed.png ├── reset-path1.png ├── reset-path2.png ├── reset-path3.png ├── reset-soft.png ├── reset-squash-r1.png ├── reset-squash-r2.png ├── reset-squash-r3.png ├── reset-start.png ├── reset-workflow.png ├── scripting-01-services.png ├── scripting-02-email-service.png ├── scripting-03-webhook.png ├── scripting-04-webhook-debug.png ├── scripting-05-access-token.png ├── scripting-06-comment.png ├── scripting-07-status.png ├── signup.png ├── small-team-1.png ├── small-team-2.png ├── small-team-3.png ├── small-team-4.png ├── small-team-5.png ├── small-team-6.png ├── small-team-7.png ├── small-team-flow.png ├── smudge.png ├── snapshots.png ├── ssh-keys.png ├── topic-branches-1.png ├── topic-branches-2.png ├── two-branches.png ├── undomerge-reset.png ├── undomerge-revert.png ├── undomerge-revert2.png ├── undomerge-revert3.png ├── undomerge-start.png ├── vs-1.png ├── vs-2.png ├── your-profile.png ├── zsh-oh-my.png └── zsh-prompt.png ├── progit.asc ├── status.json └── theme ├── epub ├── epub.css ├── epub.xsl └── layout.html ├── html ├── html.css └── html.xsl ├── mobi ├── mobi.css └── mobi.xsl └── pdf ├── pdf.css ├── pdf.xsl └── pdf.xsl~ /.github/workflows/pr-build.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request Build 2 | 3 | on: 4 | pull_request: 5 | branches: [ main, master ] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | 13 | - name: Download bootstrap file 14 | run: wget https://raw.githubusercontent.com/progit/progit2-pub/master/bootstrap.sh 15 | - name: Run bootstrap 16 | run: sh bootstrap.sh 17 | - name: Set up Ruby 18 | uses: ruby/setup-ruby@v1 19 | with: 20 | ruby-version: 2.7 21 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 22 | 23 | - name: Build book 24 | run: bundle exec rake book:build_action 25 | -------------------------------------------------------------------------------- /.github/workflows/release-on-merge.yml: -------------------------------------------------------------------------------- 1 | name: Release on push to main 2 | 3 | on: 4 | push: 5 | branches: [ main, master ] 6 | 7 | jobs: 8 | release: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | with: 13 | fetch-depth: 0 14 | - name: get bootstrap file 15 | run: wget https://raw.githubusercontent.com/progit/progit2-pub/master/bootstrap.sh 16 | - name: run bootstrap 17 | run: sh bootstrap.sh 18 | - name: Compute tag name 19 | id: compute-tag 20 | run: | 21 | echo Computing next tag number 22 | LASTPATCH=$(git describe --tags | cut -d- -f1 | cut -d. -f3) 23 | PATCH=$(($LASTPATCH+1)) 24 | echo "::set-output name=tagname::2.1.${PATCH}" 25 | echo "::set-output name=branch::${GITHUB_REF#refs/heads/}" 26 | 27 | - name: Set up Ruby 28 | uses: ruby/setup-ruby@v1 29 | with: 30 | ruby-version: 2.7 31 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 32 | 33 | - name: Build release assets 34 | run: bundle exec rake book:build_action 35 | 36 | - name: Create release 37 | uses: ncipollo/release-action@v1 38 | with: 39 | token: ${{ secrets.GITHUB_TOKEN }} 40 | tag: ${{ steps.compute-tag.outputs.tagname }} 41 | commit: ${{ steps.compute-tag.outputs.branch }} 42 | artifacts: './progit.epub,./progit.mobi,./progit.pdf,./progit.html' 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | .DS_Store 3 | .classpath 4 | .project 5 | 6 | # build artifacts 7 | progit.html 8 | progit.pdf 9 | progit.pdfmarks 10 | progit.epub 11 | progit-kf8.epub 12 | progit.mobi 13 | /book/contributors.txt 14 | 15 | /bin/ 16 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | Jean-Noël Avila 2 | Scott Chacon -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | sudo: false 3 | git: 4 | depth: false 5 | cache: bundler 6 | before_install: 7 | - wget https://raw.githubusercontent.com/progit/progit2-pub/master/bootstrap.sh 8 | - sh bootstrap.sh 9 | script: bundle exec rake book:build 10 | after_success: bundle exec rake book:tag 11 | deploy: 12 | provider: releases 13 | file_glob: true 14 | file: 15 | - progit*.epub 16 | - progit*.mobi 17 | - progit*.pdf 18 | skip_cleanup: true 19 | on: 20 | tags: true 21 | api-key: $GITHUB_API_TOKEN 22 | branches: 23 | only: 24 | - master 25 | - /^2\.1(\.\d+)+$/ 26 | 27 | addons: 28 | apt: 29 | packages: 30 | - epubcheck 31 | notifications: 32 | email: 33 | on_success: never 34 | on_failure: always 35 | -------------------------------------------------------------------------------- /A-git-in-other-environments.asc: -------------------------------------------------------------------------------- 1 | [appendix] 2 | [#A-git-in-other-environments] 3 | == Git en otros entornos 4 | 5 | Si has leído hasta aquí todo el libro, seguro que has aprendido un montón de cosas sobre el uso de Git con la línea de comandos. 6 | Se puede trabajar con archivos locales, conectar nuestro repositorio con otros repositorios en la red y realizar nuestro trabajo eficientemente con ellos. Aunque las opciones no terminan ahí, Git se utiliza con parte de un ecosistema mayor y un terminal no siempre es la mejor forma de trabajar. 7 | Vamos a ver otros tipos de entornos en los que Git resulta muy útil y cómo otras aplicaciones (incluidas las tuyas) pueden trabajar conjuntamente con Git. 8 | 9 | //// 10 | If you read through the whole book, you've learned a lot about how to use Git at the command line. 11 | You can work with local files, connect your repository to others over a network, and work effectively with others. 12 | But the story doesn't end there; Git is usually used as part of a larger ecosystem, and the terminal isn't always the best way to work with it. 13 | 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. 14 | //// 15 | 16 | include::book/A-git-in-other-environments/sections/guis.asc[] 17 | 18 | include::book/A-git-in-other-environments/sections/visualstudio.asc[] 19 | 20 | include::book/A-git-in-other-environments/sections/eclipse.asc[] 21 | 22 | 23 | include::book/A-git-in-other-environments/sections/bash.asc[] 24 | 25 | include::book/A-git-in-other-environments/sections/zsh.asc[] 26 | 27 | include::book/A-git-in-other-environments/sections/powershell.asc[] 28 | 29 | === Resumen 30 | 31 | Has aprendido a sacar partido a toda la potencia de Git desde dentro de la herramienta para poder usarlo en el tu trabajo diario así como a acceder a los repositorios Git desde tus propios programas. 32 | //// 33 | You've learned how to harness Git's power from inside the tools that you use during your everyday work, and also how to access Git repositories from your own programs. 34 | //// 35 | -------------------------------------------------------------------------------- /B-embedding-git.asc: -------------------------------------------------------------------------------- 1 | [#B-embedding-git] 2 | [appendix] 3 | == Integrando Git en tus Aplicaciones 4 | 5 | Si tu aplicación es para desarrolladores, es muy probable que pueda beneficiarse de la integración con el control de código fuente. 6 | Incluso las aplicaciones que no sean para desarrolladores, tales como editores de documentos, podrían beneficiarse de las características de control de versiones, y el modelo de Git funciona muy bien para muchos escenarios diferentes. 7 | 8 | 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. 9 | 10 | include::book/B-embedding-git/sections/command-line.asc[] 11 | 12 | include::book/B-embedding-git/sections/libgit2.asc[] 13 | 14 | include::book/B-embedding-git/sections/jgit.asc[] 15 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Pro Git (2nd Edition) 2 | 3 | 4 | ## Licensing 5 | 6 | By opening a pull request to this repository, you agree to provide your work under the [project license](LICENSE.asc). 7 | Also, you agree to grant such license of your work as is required for the purposes of future print editions to @ben and @schacon. 8 | Should your changes appear in a printed edition, you'll be included in the [contributors list](book/contributors.asc). 9 | 10 | ## Small Corrections 11 | 12 | Errata and basic clarifications will be accepted if we agree that they improve the content. You can also open an issue so we can figure out how or if it needs to be addressed. 13 | 14 | If you've never done this before, the [flow guide](https://guides.github.com/introduction/flow/) might be useful. 15 | 16 | ## Large Rewrites 17 | 18 | Open an issue for discussion before you start. These changes tend to be very subjective, often only clarifying things for some small percentage of people and it's rarely worth the time to accept them. Professional copy editors have already reviewed this content multiple times so while you may have somewhat better taste and grammar than we do it's unlikely that your prose is going to be *so* much better that it's worth changing vast swaths of text. 19 | 20 | ## Figures 21 | 22 | The images in this book were generated using [Sketch 3](http://bohemiancoding.com/sketch/), with the [included sketchbook file](diagram-source/progit.sketch). 23 | 24 | To add a figure: 25 | 26 | 1. Add a page to the sketchbook. Try to use the included symbols wherever possible. 27 | 1. Add a "slice" to your page. Give it a name that matches the destination PNG filename, relative from the root of the source directory. 28 | 1. Make sure your slice is set to export at "800w". 29 | 30 | 31 | ## Translations 32 | 33 | Translations to other languages are highly encouraged but handled a little differently than the first edition. We now keep each translation in a separate repository and automatically build the output files through Atlas. This was something that was really difficult in the last edition. 34 | 35 | Since each translation is a different repository, we can also have different maintainers for each project. The Pro Git team simply pulls them in and builds them for the translation teams. To get automatic builds, translations repositories will have to be under the [`progit` organization on GitHub](https://github.com/progit). 36 | 37 | You can find out information on all the current translations and information on how to start your own at http://progit.org/translations. 38 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'rake' 4 | gem 'asciidoctor', '1.5.6.1' 5 | 6 | gem 'json' 7 | gem 'awesome_print' 8 | 9 | gem 'asciidoctor-epub3', :git => 'https://github.com/asciidoctor/asciidoctor-epub3' 10 | gem 'asciidoctor-pdf', '1.5.0.alpha.16' 11 | gem 'asciidoctor-pdf-cjk', '~> 0.1.3' 12 | gem 'asciidoctor-pdf-cjk-kai_gen_gothic', '~> 0.1.1' 13 | 14 | gem 'coderay' 15 | gem 'pygments.rb' 16 | gem 'thread_safe' 17 | gem 'epubcheck' 18 | gem 'kindlegen' 19 | 20 | gem 'octokit' 21 | gem 'github_changelog_generator', github: 'Furtif/github-changelog-generator' 22 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GIT 2 | remote: git://github.com/Furtif/github-changelog-generator.git 3 | revision: efa960ce1c189cd999753713fcfbfb6b7514ab45 4 | specs: 5 | github_changelog_generator (1.14.3) 6 | activesupport 7 | faraday-http-cache 8 | multi_json 9 | octokit (~> 4.6) 10 | rainbow (>= 2.2.1) 11 | rake (>= 10.0) 12 | retriable (~> 3.0) 13 | 14 | GIT 15 | remote: https://github.com/asciidoctor/asciidoctor-epub3 16 | revision: ba930925a1df617312f986c7599b5162473b716f 17 | specs: 18 | asciidoctor-epub3 (1.5.0.alpha.9.dev) 19 | asciidoctor (~> 1.5.0) 20 | gepub (~> 0.6.9.2) 21 | thread_safe (~> 0.3.6) 22 | 23 | GEM 24 | remote: https://rubygems.org/ 25 | specs: 26 | Ascii85 (1.0.3) 27 | activesupport (5.1.5) 28 | concurrent-ruby (~> 1.0, >= 1.0.2) 29 | i18n (~> 0.7) 30 | minitest (~> 5.1) 31 | tzinfo (~> 1.1) 32 | addressable (2.5.2) 33 | public_suffix (>= 2.0.2, < 4.0) 34 | afm (0.2.2) 35 | asciidoctor (1.5.6.1) 36 | asciidoctor-pdf (1.5.0.alpha.16) 37 | asciidoctor (>= 1.5.0) 38 | prawn (>= 1.3.0, < 2.3.0) 39 | prawn-icon (= 1.3.0) 40 | prawn-svg (>= 0.21.0, < 0.28.0) 41 | prawn-table (= 0.2.2) 42 | prawn-templates (>= 0.0.3, <= 0.1.1) 43 | safe_yaml (~> 1.0.4) 44 | thread_safe (~> 0.3.6) 45 | treetop (= 1.5.3) 46 | asciidoctor-pdf-cjk (0.1.3) 47 | asciidoctor-pdf (~> 1.5.0.alpha.8) 48 | asciidoctor-pdf-cjk-kai_gen_gothic (0.1.1) 49 | asciidoctor-pdf-cjk (~> 0.1.2) 50 | awesome_print (1.8.0) 51 | coderay (1.1.2) 52 | concurrent-ruby (1.0.5) 53 | css_parser (1.6.0) 54 | addressable 55 | epubcheck (3.0.1) 56 | faraday (0.14.0) 57 | multipart-post (>= 1.2, < 3) 58 | faraday-http-cache (2.0.0) 59 | faraday (~> 0.8) 60 | gepub (0.6.9.2) 61 | nokogiri (~> 1.6.1) 62 | rubyzip (>= 1.1.1) 63 | hashery (2.1.2) 64 | i18n (0.9.5) 65 | concurrent-ruby (~> 1.0) 66 | json (2.1.0) 67 | kindlegen (3.0.3) 68 | rake 69 | rubyzip 70 | mini_portile2 (2.1.0) 71 | minitest (5.11.3) 72 | multi_json (1.13.1) 73 | multipart-post (2.0.0) 74 | nokogiri (1.6.8.1) 75 | mini_portile2 (~> 2.1.0) 76 | octokit (4.8.0) 77 | sawyer (~> 0.8.0, >= 0.5.3) 78 | pdf-core (0.7.0) 79 | pdf-reader (2.1.0) 80 | Ascii85 (~> 1.0.0) 81 | afm (~> 0.2.1) 82 | hashery (~> 2.0) 83 | ruby-rc4 84 | ttfunk 85 | polyglot (0.3.5) 86 | prawn (2.2.2) 87 | pdf-core (~> 0.7.0) 88 | ttfunk (~> 1.5) 89 | prawn-icon (1.3.0) 90 | prawn (>= 1.1.0, < 3.0.0) 91 | prawn-svg (0.27.1) 92 | css_parser (~> 1.3) 93 | prawn (>= 0.11.1, < 3) 94 | prawn-table (0.2.2) 95 | prawn (>= 1.3.0, < 3.0.0) 96 | prawn-templates (0.1.1) 97 | pdf-reader (~> 2.0) 98 | prawn (~> 2.2) 99 | public_suffix (3.0.2) 100 | pygments.rb (1.2.1) 101 | multi_json (>= 1.0.0) 102 | rainbow (3.0.0) 103 | rake (12.3.0) 104 | retriable (3.1.1) 105 | ruby-rc4 (0.1.5) 106 | rubyzip (1.2.1) 107 | safe_yaml (1.0.4) 108 | sawyer (0.8.1) 109 | addressable (>= 2.3.5, < 2.6) 110 | faraday (~> 0.8, < 1.0) 111 | thread_safe (0.3.6) 112 | treetop (1.5.3) 113 | polyglot (~> 0.3) 114 | ttfunk (1.5.1) 115 | tzinfo (1.2.5) 116 | thread_safe (~> 0.1) 117 | 118 | PLATFORMS 119 | ruby 120 | 121 | DEPENDENCIES 122 | asciidoctor (= 1.5.6.1) 123 | asciidoctor-epub3! 124 | asciidoctor-pdf (= 1.5.0.alpha.16) 125 | asciidoctor-pdf-cjk (~> 0.1.3) 126 | asciidoctor-pdf-cjk-kai_gen_gothic (~> 0.1.1) 127 | awesome_print 128 | coderay 129 | epubcheck 130 | github_changelog_generator! 131 | json 132 | kindlegen 133 | octokit 134 | pygments.rb 135 | rake 136 | thread_safe 137 | 138 | BUNDLED WITH 139 | 1.16.1 140 | -------------------------------------------------------------------------------- /LICENSE.asc: -------------------------------------------------------------------------------- 1 | This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 2 | -------------------------------------------------------------------------------- /README.asc: -------------------------------------------------------------------------------- 1 | = Pro Git, Segunda Edición, Español. 2 | 3 | Bienvenido a la segunda edición del libro Pro Git. 4 | 5 | Puedes encontrar este libro en la Web en http://git-scm.com/book 6 | 7 | Tal y como es el caso de la primera edición, la segunda edición es abierta bajo una licencia "Creative Commons". 8 | 9 | Un par de cosas han cambiado con respecto a la primera edición. Primero, hemos cambiado Markdown por el asombroso formato Asciidoc para el texto del libro. Además nos hemos cambiado a la https://atlas.oreilly.com[plataforma Atlas] de O'Reilly para la generación constante del texto del libro de tal forma que los formatos principales están siempre disponibles en todos los idiomas. 10 | 11 | También hemos decidido mantener las traducciones en repositorios separados en lugar de subdirectorios dentro del repositorio de inglés. Para más información, visita el documento de link:CONTRIBUTING.md[Contribución]. 12 | 13 | == ¿Cómo generar el libro? 14 | 15 | Existen dos maneras de generar el contenido del libro digital a partir de este código base. 16 | 17 | La manera más fácil es simplemente dejando que nosotros lo hagamos. Tenemos un robot que detecta cualquier contribución nueva en la rama principal (main branch) y genera el libro automáticamente para todos. 18 | 19 | Puedes encontrar los libros más recientes en http://git-scm.com/book[] e información adicional acerca de los libros disponibles en https://progit.org[]. 20 | 21 | La otra forma de general el libro digital es hacerlo manualmente con Asciidoctor. Si ejecutas los siguiente comandos, _es posible_ obtener las versiones en HTML, Epub, Mobi y PDF: 22 | 23 | ---- 24 | $ bundle install 25 | $ bundle exec rake book:build 26 | Converting to HTML... 27 | -- HTML output at progit.html 28 | Converting to EPub... 29 | -- Epub output at progit.epub 30 | Converting to Mobi (kf8)... 31 | -- Mobi output at progit.mobi 32 | Converting to PDF... 33 | -- PDF output at progit.pdf 34 | ---- 35 | 36 | Esto usa los proyectos `asciidoctor`, `asciidoctor-pdf` y `asciidoctor-epub`. 37 | 38 | == ¿Cómo contribuir? 39 | 40 | Si deseas ayudar haciendo algún tipo de cambio o realizando alguna traducción, visita la link:CONTRIBUTING.md[guía para contribuciones] y revisa las pautas establecidas en este otro link:TRANSLATION_NOTES.asc[documento]. 41 | -------------------------------------------------------------------------------- /atlas.json: -------------------------------------------------------------------------------- 1 | { 2 | "branch": "master", 3 | "files": [ 4 | "book/cover.html", 5 | "LICENSE.asc", 6 | "book/preface.asc", 7 | "book/contributors.asc", 8 | "book/introduction.asc", 9 | "book/toc.asc", 10 | "book/01-introduction/1-introduction.asc", 11 | "book/02-git-basics/1-git-basics.asc", 12 | "book/03-git-branching/1-git-branching.asc", 13 | "book/04-git-server/1-git-server.asc", 14 | "book/05-distributed-git/1-distributed-git.asc", 15 | "book/06-github/1-github.asc", 16 | "book/07-git-tools/1-git-tools.asc", 17 | "book/08-customizing-git/1-customizing-git.asc", 18 | "book/09-git-and-other-scms/1-git-and-other-scms.asc", 19 | "book/10-git-internals/1-git-internals.asc", 20 | "book/A-git-in-other-environments/1-git-other-environments.asc", 21 | "book/B-embedding-git/1-embedding-git.asc", 22 | "book/C-git-commands/1-git-commands.asc", 23 | "book/index.asc" 24 | ], 25 | "formats": { 26 | "pdf": { 27 | "version": "web", 28 | "index": true, 29 | "toc": true, 30 | "syntaxhighlighting": true, 31 | "show_comments": false 32 | }, 33 | "epub": { 34 | "index": true, 35 | "toc": true, 36 | "epubcheck": true, 37 | "embedded_fonts": [ 38 | "fonts/DejaVuSerif.otf", 39 | "fonts/DejaVuSans-Bold.otf", 40 | "fonts/hold/UbuntuMono-Bold.otf", 41 | "fonts/hold/UbuntuMono-BoldItalic.otf", 42 | "fonts/hold/UbuntuMono-Regular.otf", 43 | "fonts/hold/UbuntuMono-Italic.otf" 44 | ], 45 | "syntaxhighlighting": true, 46 | "show_comments": false 47 | }, 48 | "mobi": { 49 | "index": true, 50 | "toc": true, 51 | "embedded_fonts": [ 52 | "fonts/DejaVuSerif.otf", 53 | "fonts/DejaVuSans-Bold.otf", 54 | "fonts/hold/UbuntuMono-Bold.otf", 55 | "fonts/hold/UbuntuMono-BoldItalic.otf", 56 | "fonts/hold/UbuntuMono-Regular.otf", 57 | "fonts/hold/UbuntuMono-Italic.otf" 58 | ], 59 | "syntaxhighlighting": true, 60 | "show_comments": false 61 | }, 62 | "html": { 63 | "index": true, 64 | "toc": true, 65 | "syntaxhighlighting": true, 66 | "show_comments": false, 67 | "consolidate": false, 68 | "consolidated": false 69 | } 70 | }, 71 | "theme": "oreillymedia/atlas_tech1c_theme", 72 | "title": "Pro Git" 73 | } 74 | -------------------------------------------------------------------------------- /book/01-introduction/sections/command-line.asc: -------------------------------------------------------------------------------- 1 | === La Línea de Comandos 2 | 3 | Existen muchas formas de usar Git. Por un lado tenemos las herramientas originales de línea de comandos, y por otro lado tenemos una gran variedad de interfaces de usuario con distintas capacidades. En este libro vamos a utilizar Git desde la línea de comandos. La línea de comandos es el único lugar en donde puedes ejecutar *todos* los comandos de Git - la mayoría de interfaces gráficas de usuario solo implementan una parte de las características de Git por motivos de simplicidad. 4 | Si tú sabes cómo realizar algo desde la línea de comandos, seguramente serás capaz de averiguar cómo hacer lo mismo desde una interfaz gráfica. Sin embargo, la relación opuesta no es necesariamente cierta. 5 | Así mismo, la decisión de qué cliente gráfico utilizar depende totalmente de tu gusto, pero _todos_ los usuarios tendrán las herramientas de línea de comandos instaladas y disponibles. 6 | 7 | Nosotros esperamos que sepas cómo abrir el Terminal en Mac, o el "Command Prompt" o "Powershell" en Windows. Si no entiendes de lo que estamos hablando aquí, te recomendamos que hagas una pausa para investigar acerca de esto, de tal forma que puedas entender el resto de las explicaciones y descripciones que siguen en este libro. 8 | -------------------------------------------------------------------------------- /book/01-introduction/sections/first-time-setup.asc: -------------------------------------------------------------------------------- 1 | [[r_first_time]] 2 | === Configurando Git por primera vez 3 | 4 | Ahora que tienes Git en tu sistema, vas a querer hacer algunas cosas para personalizar tu entorno de Git. 5 | Es necesario hacer estas cosas solamente una vez en tu computadora, y se mantendrán entre actualizaciones. 6 | También puedes cambiarlas en cualquier momento volviendo a ejecutar los comandos correspondientes. 7 | 8 | Git trae una herramienta llamada `git config`, que te permite obtener y establecer variables de configuración que controlan el aspecto y funcionamiento de Git.(((git commands, config))) 9 | Estas variables pueden almacenarse en tres sitios distintos: 10 | 11 | 1. Archivo `/etc/gitconfig`: Contiene valores para todos los usuarios del sistema y todos sus repositorios. Si pasas la opción `--system` a `git config`, lee y escribe específicamente en este archivo. 12 | 2. Archivo `~/.gitconfig` o `~/.config/git/config`: Este archivo es específico de tu usuario. Puedes hacer que Git lea y escriba específicamente en este archivo pasando la opción `--global`. 13 | 3. Archivo `config` en el directorio de Git (es decir, `.git/config`) del repositorio que estés utilizando actualmente: Este archivo es específico del repositorio actual. 14 | 15 | Cada nivel sobrescribe los valores del nivel anterior, por lo que los valores de `.git/config` tienen preferencia sobre los de `/etc/gitconfig`. 16 | 17 | En sistemas Windows, Git busca el archivo `.gitconfig` en el directorio `$HOME` (para mucha gente será (`C:\Users\$USER`). 18 | También busca el archivo `/etc/gitconfig`, aunque esta ruta es relativa a la raíz MSys, que es donde decidiste instalar Git en tu sistema Windows cuando ejecutaste el instalador. 19 | 20 | ==== Tu Identidad 21 | 22 | Lo primero que deberás hacer cuando instales Git es establecer tu nombre de usuario y dirección de correo electrónico. 23 | Esto es importante porque los "commits" de Git usan esta información, y es introducida de manera inmutable en los commits que envías: 24 | 25 | [source,console] 26 | ---- 27 | $ git config --global user.name "John Doe" 28 | $ git config --global user.email johndoe@example.com 29 | ---- 30 | 31 | De nuevo, sólo necesitas hacer esto una vez si especificas la opción `--global`, ya que Git siempre usará esta información para todo lo que hagas en ese sistema. 32 | Si quieres sobrescribir esta información con otro nombre o dirección de correo para proyectos específicos, puedes ejecutar el comando sin la opción `--global` cuando estés en ese proyecto. 33 | 34 | Muchas de las herramientas de interfaz gráfica te ayudarán a hacer esto la primera vez que las uses. 35 | 36 | ==== Tu Editor 37 | 38 | Ahora que tu identidad está configurada, puedes elegir el editor de texto por defecto que se utilizará cuando Git necesite que introduzcas un mensaje. 39 | Si no indicas nada, Git usará el editor por defecto de tu sistema, que generalmente es Vim. 40 | Si quieres usar otro editor de texto como Emacs, puedes hacer lo siguiente: 41 | 42 | [source,console] 43 | ---- 44 | $ git config --global core.editor emacs 45 | ---- 46 | 47 | [NOTE] 48 | ==== 49 | Vim y Emacs son editores de texto frecuentemente usados por desarrolladores en sistemas basados en Unix como Linux y Mac. Si no estás familiarizado con ninguno de estos editores o estás en un sistema Windows, es posible que necesites buscar instrucciones acerca de cómo configurar tu editor favorito con Git. 50 | Si no configuras un editor así y no conoces acerca de Vim o Emacs, es muy factible que termines en un estado bastante confuso en el momento en que sean ejecutados. 51 | ==== 52 | 53 | ==== Comprobando tu Configuración 54 | 55 | Si quieres comprobar tu configuración, puedes usar el comando `git config --list` para mostrar todas las propiedades que Git ha configurado: 56 | 57 | [source,console] 58 | ---- 59 | $ git config --list 60 | user.name=John Doe 61 | user.email=johndoe@example.com 62 | color.status=auto 63 | color.branch=auto 64 | color.interactive=auto 65 | color.diff=auto 66 | ... 67 | ---- 68 | 69 | Puede que veas claves repetidas, porque Git lee la misma clave de distintos archivos (`/etc/gitconfig` y `~/.gitconfig`, por ejemplo). 70 | En estos casos, Git usa el último valor para cada clave única que ve. 71 | 72 | También puedes comprobar el valor que Git utilizará para una clave específica ejecutando `git config `:(((git commands, config))) 73 | 74 | [source,console] 75 | ---- 76 | $ git config user.name 77 | John Doe 78 | ---- 79 | -------------------------------------------------------------------------------- /book/01-introduction/sections/help.asc: -------------------------------------------------------------------------------- 1 | [[r_git_help]] 2 | === ¿Cómo obtener ayuda? 3 | 4 | Si alguna vez necesitas ayuda usando Git, existen tres formas de ver la página del manual (manpage) para cualquier comando de Git: 5 | 6 | [source,console] 7 | ---- 8 | $ git help 9 | $ git --help 10 | $ man git- 11 | ---- 12 | 13 | Por ejemplo, puedes ver la página del manual para el comando config ejecutando(((git commands, help))) 14 | 15 | [source,console] 16 | ---- 17 | $ git help config 18 | ---- 19 | 20 | Estos comandos son muy útiles porque puedes acceder a ellos desde cualquier sitio, incluso sin conexión. Si las páginas del manual y este libro no son suficientes y necesitas que te ayude una persona, puedes probar en los canales #git o #github del servidor de IRC Freenode (irc.freenode.net). Estos canales están llenos de cientos de personas que conocen muy bien Git y suelen estar dispuestos a ayudar.(((IRC))) 21 | -------------------------------------------------------------------------------- /book/01-introduction/sections/history.asc: -------------------------------------------------------------------------------- 1 | === Una breve historia de Git 2 | 3 | Como muchas de las grandes cosas en esta vida, Git comenzó con un poco de destrucción creativa y una gran polémica. 4 | 5 | El kernel de Linux es un proyecto de software de código abierto con un alcance bastante amplio.(((Linux))) Durante la mayor parte del mantenimiento del kernel de Linux (1991-2002), los cambios en el software se realizaban a través de parches y archivos. En el 2002, el proyecto del kernel de Linux empezó a usar un DVCS propietario llamado BitKeeper.(((BitKeeper))) 6 | 7 | En el 2005, la relación entre la comunidad que desarrollaba el kernel de Linux y la compañía que desarrollaba BitKeeper se vino abajo y la herramienta dejó de ser ofrecida de manera gratuita. Esto impulsó a la comunidad de desarrollo de Linux (y en particular a Linus Torvalds, el creador de Linux) a desarrollar su propia herramienta basada en algunas de las lecciones que aprendieron mientras usaban BitKeeper. Algunos de los objetivos del nuevo sistema fueron los siguientes: 8 | 9 | * Velocidad 10 | * Diseño sencillo 11 | * Gran soporte para desarrollo no lineal (miles de ramas paralelas) 12 | * Completamente distribuido 13 | * Capaz de manejar grandes proyectos (como el kernel de Linux) eficientemente (velocidad y tamaño de los datos) 14 | 15 | 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 <>) 16 | -------------------------------------------------------------------------------- /book/02-git-basics/sections/aliases.asc: -------------------------------------------------------------------------------- 1 | [[r_git_aliases]] 2 | === Alias de Git 3 | 4 | (((aliases))) 5 | Antes de terminar este capítulo sobre fundamentos de Git, hay otro pequeño consejo que puede hacer que tu experiencia con Git sea más simple, sencilla y familiar: los alias. 6 | No volveremos a mencionarlos más adelante en este libro, ni supondremos que los has utilizado, pero probablemente deberías saber cómo utilizarlos. 7 | 8 | Git no deduce automáticamente tu comando si lo tecleas parcialmente. Si no quieres teclear el nombre completo de cada comando de Git, puedes establecer fácilmente un alias para cada comando mediante `git config`.(((git commands, config))) 9 | Aquí tienes algunos ejemplos que te pueden interesar: 10 | 11 | [source,console] 12 | ---- 13 | $ git config --global alias.co checkout 14 | $ git config --global alias.br branch 15 | $ git config --global alias.ci commit 16 | $ git config --global alias.st status 17 | ---- 18 | 19 | Esto significa que, por ejemplo, en lugar de teclear `git commit`, solo necesitas teclear `git ci`. 20 | A medida que uses Git, probablemente también utilizarás otros comandos con frecuencia; no dudes en crear nuevos alias para ellos. 21 | 22 | Esta técnica también puede resultar útil para crear comandos que en tu opinión deberían existir. 23 | Por ejemplo, para corregir el problema de usabilidad que encontraste al quitar del área de preparación un archivo, puedes añadir tu propio alias a Git: 24 | 25 | [source,console] 26 | ---- 27 | $ git config --global alias.unstage 'reset HEAD --' 28 | ---- 29 | 30 | Esto hace que los dos comandos siguientes sean equivalentes: 31 | 32 | [source,console] 33 | ---- 34 | $ git unstage fileA 35 | $ git reset HEAD fileA 36 | ---- 37 | 38 | Esto parece un poco más claro. 39 | También es frecuente añadir un comando `last`, de este modo: 40 | 41 | [source,console] 42 | ---- 43 | $ git config --global alias.last 'log -1 HEAD' 44 | ---- 45 | 46 | De esta manera, puedes ver fácilmente cuál fue la última confirmación: 47 | 48 | [source,console] 49 | ---- 50 | $ git last 51 | commit 66938dae3329c7aebe598c2246a8e6af90d04646 52 | Author: Josh Goebel 53 | Date: Tue Aug 26 19:48:51 2008 +0800 54 | 55 | test for current head 56 | 57 | Signed-off-by: Scott Chacon 58 | ---- 59 | 60 | Como puedes ver, Git simplemente sustituye el nuevo comando por lo que sea que hayas puesto en el alias. 61 | Sin embargo, quizás quieras ejecutar un comando externo en lugar de un subcomando de Git. 62 | En ese caso, puedes comenzar el comando con un carácter `!`. 63 | Esto resulta útil si escribes tus propias herramientas para trabajar con un repositorio de Git. 64 | Podemos demostrarlo creando el alias `git visual` para ejecutar `gitk`: 65 | 66 | [source,console] 67 | ---- 68 | $ git config --global alias.visual "!gitk" 69 | ---- 70 | -------------------------------------------------------------------------------- /book/02-git-basics/sections/getting-a-repository.asc: -------------------------------------------------------------------------------- 1 | [[r_getting_a_repo]] 2 | === Obteniendo un repositorio Git 3 | 4 | Puedes obtener un proyecto Git de dos maneras. 5 | La primera es tomar un proyecto o directorio existente e importarlo en Git. 6 | La segunda es clonar un repositorio existente en Git desde otro servidor. 7 | 8 | ==== Inicializando un repositorio en un directorio existente 9 | 10 | Si estás empezando a seguir un proyecto existente en Git, debes ir al directorio del proyecto y usar el siguiente comando: 11 | 12 | [source,console] 13 | ---- 14 | $ git init 15 | ---- 16 | 17 | Esto crea un subdirectorio nuevo llamado `.git`, el cual contiene todos los archivos necesarios del repositorio – un esqueleto de un repositorio de Git. 18 | 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))) 19 | 20 | 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. 21 | Puedes conseguirlo con unos pocos comandos `git add` para especificar qué archivos quieres controlar, seguidos de un `git commit` para confirmar los cambios: 22 | 23 | [source,console] 24 | ---- 25 | $ git add *.c 26 | $ git add LICENSE 27 | $ git commit -m 'initial project version' 28 | ---- 29 | 30 | Veremos lo que hacen estos comandos más adelante. 31 | En este momento, tienes un repositorio de Git con archivos bajo seguimiento y una confirmación inicial. 32 | 33 | [[r_git_cloning]] 34 | ==== Clonando un repositorio existente 35 | 36 | 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`. 37 | 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. 38 | Cada versión de cada archivo de la historia del proyecto es descargada por defecto cuando ejecutas `git clone`. 39 | De hecho, si el disco de tu servidor se corrompe, puedes usar cualquiera de los clones en cualquiera de los clientes para devolver el 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. 40 | 41 | Puedes clonar un repositorio con `git clone [url]`.(((git commands, clone))) 42 | Por ejemplo, si quieres clonar la librería de Git llamada libgit2 puedes hacer algo así: 43 | 44 | [source,console] 45 | ---- 46 | $ git clone https://github.com/libgit2/libgit2 47 | ---- 48 | 49 | Esto crea un directorio llamado `libgit2`, inicializa un directorio `.git` en su interior, descarga toda la información de ese repositorio y saca una copia de trabajo de la última versión. 50 | Si te metes en el directorio `libgit2`, verás que están los archivos del proyecto listos para ser utilizados. 51 | Si quieres clonar el repositorio a un directorio con otro nombre que no sea `libgit2`, puedes especificarlo con la siguiente opción de línea de comandos: 52 | 53 | [source,console] 54 | ---- 55 | $ git clone https://github.com/libgit2/libgit2 mylibgit 56 | ---- 57 | 58 | Ese comando hace lo mismo que el anterior, pero el directorio de destino se llamará `mylibgit`. 59 | 60 | Git te permite usar distintos protocolos de transferencia. 61 | 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. 62 | 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. 63 | -------------------------------------------------------------------------------- /book/03-git-branching/sections/branch-management.asc: -------------------------------------------------------------------------------- 1 | [[r_branch_management]] 2 | === Gestión de Ramas 3 | 4 | (((branches, managing))) 5 | Ahora que ya has creado, fusionado y borrado algunas ramas, vamos a dar un vistazo a algunas herramientas de gestión muy útiles cuando comienzas a utilizar ramas de manera avanzada. 6 | 7 | El comando `git branch` tiene más funciones que las de crear y borrar ramas.(((git commands, branch))) 8 | Si lo lanzas sin parámetros, obtienes una lista de las ramas presentes en tu proyecto: 9 | 10 | [source,console] 11 | ---- 12 | $ git branch 13 | iss53 14 | * master 15 | testing 16 | ---- 17 | 18 | Fijate en el carácter `*` delante de la rama `master`: nos indica la rama activa en este momento (la rama a la que apunta `HEAD`). 19 | Si hacemos una confirmación de cambios (commit), esa será la rama que avance. 20 | Para ver la última confirmación de cambios en cada rama, puedes usar el comando `git branch -v`: 21 | 22 | [source,console] 23 | ---- 24 | $ git branch -v 25 | iss53 93b412c fix javascript issue 26 | * master 7a98805 Merge branch 'iss53' 27 | testing 782fd34 add scott to the author list in the readmes 28 | ---- 29 | 30 | Otra opción útil para averiguar el estado de las ramas, es filtrarlas y mostrar solo aquellas que han sido fusionadas (o que no lo han sido) con la rama actualmente activa. 31 | Para ello, Git dispone de las opciones `--merged` y `--no-merged`. 32 | Si deseas ver las ramas que han sido fusionadas con la rama activa, puedes lanzar el comando `git branch --merged`: 33 | 34 | [source,console] 35 | ---- 36 | $ git branch --merged 37 | iss53 38 | * master 39 | ---- 40 | 41 | Aparece la rama `iss53` porque ya ha sido fusionada. 42 | Las ramas que no llevan por delante el carácter `*` pueden ser eliminadas sin problemas, porque todo su contenido ya ha sido incorporado a otras ramas. 43 | 44 | Para mostrar todas las ramas que contienen trabajos sin fusionar, puedes utilizar el comando `git branch --no-merged`: 45 | 46 | [source,console] 47 | ---- 48 | $ git branch --no-merged 49 | testing 50 | ---- 51 | 52 | Esto nos muestra la otra rama del proyecto. 53 | Debido a que contiene trabajos sin fusionar, al intentar borrarla con `git branch -d`, el comando nos dará un error: 54 | 55 | [source,console] 56 | ---- 57 | $ git branch -d testing 58 | error: The branch 'testing' is not fully merged. 59 | If you are sure you want to delete it, run 'git branch -D testing'. 60 | ---- 61 | 62 | Si realmente deseas borrar la rama y perder el trabajo contenido en ella, puedes forzar el borrado con la opción `-D`; tal y como indica el mensaje de ayuda. 63 | -------------------------------------------------------------------------------- /book/04-git-server/sections/generating-ssh-key.asc: -------------------------------------------------------------------------------- 1 | [[r_generate_ssh_key]] 2 | === Generando tu clave pública SSH 3 | 4 | (((SSH keys))) 5 | Tal y como se ha comentado, muchos servidores Git utilizan la autentificación 6 | a través de claves públicas SSH. Y, para ello, cada usuario del sistema ha de 7 | generarse una, si es que ya no la tiene. El proceso para hacerlo es similar 8 | en casi cualquier sistema operativo. 9 | Ante todo, asegúrate que no tengas ya una clave. Por defecto, las claves 10 | de cualquier usuario SSH se guardan en la carpeta `~/.ssh` de dicho usuario. 11 | Puedes verificar si ya tienes unas claves, simplemente situándote sobre dicha 12 | carpeta y viendo su contenido: 13 | 14 | [source,console] 15 | ---- 16 | $ cd ~/.ssh 17 | $ ls 18 | authorized_keys2 id_dsa known_hosts 19 | config id_dsa.pub 20 | ---- 21 | 22 | Has de buscar un par de archivos con nombres tales como 'algo' y 'algo.pub'; 23 | siendo ese "algo" normalmente 'id_dsa' o 'id_rsa'. El archivo terminado en 24 | '.pub' es tu clave pública, y el otro archivo es tu clave privada. Si no tienes 25 | esos archivos (o no tienes ni siquiera la carpeta '.ssh'), has de crearlos; 26 | utilizando un programa llamado 'ssh-keygen', que viene incluido en el paquete 27 | SSH de los sistemas Linux/Mac o en el paquete MSysGit en los sistemas Windows: 28 | 29 | [source,console] 30 | ---- 31 | $ ssh-keygen 32 | Generating public/private rsa key pair. 33 | Enter file in which to save the key (/home/schacon/.ssh/id_rsa): 34 | Created directory '/home/schacon/.ssh'. 35 | Enter passphrase (empty for no passphrase): 36 | Enter same passphrase again: 37 | Your identification has been saved in /home/schacon/.ssh/id_rsa. 38 | Your public key has been saved in /home/schacon/.ssh/id_rsa.pub. 39 | The key fingerprint is: 40 | d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local 41 | ---- 42 | 43 | Como se ve, este comando primero solicita confirmación de dónde van a a guardarse 44 | las claves ('.ssh/id_rsa'), y luego solicita, dos veces, una contraseña 45 | (passphrase), contraseña que puedes dejar en blanco si no deseas tener que 46 | teclearla cada vez que uses la clave. 47 | 48 | Tras generarla, cada usuario ha de encargarse de enviar su clave pública 49 | a quienquiera que administre el servidor Git (en el caso de que éste 50 | esté configurado con SSH y así lo requiera). Esto se puede realizar 51 | simplemente copiando los contenidos del archivo terminado en '.pub' y enviándoselos 52 | por correo electrónico. La clave pública será una serie de números, letras y 53 | signos, algo así como esto: 54 | 55 | [source,console] 56 | ---- 57 | $ cat ~/.ssh/id_rsa.pub 58 | ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU 59 | GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3 60 | Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA 61 | t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En 62 | mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx 63 | NrRFi9wrf+M7Q== schacon@mylaptop.local 64 | ---- 65 | 66 | Para más detalles sobre cómo crear unas claves SSH en variados sistemas operativos, 67 | consultar la correspondiente guía en GitHub: https://help.github.com/articles/generating-ssh-keys[]. 68 | -------------------------------------------------------------------------------- /book/04-git-server/sections/git-daemon.asc: -------------------------------------------------------------------------------- 1 | === El demonio Git 2 | 3 | (((serving repositories, git protocol))) 4 | Ahora vamos a configurar un ``demonio'' sirviendo repositorios mediante el 5 | protocolo ``Git''. Es la forma más común para dar acceso anónimo, 6 | pero rápido, a los repositorios. Recuerda: puesto que es un acceso 7 | no autentificado, todo lo que sirvas mediante este protocolo será 8 | público en la red. 9 | 10 | Si activas el protocolo en un servidor más allá del cortafuegos, lo debes 11 | usar únicamente en proyectos que deban ser visibles a todo el mundo. Si 12 | el servidor está detrás de un cortafuegos, puedes usarlo en proyectos a los 13 | que un gran número de personas o de computadores (por ejemplo, servidores de 14 | integración continua o de compilación) tengan acceso de sólo lectura y no 15 | necesiten establecer una clave SSH para cada uno de ellos. 16 | 17 | El protocolo Git es relativamente fácil de configurar. Básicamente, necesitas 18 | ejecutar el comando con la variante ``demonio'' (daemon):(((git commands, daemon))) 19 | 20 | [source,console] 21 | ---- 22 | git daemon --reuseaddr --base-path=/opt/git/ /opt/git/ 23 | ---- 24 | 25 | El parámetro `--reuseaddr` permite al servidor reiniciarse sin esperar 26 | a que se liberen viejas conexiones; el parámetro `--base-path` permite a los 27 | usuarios clonar proyectos sin necesidad de indicar su camino completo; y el 28 | camino indicado al final del comando mostrará al ``demonio'' Git, dónde buscar los 29 | repositorios a exportar. Si tienes un cortafuegos activo, necesitarás abrir 30 | el puerto 9418 para la máquina donde estás configurando el ``demonio'' Git. 31 | 32 | Este proceso se puede demonizar de diferentes maneras, dependiendo del sistema 33 | operativo con el que trabajas. En una máquina Ubuntu, puedes usar un script 34 | de arranque. Poniendo en el siguiente archivo: 35 | 36 | [source,console] 37 | ---- 38 | /etc/event.d/local-git-daemon 39 | ---- 40 | 41 | un script tal como: 42 | 43 | [source,console] 44 | ---- 45 | start on startup 46 | stop on shutdown 47 | exec /usr/bin/git daemon \ 48 | --user=git --group=git \ 49 | --reuseaddr \ 50 | --base-path=/opt/git/ \ 51 | /opt/git/ 52 | respawn 53 | ---- 54 | 55 | Por razones de seguridad, es recomendable lanzar este ``demonio'' con un usuario 56 | que tenga únicamente permisos de lectura en los repositorios (Lo puedes hacer 57 | creando un nuevo usuario 'git-ro' y lanzando el ``demonio'' con él). Para 58 | simplificar, en estos ejemplos vamos a lanzar el ``demonio'' Git bajo el mismo 59 | usuario `git` que se usa con `git-shell`. 60 | 61 | Tras reiniciar tu máquina, el ``demonio'' Git arrancará automáticamente y se 62 | reiniciará cuando se caiga. Para arrancarlo sin necesidad de reiniciar la 63 | máquina, puedes utilizar el comando: 64 | 65 | [source,console] 66 | ---- 67 | initctl start local-git-daemon 68 | ---- 69 | 70 | En otros sistemas operativos, puedes utilizar `xinetd`, un script en el 71 | sistema `sysvinit`, o alguna otra manera (siempre y cuando demonizes el comando 72 | y puedas monitorizarlo). 73 | 74 | A continuación, has de indicar a Git a cuales de tus repositorios ha de permitir 75 | acceso sin autentificar. Lo puedes hacer creando en cada repositorio un archivo 76 | llamado `git-daemon-export-ok`. 77 | 78 | [source,console] 79 | ---- 80 | $ cd /path/to/project.git 81 | $ touch git-daemon-export-ok 82 | ---- 83 | 84 | La presencia de este archivo dice a Git que este proyecto se puede servir sin problema 85 | sin necesidad de autentificación de usuarios. 86 | -------------------------------------------------------------------------------- /book/04-git-server/sections/gitweb.asc: -------------------------------------------------------------------------------- 1 | === GitWeb 2 | 3 | (((serving repositories, GitWeb)))(((GitWeb))) 4 | Ahora que ya tienes acceso básico de lectura/escritura y de solo-lectura a tu 5 | proyecto, puedes querer instalar un visualizador web. Git trae un script CGI, 6 | denominado GitWeb, que es el que usaremos para este propósito. 7 | 8 | [[rgitweb]] 9 | .The GitWeb web-based user interface. 10 | image::images/git-instaweb.png[El interface web Gitweb.] 11 | 12 | Si quieres comprobar cómo podría quedar GitWeb con tu proyecto, Git dispone 13 | de un comando para activar una instancia temporal, si en tu sistema tienes un 14 | servidor web ligero, como por ejemplo `lighttpd` o `webrick`. En las máquinas 15 | Linux, `lighttpd` suele estar habitualmente instalado, por lo que tan solo 16 | has de activarlo lanzando el comando `git instaweb`, estando en la carpeta 17 | de tu proyecto. Si tienes una máquina Mac, Leopard trae preinstalado Ruby, 18 | por lo que `webrick` puede ser tu mejor apuesta. Para instalar `instaweb` 19 | disponiendo de un controlador no-lighttpd, puedes lanzarlo con la opción 20 | `--httpd`.(((git commands, instaweb))) 21 | 22 | [source,console] 23 | ---- 24 | $ git instaweb --httpd=webrick 25 | [2009-02-21 10:02:21] INFO WEBrick 1.3.1 26 | [2009-02-21 10:02:21] INFO ruby 1.8.6 (2008-03-03) [universal-darwin9.0] 27 | ---- 28 | 29 | Esto arranca un servidor HTTPD en el puerto 1234, y luego arranca un 30 | navegador que abre esa página. Es realmente sencillo. Cuando ya hayas terminado 31 | y quieras apagar el servidor, puedes lanzar el mismo comando con la opción `--stop`: 32 | 33 | [source,console] 34 | ---- 35 | $ git instaweb --httpd=webrick --stop 36 | ---- 37 | 38 | Si quieres disponer permanentemente de un interfaz web para tu equipo o para un 39 | proyecto de código abierto que albergues, necesitarás ajustar el script CGI para ser 40 | servido por tu servidor web habitual. Algunas distribuciones Linux suelen incluir 41 | el paquete `gitweb`, y podrás instalarlo a través de las utilidades `apt` o `yum`; 42 | merece la pena probarlo en primer lugar. Enseguida vamos a revisar el proceso de 43 | instalar GitWeb manualmente. Primero, necesitas el código fuente de Git, que 44 | viene con GitWeb, para generar un script CGI personalizado: 45 | 46 | [source,console] 47 | ---- 48 | $ git clone git://git.kernel.org/pub/scm/git/git.git 49 | $ cd git/ 50 | $ make GITWEB_PROJECTROOT="/opt/git" prefix=/usr gitweb 51 | SUBDIR gitweb 52 | SUBDIR ../ 53 | make[2]: `GIT-VERSION-FILE' is up to date. 54 | GEN gitweb.cgi 55 | GEN static/gitweb.js 56 | $ sudo cp -Rf gitweb /var/www/ 57 | ---- 58 | 59 | Fíjate que es necesario indicar la ubicación donde se encuentran los repositorios 60 | Git, utilizando la variable 'GITWEB_PROJECTROOT'. A continuación, tienes que 61 | preparar Apache para que utilice dicho script. Para ello, puedes añadir un 62 | VirtualHost: 63 | 64 | [source,console] 65 | ---- 66 | 67 | ServerName gitserver 68 | DocumentRoot /var/www/gitweb 69 | 70 | Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch 71 | AllowOverride All 72 | order allow,deny 73 | Allow from all 74 | AddHandler cgi-script cgi 75 | DirectoryIndex gitweb.cgi 76 | 77 | 78 | ---- 79 | 80 | Recordar una vez más que GitWeb puede servirse desde cualquier servidor web con 81 | capacidades CGI o Perl. Por lo que si prefieres utilizar algún otro, no debería 82 | ser difícil configurarlo. En este momento, deberías poder visitar `http://gitserver/` 83 | para ver tus repositorios online. 84 | -------------------------------------------------------------------------------- /book/04-git-server/sections/hosted.asc: -------------------------------------------------------------------------------- 1 | === Git en un alojamiento externo 2 | 3 | Si no quieres realizar todo el trabajo que implica poner en marcha tu propio 4 | servidor Git, tienes varias opciones para alojar tus proyectos Git en un 5 | sitio externo dedicado. Esto tiene varias ventajas: normalmente en los alojamientos 6 | externos es fácil configurar y comenzar proyectos sin preocuparse del 7 | mantenimiento del servidor o de su monitorización. 8 | Aunque pongas en marcha tu propio servidor internamente, probablemente quieras usar 9 | un sitio público para tu código abierto. Será más fácil que la comunidad de software 10 | libre encuentre tu proyecto y colabore. 11 | 12 | Actualmente hay bastantes opciones de alojamiento para elegir, cada una con sus 13 | ventajas e inconvenientes. Para ver una lista actualizada, mira la página acerca 14 | de alojamiento Git en el wiki principal de Git en https://git.wiki.kernel.org/index.php/GitHosting[] 15 | 16 | Nos ocuparemos en detalle de Github en <>, al ser el sitio de alojamiento 17 | de proyectos más grande, y donde probablemente encuentres otros proyectos en los que 18 | quieras participar. Pero en cualquier caso hay docenas de sitios para elegir sin 19 | necesidad de configurar tu propio servidor Git. 20 | -------------------------------------------------------------------------------- /book/04-git-server/sections/smart-http.asc: -------------------------------------------------------------------------------- 1 | === HTTP Inteligente 2 | 3 | (((serving repositories, HTTP))) 4 | Ahora ya tenemos acceso autentificado mediante SSH y anónimo mediante 5 | `git://`, pero hay también otro protocolo que permite tener ambos 6 | accesos a la vez. 7 | Configurar HTTP inteligente consiste, básicamente, en activar en el 8 | servidor web un script CGI que viene con Git, llamado `git-http-backend`.(((git commands, "http-backend"))) 9 | Este CGI leerá la ruta y las cabeceras enviadas por los comandos 10 | `git fetch` o `git push` a una URL de HTTP y determinará si el cliente 11 | puede comunicar con HTTP (lo que será cierto para cualquier cliente a partir 12 | de la versión 1.6.6). 13 | Si el CGI comprueba que el cliente es inteligente, se comunicará inteligentemente 14 | con él; en otro caso pasará a usar el comportamiento tonto (es decir, 15 | es compatible con versiones más antiguas del cliente). 16 | 17 | Revisemos una configuración básica. Pondremos Apache como servidor de CGI. Si no 18 | tienes Apache configurado, lo puedes instalar en un Linux con un comando similar 19 | a este:(((Apache))) 20 | 21 | [source,console] 22 | ---- 23 | $ sudo apt-get install apache2 apache2-utils 24 | $ a2enmod cgi alias env 25 | ---- 26 | 27 | Esto además activa los módulos `mod_cgi`, `mod_alias`, y `mod_env`, que van a hacer 28 | falta para que todo esto funcione. 29 | 30 | A continuación tenemos que añadir algunas cosas a la configuración de Apache para 31 | que se utilice `git-http-backend` para cualquier cosa que haya bajo la 32 | carpeta virtual `/git`. 33 | 34 | [source,console] 35 | ---- 36 | SetEnv GIT_PROJECT_ROOT /opt/git 37 | SetEnv GIT_HTTP_EXPORT_ALL 38 | ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ 39 | ---- 40 | 41 | Si dejas sin definir la variable de entorno `GIT_HTTP_EXPORT_ALL`, Git solo servirá 42 | a los clientes anónimos aquellos repositorios que contengan el archivo `daemon-export-ok`, 43 | igual que hace el ``demonio'' Git. 44 | 45 | Ahora tienes que decirle a Apache que acepte peticiones en esta ruta con algo similar 46 | a esto: 47 | 48 | [source,console] 49 | ---- 50 | 51 | Options ExecCGI Indexes 52 | Order allow,deny 53 | Allow from all 54 | Require all granted 55 | 56 | ---- 57 | 58 | Finalmente, si quieres que los clientes autentificados tengan acceso de escritura, 59 | tendrás que crear un bloque Auth similar a este: 60 | 61 | [source,console] 62 | ---- 63 | 64 | AuthType Basic 65 | AuthName "Git Access" 66 | AuthUserFile /opt/git/.htpasswd 67 | Require valid-user 68 | 69 | ---- 70 | 71 | Esto requiere que hagas un archivo `.htaccess` que contenga las contraseñas 72 | cifradas de todos los usuarios válidos. Por ejemplo, para añadir el usuario 73 | ``schacon'' a este archivo: 74 | 75 | [source,console] 76 | ---- 77 | $ htdigest -c /opt/git/.htpasswd "Git Access" schacon 78 | ---- 79 | 80 | Hay un montón de maneras de dar acceso autentificado a los usuarios con Apache, 81 | y tienes que elegir una. Esta es la forma más simple de hacerlo. Probablemente 82 | también te interese hacerlo todo con SSL para que todos los datos vayan 83 | cifrados. 84 | 85 | No queremos profundizar en los detalles de la configuración de Apache, ya que 86 | puedes tener diferentes necesidades de autentificación o querer utilizar un 87 | servidor diferente. La idea es que Git trae un CGI llamado `git-http-backend` 88 | que cuando es llamado, hace toda la negociación y envío o recepción de datos 89 | a través de HTTP. Por sí mismo no implementa autentificación de ningún tipo, 90 | pero puede controlarse desde el servidor web que lo utiliza. Puedes configurar 91 | esto en casi cualquier servidor web que pueda trabajar con CGI, el que más 92 | te guste. 93 | 94 | [NOTE] 95 | ==== 96 | Para más información sobre cómo configurar Apache, mira la documentación: http://httpd.apache.org/docs/current/howto/auth.html[] 97 | ==== 98 | -------------------------------------------------------------------------------- /book/06-github/callouts/1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/1.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/1.png -------------------------------------------------------------------------------- /book/06-github/callouts/10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/10.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/10.png -------------------------------------------------------------------------------- /book/06-github/callouts/2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/2.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/2.png -------------------------------------------------------------------------------- /book/06-github/callouts/3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/3.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/3.png -------------------------------------------------------------------------------- /book/06-github/callouts/4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/4.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/4.png -------------------------------------------------------------------------------- /book/06-github/callouts/5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/5.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/5.png -------------------------------------------------------------------------------- /book/06-github/callouts/6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/6.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/6.png -------------------------------------------------------------------------------- /book/06-github/callouts/7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/7.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/7.png -------------------------------------------------------------------------------- /book/06-github/callouts/8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/8.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/8.png -------------------------------------------------------------------------------- /book/06-github/callouts/9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/9.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/06-github/callouts/9.png -------------------------------------------------------------------------------- /book/06-github/sections/4-managing-organization.asc: -------------------------------------------------------------------------------- 1 | [[r_github_orgs]] 2 | === Gestión de una organización 3 | 4 | (((GitHub, organizations))) 5 | Además de las cuentas de usuario, GitHub tiene Organizaciones. 6 | Al igual que las cuentas de usuario, las cuentas de organización tienen un 7 | espacio donde se guardarán los proyectos, pero en otras cosas son 8 | diferentes. Estas cuentas representan un grupo de gente que comparte la 9 | propiedad de los proyectos, y además se pueden gestionar estos miembros 10 | en subgrupos. Normalmente, estas cuentas se usan en equipos de desarrollo 11 | de código abierto (por ejemplo, un grupo para ``perl'' o para ``rails) 12 | o empresas (como sería ``google'' o ``twitter''). 13 | 14 | ==== Conceptos básicos 15 | 16 | Crear una organización es muy fácil: simplemente pulsa en el icono ``+'' 17 | en el lado superior derecho y selecciona ``New organization''. 18 | 19 | .El menú ``New organization''. 20 | image::images/neworg.png[El menú ``New organization''.] 21 | 22 | En primer lugar tienes que decidir el nombre de la organización y 23 | una dirección de correo que será el punto principal de contacto del 24 | grupo. A continuación puedes invitar a otros usuarios a que se unan 25 | como co-propietarios de la cuenta. 26 | 27 | Sigue estos pasos y serás propietario de un grupo nuevo. A diferencia 28 | las cuentas personales, las organizaciones son gratuitas siempre que 29 | los repositorios sean de código abierto (y por tanto, públicos). 30 | 31 | Como propietario de la organización, cuando bifurcas un repositorio 32 | podrás hacerlo a tu elección en el espacio de la organización. Cuando 33 | creas nuevos repositorios puedes también elegir el espacio donde se 34 | crearán: la organización o tu cuenta personal. Automáticamente, además, 35 | quedarás como vigilante (watcher) de los repositorios que crees en 36 | la organización. 37 | 38 | Al igual que en <>, puedes subir un icono para 39 | personalizar un poco la organización, que aparecerá entre otros sitios 40 | en la página principal de la misma, que lista todos los repositorios 41 | y puede ser vista por cualquiera. 42 | 43 | Vamos a ver algunas cosas que son diferentes cuando se hacen con una 44 | cuenta de organización. 45 | 46 | ==== Equipos 47 | 48 | Las organizaciones se asocian con individuos mediante los equipos, que 49 | son simplemente agrupaciones de cuentas de usuario y repositorios 50 | dentro de la organización, y qué accesos tienen esas personas sobre cada 51 | repositorio. 52 | 53 | Por ejemplo, si tu empresa tiene tres repositorios: `frontend`, `backend` 54 | y `deployscripts'; y quieres que los desarrolladores de web tengan 55 | acceso a `frontend` y tal vez a `backend`, y las personas de operaciones 56 | tengan acceso a `backend` y `deployscripts`. Los equipos hacen fácil esta 57 | organización, sin tener que gestionar los colaboradores en cada 58 | repositorio individual. 59 | 60 | La página de la organización te mostrará un panel simple con todos los 61 | repositorios, usuarios y equipos que se encuentran en ella. 62 | 63 | [[r_org_page]] 64 | .Página de la organización. 65 | image::images/orgs-01-page.png[] 66 | 67 | Para gestionar tus equipos, puedes pulsar en la barra ``Teams'' 68 | del lado derecho en la página <>. Esto te llevará a 69 | una página en la que puedes añadir los miembros del equipo, 70 | añadir repositorios al equipo o gestionar los ajustes y niveles 71 | de acceso del mismo. Cada equipo puede tener acceso de solo lectura, 72 | de escritura o administrativo al repositorio. Puedes cambiar 73 | el nivel pulsando en el botón ``Settings'' en <>. 74 | 75 | [[r_team_page]] 76 | .Página de equipos. 77 | image::images/orgs-02-teams.png[] 78 | 79 | Cuando invitas a alguien a un equipo, recibirá un correo con una 80 | invitación. 81 | 82 | Además, hay menciones de equipo (por ejemplo, 83 | `@acmecorp/frontend`) que servirán para que todos los miembros de 84 | ese equipo sean suscritos al hilo. Esto resulta útil si quieres 85 | involucrar a un equipo en algo al no tener claro a quién en concreto 86 | preguntar. 87 | 88 | Un usuario puede pertenecer a cuantos equipos desee, por lo que no 89 | uses equipos solamente para temas de control de acceso a repositorios, 90 | sino que puedes usarlos para formar equipos especializados y dispares 91 | como `ux`, `css`, `refactoring`, `legal`, etc. 92 | 93 | ==== Auditorías 94 | 95 | Las organizaciones pueden también dar a los propietarios acceso a toda 96 | la información sobre la misma. Puedes incluso ir a la opción 'Audit Log' 97 | y ver los eventos que han sucedido, quién hizo qué y dónde. 98 | 99 | [[r_audit_log]] 100 | .Log de auditoría. 101 | image::images/orgs-03-audit.png[] 102 | 103 | También puedes filtrar por tipo de evento, por lugares o por personas 104 | concretas. 105 | -------------------------------------------------------------------------------- /book/07-git-tools/callouts/1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/1.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/1.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/10.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/10.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/2.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/2.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/3.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/3.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/4.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/4.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/5.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/5.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/6.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/6.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/7.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/7.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/8.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/8.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/9.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/07-git-tools/callouts/9.png -------------------------------------------------------------------------------- /book/07-git-tools/git-credential-read-only: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require 'optparse' 4 | 5 | path = File.expand_path '~/.git-credentials' # <1> 6 | OptionParser.new do |opts| 7 | opts.banner = 'USAGE: git-credential-read-only [options] ' 8 | opts.on('-f', '--file PATH', 'Specify path for backing store') do |argpath| 9 | path = File.expand_path argpath 10 | end 11 | end.parse! 12 | 13 | exit(0) unless ARGV[0].downcase == 'get' # <2> 14 | exit(0) unless File.exists? path 15 | 16 | known = {} # <3> 17 | while line = STDIN.gets 18 | break if line.strip == '' 19 | k,v = line.strip.split '=', 2 20 | known[k] = v 21 | end 22 | 23 | File.readlines(path).each do |fileline| # <4> 24 | prot,user,pass,host = fileline.scan(/^(.*?):\/\/(.*?):(.*?)@(.*)$/).first 25 | if prot == known['protocol'] and host == known['host'] then 26 | puts "protocol=#{prot}" 27 | puts "host=#{host}" 28 | puts "username=#{user}" 29 | puts "password=#{pass}" 30 | exit(0) 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /book/09-git-and-other-scms/sections/import-p4.asc: -------------------------------------------------------------------------------- 1 | [[r_perforce_import]] 2 | ==== Perforce 3 | 4 | (((Perforce)))(((Importing, from Perforce))) 5 | El siguiente sistema que verá importando es Perforce 6 | Como mencionamos anteriormente, hay dos formas de que Git y Perforce hablen entre sí: git-p4 y Perforce Git Fusion. 7 | 8 | ===== Perforce Git Fusion 9 | 10 | Git Fusion hace que este proceso sea bastante sencillo. 11 | Simplemente elija la configuración de su proyecto, las asignaciones de usuario y las ramas con un archivo de configuración (como se explica en << _ p4_git_fusion >>) y clone el repositorio. 12 | Git Fusion te deja con lo que parece ser un repositorio nativo de Git, que luego está listo para enviar a un host nativo de Git si lo deseas. 13 | Incluso puede usar Perforce como su host Git si gusta. 14 | 15 | 16 | [[r_git_p4]] 17 | ===== Git-p4 18 | 19 | Git-p4 también puede actuar como una herramienta de importación. 20 | Como ejemplo, importaremos el proyecto Jam desde Perforce Public Depot. 21 | Para configurar su cliente, debe exportar la variable de entorno P4PORT para que se dirija al depósito de Perforce: 22 | 23 | 24 | [source,console] 25 | ---- 26 | $ export P4PORT=public.perforce.com:1666 27 | ---- 28 | 29 | [NOTE] 30 | ==== 31 | Para poder seguir, necesitarás un depósito de Perforce para conectarte. 32 | Utilizaremos el depósito público en public.perforce.com para ver nuestros ejemplos, pero puede usar cualquier depósito al que tenga acceso. 33 | ==== 34 | 35 | (((git commands, p4))) 36 | Ejecute el comando `git p4 clone` para importar el proyecto Jam desde el servidor Perforce, proporcionando la ruta de depósito y proyecto y la ruta en la que desea importar el proyecto: 37 | 38 | [source,console] 39 | ---- 40 | $ git-p4 clone //guest/perforce_software/jam@all p4import 41 | Importación desde //guest/perforce_software/jam@all into p4import 42 | Inicializó el repositorio vacío de Git en /private/tmp/p4import/.git/ 43 | Destino de importación: refs/remotes/p4/master 44 | Importando revisión 9957 (100%) 45 | ---- 46 | 47 | Este proyecto en particular tiene solo una rama, pero esta configurado con vistas de ramificaciones (o simplemente un conjunto de directorios), y puede usar el indicador `--detect-branches` en` git p4 clone` para importar todas las ramas del proyecto. Ver << _ git_p4_branches >> para un poco más de detalle sobre esto. 48 | 49 | En este punto, casi has terminado. 50 | Si va al directorio `p4import` y ejecuta` git log`, puede ver su trabajo importado: 51 | 52 | [source,console] 53 | ---- 54 | $ git log -2 55 | commit e5da1c909e5db3036475419f6379f2c73710c4e6 56 | Autor: giles 57 | Información: Wed Feb 8 03:13:27 2012 -0800 58 | 59 | Corrección a línea 355; change to . 60 | 61 | [git-p4: depot-paths = "//public/jam/src/": change = 8068] 62 | 63 | commit aa21359a0a135dda85c50a7f7cf249e4f7b8fd98 64 | Autor: kwirth 65 | Información: Tue Jul 7 01:35:51 2009 -0800 66 | 67 | Corrige el error de ortografía en la página Jam doc (cummulative -> cumulative). 68 | 69 | [git-p4: depot-paths = "//public/jam/src/": change = 7304] 70 | ---- 71 | 72 | Puede ver que `git-p4` ha dejado un identificador en cada mensaje de confirmación. 73 | Está bien mantener ese identificador allí, en caso de que necesite hacer referencia al número de cambio Perforce más adelante. 74 | Sin embargo, si desea eliminar el identificador, ahora es el momento de hacerlo, antes de comenzar a trabajar en el nuevo repositorio. 75 | (((comandos git, filter-branch))) 76 | Puede usar `git filter-branch` para eliminar las cadenas de identificador en masa: 77 | 78 | 79 | [source,console] 80 | ---- 81 | $ git filter-branch --msg-filter 'sed -e "/^\[git-p4:/d"' 82 | Rewrite e5da1c909e5db3036475419f6379f2c73710c4e6 (125/125) 83 | Ref 'refs/heads/master' was rewritten 84 | ---- 85 | 86 | Si ejecuta `git log`, puede ver que todas las sumas de comprobación SHA-1 para las confirmaciones han cambiado, pero las cadenas` git-p4` ya no se encuentran en los mensajes de confirmación: 87 | 88 | [source,console] 89 | ---- 90 | $ git log -2 91 | commit b17341801ed838d97f7800a54a6f9b95750839b7 92 | Autor: giles 93 | Información: Wed Feb 8 03:13:27 2012 -0800 94 | 95 | Corrección a linea 355; change to . 96 | 97 | commit 3e68c2e26cd89cb983eb52c024ecdfba1d6b3fff 98 | Autor: kwirth 99 | Información: Tue Jul 7 01:35:51 2009 -0800 100 | 101 | Corrige el error de ortografía en la página Jam doc (cummulative -> cumulative). 102 | ---- 103 | 104 | Su importación está lista para subir a su nuevo servidor Git. 105 | -------------------------------------------------------------------------------- /book/09-git-and-other-scms/sections/import-svn.asc: -------------------------------------------------------------------------------- 1 | ==== Subversión 2 | 3 | (((Subversion))) 4 | (((Importing, from Subversion))) 5 | Si lee la sección anterior sobre el uso de git svn, usted puede usar fácilmente esas instrucciones para clonar un repositorio; luego, deje de usar el servidor de Subversión, presione en un nuevo servidor de Git y comience a usarlo. Si desea ver el historial, puede lograrlo tan rápido como pueda extraer los datos del servidor de Subversión (lo que puede llevar un tiempo). 6 | 7 | Sin embargo, la importación no es perfecta; y porque tomará tanto tiempo, también puedes hacerlo bien. El primer problema es la información del autor. En Subversión, cada persona comprometida tiene un usuario en el sistema que está registrado en la información de confirmación. Los ejemplos en la sección anterior muestran schacon en algunos lugares, como la salida de culpa y el registro de git svn. Si desea asignar esto a mejores datos de autor de Git, necesita una asignación de los usuarios de Subversión a los autores de Git. Cree un archivo llamado users.txt que tenga esta asignación en un formato como este: 8 | 9 | [source] 10 | ---- 11 | schacon = Scott Chacon 12 | selse = Someo Nelse 13 | ---- 14 | 15 | Para obtener una lista de los nombres de autor que utilizan SVN, puede ejecutar esto: 16 | 17 | [source,console] 18 | ---- 19 | $ svn log --xml | grep author | sort -u | \ 20 | perl -pe 's/.*>(.*?)<.*/$1 = /' 21 | ---- 22 | 23 | Eso genera la salida del registro en formato XML, luego mantiene solo las líneas con la información del autor, descarta los duplicados y elimina las etiquetas XML. (Obviamente, esto solo funciona en una máquina con grep, sort y perl instalados). Luego, redirija esa salida a su archivo users.txt para que pueda agregar los datos de usuario equivalentes de Git al lado de cada entrada. 24 | 25 | Puede proporcionar este archivo a git svn para ayudarlo a mapear los datos del autor con mayor precisión. También puede indicarle a git svn que no incluya los metadatos que normalmente importa Subversión, pasando --no-metadata al comando clone o init. Esto hace que su comando de importación se vea así: 26 | 27 | [source,console] 28 | ---- 29 | $ git svn clone http://my-project.googlecode.com/svn/ \ 30 | --authors-file=users.txt --no-metadata -s my_project 31 | ---- 32 | 33 | Ahora debería tener una importación de Subversión más agradable en su directorio my_project. En lugar de commits que se ven así 34 | 35 | [source] 36 | ---- 37 | commit 37efa680e8473b615de980fa935944215428a35a 38 | Author: schacon 39 | Date: Sun May 3 00:12:22 2009 +0000 40 | 41 | fixed install - go to trunk 42 | 43 | git-svn-id: https://my-project.googlecode.com/svn/trunk@94 4c93b258-373f-11de- 44 | be05-5f7a86268029 45 | ---- 46 | 47 | se ven así: 48 | 49 | [source] 50 | ---- 51 | commit 03a8785f44c8ea5cdb0e8834b7c8e6c469be2ff2 52 | Author: Scott Chacon 53 | Date: Sun May 3 00:12:22 2009 +0000 54 | 55 | fixed install - go to trunk 56 | ---- 57 | 58 | No solo el campo Autor se ve mucho mejor, sino que el git-svn-id ya no está allí. 59 | 60 | También debería hacer un poco de limpieza posterior a la importación. Por un lado, debe limpiar las referencias raras que git svn configuró. Primero moverá las etiquetas para que sean etiquetas reales en lugar de ramas remotas extrañas, y luego moverá el resto de las ramas para que sean locales. 61 | 62 | Para mover las etiquetas para que sean etiquetas Git correctas, ejecuta 63 | 64 | [source,console] 65 | ---- 66 | $ cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/ 67 | $ rm -Rf .git/refs/remotes/origin/tags 68 | ---- 69 | 70 | Esto toma las referencias que eran ramas remotas que comenzaron con controles remotos / origen / etiquetas / y las convierte en etiquetas reales (ligeras). 71 | 72 | A continuación, mueva el resto de las referencias en refs / remotes para que sean ramas locales: 73 | 74 | [source,console] 75 | ---- 76 | $ cp -Rf .git/refs/remotes/* .git/refs/heads/ 77 | $ rm -Rf .git/refs/remotes 78 | ---- 79 | 80 | Ahora todas las ramas antiguas son ramas reales de Git y todas las etiquetas antiguas son etiquetas Git reales. Lo último que debe hacer es agregar su nuevo servidor Git como un control remoto y pulsarlo. Aquí hay un ejemplo de cómo agregar su servidor como un control remoto: 81 | 82 | [source,console] 83 | ---- 84 | $ git remote add origin git@my-git-server:myrepository.git 85 | ---- 86 | 87 | Como quiere que todas sus ramas y etiquetas suban, ahora puede ejecutar esto: 88 | 89 | [source,console] 90 | ---- 91 | $ git push origin --all 92 | ---- 93 | 94 | Todas sus ramas y etiquetas deben estar en su nuevo servidor Git en una importación agradable y limpia.. 95 | -------------------------------------------------------------------------------- /book/09-git-and-other-scms/sections/import-tfs.asc: -------------------------------------------------------------------------------- 1 | [[r_git_tfs]] 2 | ==== TFS 3 | 4 | (((TFS)))(((Importing, from TFS))) 5 | Si su equipo está convirtiendo su control de código fuente de TFVC a Git, querrá la conversión de mayor fidelidad que pueda obtener. 6 | Esto significa que mientras cubrimos git-tfs y git-tf para la sección de interoperabilidad, sólo cubriremos git-tfs para esta parte, porque git-tfs soporta ramificaciones, y esto es prohibitivamente difícil usando git-tf. 7 | 8 | [NOTE] 9 | ==== 10 | Se trata de una conversión unidireccional. 11 | El repositorio Git resultante no podrá conectarse con el proyecto TFVC original. 12 | ==== 13 | 14 | The first thing to do is map usernames. 15 | TFVC is fairly liberal with what goes into the author field for changesets, but Git wants a human-readable name and email address. 16 | You can get this information from the `tf` command-line client, like so: 17 | 18 | [source,powershell] 19 | ---- 20 | PS> tf history $/myproject -recursive > AUTHORS_TMP 21 | ---- 22 | 23 | Esto agarra todos los conjuntos de cambios de la historia del proyecto y lo coloca en el archivo AUTHORS_TMP que procesaremos para extraer los datos de la columna 'Usuario' (el segundo). 24 | Abre el archivo y busca en qué caracteres comienzan y terminan la columna y reemplazan, en la línea de comandos siguiente, los parámetros `11-20` del comando` cut` con los que se encuentran: 25 | 26 | [source,powershell] 27 | ---- 28 | PS> cat AUTHORS_TMP | cut -b 11-20 | tail -n+3 | uniq | sort > AUTHORS 29 | ---- 30 | 31 | El comando `cut` mantiene sólo los caracteres entre 11 y 20 de cada línea. 32 | El comando `tail` omite las dos primeras líneas, que son cabeceras de campo y subrayados ASCII-art. 33 | El resultado de todo esto se canaliza a `uniq` para eliminar duplicados y se guarda en un archivo llamado` AUTHORS`. 34 | El siguiente paso es manual; Para que git-tfs haga un uso efectivo de este archivo, cada línea debe estar en este formato: 35 | 36 | [source,text] 37 | ---- 38 | DOMAIN\username = User Name 39 | ---- 40 | 41 | La parte de la izquierda es el campo ``Usuario'' de TFVC, y la porción en el lado derecho del signo de iguales es el nombre de usuario que se utilizará para los compromisos de Git. 42 | 43 | Una vez que tengas este archivo, lo siguiente que debes hacer es hacer un clon completo del proyecto TFVC en el que estás interesado: 44 | 45 | [source,powershell] 46 | ---- 47 | PS> git tfs clone --with-branches --authors=AUTHORS https://username.visualstudio.com/DefaultCollection $/project/Trunk project_git 48 | ---- 49 | 50 | A continuación, deseará limpiar las secciones `git-tfs-id` desde la parte inferior de los mensajes de confirmación. 51 | El siguiente comando hará lo siguiente: 52 | 53 | [source,powershell] 54 | ---- 55 | PS> git filter-branch -f --msg-filter 'sed "s/^git-tfs-id:.*$//g"' -- --all 56 | ---- 57 | 58 | Que utiliza el comando `sed` desde el entorno Git-bash para reemplazar cualquier línea que empiece por ``git-tfs-id:'' con vacío, que Git luego ignorará. 59 | 60 | Una vez que todo está hecho, estás listo para añadir un nuevo mando a distancia, empujar todas sus ramas hacia arriba, y hacer que su equipo comience a trabajar desde Git. 61 | -------------------------------------------------------------------------------- /book/10-git-internals/sections/plumbing-porcelain.asc: -------------------------------------------------------------------------------- 1 | [[r_plumbing_porcelain]] 2 | === Fontanería y porcelana 3 | 4 | Este libro habla acerca de como utilizar Git con más o menos 30 verbos, tales como `checkout`, `branch`, `remote`, etc. 5 | Pero, debido al origen de Git como una caja de herramientas para un VCS en lugar de como un completo y amigable sistema VCS, existen unos cuantos verbos para realizar tareas de bajo nivel y que se diseñaron para poder ser utilizados de forma encadenada al estilo UNIX o para ser utilizados en scripts. 6 | Estos comandos son conocidos como los "comandos de fontanería", mientras que los comandos más amigables son conocidos como los "comandos de porcelana". 7 | 8 | Los primeros nueve capítulos de este libro se encargan casi exclusivamente de los comandos de porcelana. 9 | Pero en este capítulo trataremos sobre todo con los comandos de fontanería; comandos que te darán acceso a los entresijos internos de Git y que te ayudarán a comprender cómo y por qué hace Git lo que hace como lo hace. 10 | Muchos de estos comando no están pensados para ser utilizados manualmente desde la línea de comandos; sino más bien para ser utilizados como bloques de construcción para nuevas herramientas y scripts de usuario personalizados. 11 | 12 | Cuando lanzas `git init` sobre una carpeta nueva o sobre una ya existente, Git crea la carpeta auxiliar `.git`; la carpeta donde se ubica prácticamente todo lo almacenado y manipulado por Git. 13 | Si deseas hacer una copia de seguridad de tu repositorio, con tan solo copiar esta carpeta a cualquier otro lugar ya tienes tu copia completa. 14 | Todo este capítulo se encarga de repasar el contenido en dicha carpeta. 15 | Tiene un aspecto como este: 16 | 17 | [source,console] 18 | ---- 19 | $ ls -F1 20 | HEAD 21 | config* 22 | description 23 | hooks/ 24 | info/ 25 | objects/ 26 | refs/ 27 | ---- 28 | 29 | 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. 30 | El archivo `description` se utiliza solo en el programa GitWeb; por lo que no necesitas preocuparte por él. 31 | 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`. 32 | 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 <>. 33 | 34 | Esto nos deja con cuatro entradas importantes: los archivos `HEAD` e `index` (todavía por ser creado), y las carpetas `objects` y `refs`. 35 | Estos elementos forman el núcleo de Git. 36 | La carpeta `objects` guarda el contenido de tu base de datos, la carpeta `refs` guarda los apuntadores a las confirmaciones de cambios (commits), el archivo `HEAD` apunta a la rama que tengas activa (checked out) en este momento, y el archivo `index` es donde Git almacena la información sobre tu área de preparación (staging área). 37 | Vamos a mirar en detalle cada una de esas secciones, para ver cómo trabaja Git. 38 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/bash.asc: -------------------------------------------------------------------------------- 1 | === Git con Bash 2 | 3 | (((bash)))(((tab completion, bash)))(((shell prompts, bash))) 4 | Si eres usuario de Bash, puedes acceder a una serie de características de la consola o terminal que pueden hacer mucho más llevadera la experiencia con Git. Aunque Git viene con extensiones para varios tipos de terminales, éstas no suelen estar activadas por defecto. 5 | 6 | Lo primero es obtener una copia del archivo `contrib/completion/git-completion.bash` del código fuente de Git. 7 | Haz una copia de este archivo en cualquier lugar, por ejemplo el directorio de inicio, y añádelo al `.bashrc`: 8 | //// 9 | If you're a Bash user, you can tap into some of your shell's features to make your experience with Git a lot friendlier. 10 | Git actually ships with plugins for several shells, but it's not turned on by default. 11 | 12 | First, you need to get a copy of the `contrib/completion/git-completion.bash` file out of the Git source code. 13 | Copy it somewhere handy, like your home directory, and add this to your `.bashrc`: 14 | //// 15 | [source,console] 16 | ----- 17 | . ~/git-completion.bash 18 | ----- 19 | 20 | Una vez hecho esto, cámbiate a un directorio que sea un repositorio git y teclea: 21 | //// 22 | Once that's done, change your directory to a git repository, and type: 23 | //// 24 | 25 | [source,console] 26 | ---- 27 | $ git chec 28 | ---- 29 | 30 | … Bash debería autocompletar con `git checkout`. 31 | Esto funciona con todos los subcomandos de Git, parámetros en línea de comandos y en nombres remotos y referencias, cuando sea apropiado. 32 | 33 | También resulta útil personalizar el prompt para que muestre información sobre el repositorio Git que hay en el directorio actual. 34 | Se puede hacer tan simple o tan complejo como quieras aunque hay una serie de elementos de información que a la mayoría de las personas les resultan útiles, como la rama actual o el estado del directorio de trabajo. 35 | Para añadirlo al prompt, simplemente haz una copia del archivo `contrib/completion/git-prompt.sh` del código fuente de Git al directorio de inicio y añade lo siguiente al `.bashrc`: 36 | 37 | //// 38 | …and Bash will auto-complete to `git checkout`. 39 | This works with all of Git's subcommands, command-line parameters, and remotes and ref names where appropriate. 40 | 41 | It's also useful to customize your prompt to show information about the current directory's Git repository. 42 | This can be as simple or complex as you want, but there are generally a few key pieces of information that most people want, like the current branch, and the status of the working directory. 43 | To add these to your prompt, just copy the `contrib/completion/git-prompt.sh` file from Git's source repository to your home directory, add something like this to your `.bashrc`: 44 | //// 45 | 46 | [source,console] 47 | ----- 48 | . ~/git-prompt.sh 49 | export GIT_PS1_SHOWDIRTYSTATE=1 50 | export PS1='\w$(__git_ps1 " (%s)")\$ ' 51 | ----- 52 | 53 | La `\w` indica que muestre el directorio de trabajo actual, la `\$` que muestre el símbolo `$` como parte del prompt y el `__git_ps1 " (%s)"` llama una función en `git-prompt.sh` con un parámetro de formato. 54 | Así, el prompt del bash tendrá este aspecto cuando estemos en un proyecto gestionado con Git: 55 | //// 56 | The `\w` means print the current working directory, the `\$` prints the `$` part of the prompt, and `__git_ps1 " (%s)"` calls the function provided by `git-prompt.sh` with a formatting argument. 57 | Now your bash prompt will look like this when you're anywhere inside a Git-controlled project: 58 | //// 59 | 60 | .Prompt personalizado en `bash`. 61 | image::images/git-bash.png[Prompt personalizado en `bash`.] 62 | 63 | Ambos scripts tienen una práctica documentación, por lo que, para más información, revisa los contenidos de `git-completion.bash` y `git-prompt.sh`. 64 | //// 65 | Both of these scripts come with helpful documentation; take a look at the contents of `git-completion.bash` and `git-prompt.sh` for more information. 66 | //// 67 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/eclipse.asc: -------------------------------------------------------------------------------- 1 | === Git en Eclipse 2 | 3 | (((Eclipse))) 4 | Eclipse trae de serie una componente denominada Egit que proporciona una interfaz bastante completa de las operaciones con Git. 5 | Para acceder a ella, hay que ir a la perspectiva Git (en el menú Window > Open Perspective > Other…, y entonces seleccionar "Git"). 6 | //// 7 | Eclipse ships with a plugin called Egit, which provides a fairly-complete interface to Git operations. 8 | It's accessed by switching to the Git Perspective (Window > Open Perspective > Other…, and select "Git"). 9 | //// 10 | 11 | .Entorno EGit en Eclipse. 12 | image::images/egit.png[Entorno EGit en Eclipse.] 13 | 14 | EGit tiene una completa documentación, a la que se puede acceder yendo a Help > Help Contents, y seleccionando el nodo "EGit Documentation" en el listado de contenidos. 15 | //// 16 | EGit comes with plenty of great documentation, which you can find by going to Help > Help Contents, and choosing the "EGit Documentation" node from the contents listing. 17 | //// 18 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/powershell.asc: -------------------------------------------------------------------------------- 1 | [[r_git_powershell]] 2 | === Git en Powershell 3 | 4 | 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. 5 | Un paquete llamado Posh-Git(https://github.com/dahlbyk/posh-git[]) proporciona comodidades poderosas para la completación de pestañas, así como un prompt mejorado para ayudarle a mantenerse al tanto sobre el estado de su repositorio. Se ve de esta manera: 6 | 7 | .Powershell con Posh-git. 8 | image::images/posh-git.png[Powershell with Posh-git.] 9 | 10 | Si usted ha instalado Github para Windows, Posh-Git se encuentra incluído. Todo lo que tiene que hacer es añadir estas lineas a su `profile.ps1` (El cual se encuentra usualmente en `C:\Users\\Documents\WindowsPowerShell`): 11 | 12 | [source,powershell] 13 | ----- 14 | . (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") 15 | . $env:github_posh_git\profile.example.ps1 16 | ----- 17 | 18 | Si no es un usuario de Github para Windows, simplemente descargue una versión de Posh-Git desde (https://github.com/dahlbyk/posh-git[]) y descomprimala en el directorio `WindowsPowershell`. 19 | Luego abra un prompt de Powershell como administrador y haga lo siguiente: 20 | 21 | [source,powershell] 22 | ----- 23 | > Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm 24 | > cd ~\Documents\WindowsPowerShell\posh-git 25 | > .\install.ps1 26 | ----- 27 | 28 | Esto añadirá la línea correspondiente a su archivo `profile.ps1` y posh-git estará activo la próxima vez que habra su prompt. 29 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/visualstudio.asc: -------------------------------------------------------------------------------- 1 | === Git en Visual Studio 2 | 3 | (((Visual Studio))) 4 | Desde la versión Visual Studio 2013 Update 1, los usuarios de Visual Studio disponen de un cliente Git integrado en el IDE. 5 | Visual Studio había tenido funcionalidades integradas de control de versiones desde hacía tiempo pero estaban orientadas hacia sistemas centralizados con bloqueo de archivos, así que Git no se adecuaba bien a ese flujo de trabajo. 6 | La compatibilidad de Git en Visual Studio 2013 se ha apartado de esta antigua funcionalidad y el resultado es una adaptación mucho mejor entre Visual Studio y Git. 7 | //// 8 | Starting with Visual Studio 2013 Update 1, Visual Studio users have a Git client built directly into their IDE. 9 | Visual Studio has had source-control integration features for quite some time, but they were oriented towards centralized, file-locking systems, and Git was not a good match for this workflow. 10 | Visual Studio 2013's Git support has been separated from this older feature, and the result is a much better fit between Studio and Git. 11 | //// 12 | 13 | Para localizar esta funcionalidad, abre un proyecto que esté controlado mediante Git ( o simplemente usa `git init` en un proyecto ya existente) y selecciona en el menú VIEW > Team Explorer. 14 | Puedes ver el visor de "Connect" (Conectar) que se parecerá un poco a ésta: 15 | //// 16 | To locate the feature, open a project that's controlled by Git (or just `git init` an existing project), and select View > Team Explorer from the menu. 17 | You'll see the "Connect" view, which looks a bit like this: 18 | //// 19 | 20 | .Conectándose a un repositorio Git desde el Team Explorer. 21 | image::images/vs-1.png[Conectándose a un repositorio Git desde el Team Explorer.] 22 | 23 | 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. 24 | Si no consigues ver el proyecto, haz clic en el enlace "Add" y escribe la ruta del directorio de trabajo. 25 | Haciendo doble clic sobre uno de los repositorios locales Git, te lleva a la vista de inicio, que es como <>. 26 | 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). 27 | //// 28 | Visual Studio remembers all of the projects you've opened that are Git-controlled, and they're available in the list at the bottom. 29 | If you don't see the one you want there, click the "Add" link and type in the path to the working directory. 30 | Double clicking on one of the local Git repositories leads you to the Home view, which looks like <>. 31 | 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. 32 | //// 33 | 34 | [[rvs_home]] 35 | .Vista de inicio del repositorio Git en Visual Studio. 36 | image::images/vs-2.png[Vista de inicio del repositorio Git en Visual Studio.] 37 | 38 | Visual Studio tiene ahora un entorno gráfico para Git potente y orientado a tareas. 39 | Incluye un visor de históricos lineal, un visor de diferencias, comandos remotos y otras muchas funcionalidades. 40 | Puedes dirigirte a http://msdn.microsoft.com/en-us/library/hh850437.aspx[] para una documentación más completa de todas estas funcionalidades (que no cabrían en esta sección). 41 | //// 42 | Visual Studio now has a powerful task-focused UI for Git. 43 | It includes a linear history view, a diff viewer, remote commands, and many other capabilities. 44 | For complete documentation of this feature (which doesn't fit here), go to http://msdn.microsoft.com/en-us/library/hh850437.aspx[]. 45 | //// 46 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/zsh.asc: -------------------------------------------------------------------------------- 1 | === Git en Zsh 2 | 3 | (((zsh)))(((tab completion, zsh)))(((shell prompts, zsh))) 4 | Git también viene con una librería de completación de pestañas para Zsh. 5 | Simplemente copie `contrib/completion/git-completion.zsh` a su directorio local y anclelo de su `.zshrc`. 6 | La interfaz de Zsh es un poco más poderosa que la de Bash: 7 | 8 | [source,console] 9 | ---- 10 | $ git che 11 | check-attr -- display gitattributes information 12 | check-ref-format -- ensure that a reference name is well formed 13 | checkout -- checkout branch or paths to working tree 14 | checkout-index -- copy files from index to working directory 15 | cherry -- find commits not merged upstream 16 | cherry-pick -- apply changes introduced by some existing commits 17 | ---- 18 | 19 | Las completaciones de pestañas ambiguas no sólo son listadas; tienen descripciones muy útiles y puede navegar graficamente por la lista presionando tab repetidas veces. 20 | Esto funciona con comandos de Git, sus argumentos y nombres de cosas dentro del repositorio (como referencias y repositorios remotos), así como nombres de archivos y todas las otras cosas que Zhs sabe como "pestaña-completar". 21 | 22 | Zsh resulta ser compatible con Bash cuando se trata de personalización de prompts, pero este le permite tener un prompt del lado derecho también. 23 | Para incluír el nombre del branch en el lado derecho, añada estas líneas a su archivo `~/.zshrc`: 24 | 25 | [source,console] 26 | ---- 27 | setopt prompt_subst 28 | . ~/git-prompt.sh 29 | export RPROMPT=$'$(__git_ps1 "%s")' 30 | ---- 31 | 32 | Esto lleva a una muestra del branch actual en el lado a mano derecha de la ventana del terminal, siempre que tu caparazón esté dentro de un repositorio Git. Se ve un poco como esto: 33 | 34 | .Customized `zsh` prompt. 35 | image::images/zsh-prompt.png[Prompt `zsh` personalizado.] 36 | 37 | Zsh es lo suficientemente potente, tanto así que existen marcos metodológicos enteros dedicados a mejorarlo. 38 | Uno de estos se llama "oh-my-zsh", y puede ser encontrado en https://github.com/robbyrussell/oh-my-zsh[]. 39 | 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. 40 | <> es tan sólo un ejemplo de lo que puede realizarse con este sistema. 41 | 42 | [[roh_my_zsh_git]] 43 | .An example of an oh-my-zsh theme. 44 | image::images/zsh-oh-my.png[Ejemplo de un tema oh-my-zsh.] 45 | -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/1.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/1.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/10.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/10.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/2.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/2.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/3.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/3.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/4.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/4.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/5.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/5.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/6.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/6.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/7.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/7.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/8.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/8.png -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/9.pdf -------------------------------------------------------------------------------- /book/B-embedding-git/callouts/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/B-embedding-git/callouts/9.png -------------------------------------------------------------------------------- /book/B-embedding-git/sections/command-line.asc: -------------------------------------------------------------------------------- 1 | === Git mediante Línea de Comandos 2 | 3 | Una opción es generar un proceso shell y utilizar la herramienta de línea de comandos de Git para hacer el trabajo. 4 | Esto tiene la ventaja de ser canónico, y todas las características de Git están soportadas. 5 | Esto también resulta ser bastante fácil, ya que la mayoría de los entornos de ejecución tienen una forma relativamente sencilla para invocar un proceso con argumentos de la línea de comandos. 6 | Sin embargo, este enfoque tiene algunas desventajas. 7 | 8 | Una es que toda la salida es un texto plano. 9 | Esto significa que tendrás que analizar el formato de salida cambiante de Git para leer la información de progreso y de resultado, lo que puede ser ineficiente y propenso a errores. 10 | 11 | Otra es la falta de recuperación de errores. 12 | Si un repositorio está dañado de alguna manera, o el usuario tiene un valor de configuración con formato incorrecto, Git simplemente se negará a realizar muchas operaciones. 13 | 14 | Otra más es la gestión de procesos. 15 | Git requiere que mantengas un entorno de shell en un proceso separado, lo que puede añadir complejidad no deseada. 16 | Tratar de coordinar muchos de estos procesos (especialmente cuando se accede potencialmente el mismo repositorio de varios procesos) puede ser todo un reto. 17 | -------------------------------------------------------------------------------- /book/contributors.asc: -------------------------------------------------------------------------------- 1 | [preface] 2 | == Contribuidores 3 | 4 | Debido a que este es un libro cuya traducción es "Open Source", hemos recibido la colaboración de muchas personas a lo largo de los últimos años. A continuación hay una lista de todas las personas que han contribuido en la traducción del libro al idioma español. Muchas gracias a todos por colaborar a mejorar este libro para el beneficio de todos los hispanohablantes. 5 | 6 | [source,tabsize=8] 7 | ---- 8 | include::contributors.txt[] 9 | ---- 10 | -------------------------------------------------------------------------------- /book/cover.html: -------------------------------------------------------------------------------- 1 |
cover
2 | -------------------------------------------------------------------------------- /book/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/book/cover.png -------------------------------------------------------------------------------- /book/dedication.asc: -------------------------------------------------------------------------------- 1 | [dedication] 2 | == Dedicatorias 3 | 4 | _A mi esposa, Becky, sin la cual esta aventura nunca hubiera comenzado. - Ben_ 5 | 6 | _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_ 7 | -------------------------------------------------------------------------------- /book/index.asc: -------------------------------------------------------------------------------- 1 | == Index 2 | -------------------------------------------------------------------------------- /book/license.asc: -------------------------------------------------------------------------------- 1 | [preface] 2 | == Licence 3 | 4 | include::../LICENSE.asc[] 5 | -------------------------------------------------------------------------------- /book/preface_ben.asc: -------------------------------------------------------------------------------- 1 | [preface] 2 | == Prefacio por Ben Straub 3 | 4 | La primera edición de este libro es lo que me enganchó a Git. 5 | É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. 6 | 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. 7 | 8 | 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. 9 | Cuando Scott me preguntó si estaría interesado en trabajar en la segunda edición, ni siquiera me lo pensé. 10 | 11 | Ha sido un gran placer y un privilegio trabajar en este libro. 12 | Espero que le ayude tanto como lo hizo conmigo. 13 | -------------------------------------------------------------------------------- /book/preface_scott.asc: -------------------------------------------------------------------------------- 1 | [preface] 2 | == Prefacio por Scott Chacon 3 | 4 | Bienvenidos a la segunda edición de Pro Git. 5 | La primera edición fue publicada hace más de cuatro años. 6 | Desde entonces mucho ha cambiado aunque muchas cosas importantes no. 7 | 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. 8 | 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. 9 | 10 | Cuando escribí la primera edición, Git seguía siendo relativamente difícil de usar y una herramienta escasamente utilizada por algunos hackers. 11 | Estaba empezando a cobrar fuerza en algunas comunidades, pero no había alcanzado la ubicuidad que tiene actualmente. 12 | Desde entonces, casi todas las comunidades de código abierto lo han adoptado. 13 | 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. 14 | El Pro Git de hace cuatro años no trataba nada de eso. 15 | Uno de los principales objetivos de esta nueva edición es tocar todas esas nuevas fronteras en la comunidad de Git. 16 | 17 | La comunidad de código abierto que usa Git también se ha disparado. 18 | 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. 19 | 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. 20 | 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. 21 | 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. 22 | 23 | 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. 24 | No me gustaba estar escribiendo sobre lo que esencialmente consideraba un recurso comunitario y también hablando de mi empresa. 25 | Aunque aún me desagrada ese conflicto de intereses, la importancia de GitHub en la comunidad Git es inevitable. 26 | 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. 27 | 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. 28 | 29 | 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. 30 | La mayoría de los ejemplos en el libro han sido cambiados a HTTP desde SSH porque es mucho más sencillo. 31 | 32 | 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. 33 | 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. 34 | 35 | Espero que disfruten de esta edición actualizada de Pro Git. 36 | -------------------------------------------------------------------------------- /book/toc.asc: -------------------------------------------------------------------------------- 1 | {{ toc }} 2 | -------------------------------------------------------------------------------- /callouts/1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/1.pdf -------------------------------------------------------------------------------- /callouts/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/1.png -------------------------------------------------------------------------------- /callouts/10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/10.pdf -------------------------------------------------------------------------------- /callouts/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/10.png -------------------------------------------------------------------------------- /callouts/2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/2.pdf -------------------------------------------------------------------------------- /callouts/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/2.png -------------------------------------------------------------------------------- /callouts/3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/3.pdf -------------------------------------------------------------------------------- /callouts/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/3.png -------------------------------------------------------------------------------- /callouts/4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/4.pdf -------------------------------------------------------------------------------- /callouts/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/4.png -------------------------------------------------------------------------------- /callouts/5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/5.pdf -------------------------------------------------------------------------------- /callouts/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/5.png -------------------------------------------------------------------------------- /callouts/6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/6.pdf -------------------------------------------------------------------------------- /callouts/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/6.png -------------------------------------------------------------------------------- /callouts/7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/7.pdf -------------------------------------------------------------------------------- /callouts/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/7.png -------------------------------------------------------------------------------- /callouts/8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/8.pdf -------------------------------------------------------------------------------- /callouts/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/8.png -------------------------------------------------------------------------------- /callouts/9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/9.pdf -------------------------------------------------------------------------------- /callouts/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/callouts/9.png -------------------------------------------------------------------------------- /ch01-introduction.asc: -------------------------------------------------------------------------------- 1 | [#ch01-introduction] 2 | [[r_getting_started]] 3 | == Inicio - Sobre el Control de Versiones 4 | 5 | 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. 6 | 7 | include::book/01-introduction/sections/about-version-control.asc[] 8 | 9 | include::book/01-introduction/sections/history.asc[] 10 | 11 | include::book/01-introduction/sections/basics.asc[] 12 | 13 | include::book/01-introduction/sections/command-line.asc[] 14 | 15 | include::book/01-introduction/sections/installing.asc[] 16 | 17 | include::book/01-introduction/sections/first-time-setup.asc[] 18 | 19 | include::book/01-introduction/sections/help.asc[] 20 | 21 | === Resumen 22 | 23 | En este momento debes tener una comprensión básica de lo que es Git, y en que se diferencia de cualquier otro sistema de control de versiones centralizado que pudieras haber utilizado previamente. De igual manera, Git debe estar funcionando en tu sistema y configurado con tu identidad personal. Es hora de aprender los fundamentos de Git. 24 | -------------------------------------------------------------------------------- /ch02-git-basics.asc: -------------------------------------------------------------------------------- 1 | [#ch02-git-basics] 2 | [[r_git_basics_chapter]] 3 | == Fundamentos de Git 4 | 5 | Si pudieras leer solo un capítulo para empezar a trabajar con Git, este es el capítulo que debes leer. 6 | Este capítulo cubre todos los comandos básicos que necesitas para hacer la gran mayoría de cosas a las que eventualmente vas a dedicar tu tiempo mientras trabajas con Git. 7 | 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. 8 | 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. 9 | 10 | include::book/02-git-basics/sections/getting-a-repository.asc[] 11 | 12 | include::book/02-git-basics/sections/recording-changes.asc[] 13 | 14 | include::book/02-git-basics/sections/viewing-history.asc[] 15 | 16 | include::book/02-git-basics/sections/undoing.asc[] 17 | 18 | include::book/02-git-basics/sections/remotes.asc[] 19 | 20 | include::book/02-git-basics/sections/tagging.asc[] 21 | 22 | include::book/02-git-basics/sections/aliases.asc[] 23 | 24 | === Resumen 25 | 26 | En este momento puedes hacer todas las operaciones básicas de Git a nivel local: Crear o clonar un repositorio, hacer cambios, preparar y confirmar esos cambios y ver la historia de los cambios en el repositorio. 27 | A continuación cubriremos la mejor característica de Git: Su modelo de ramas. 28 | -------------------------------------------------------------------------------- /ch03-git-branching.asc: -------------------------------------------------------------------------------- 1 | [#ch03-git-branching] 2 | [[r_git_branching]] 3 | == Ramificaciones en Git 4 | 5 | (((branches))) 6 | Cualquier sistema de control de versiones moderno tiene algún mecanismo para soportar el uso de ramas. 7 | Cuando hablamos de ramificaciones, significa que tú has tomado la rama principal de desarrollo (master) y a partir de ahí has continuado trabajando sin seguir la rama principal de desarrollo. 8 | En muchos sistemas de control de versiones este proceso es costoso, pues a menudo requiere crear una nueva copia del código, lo cual puede tomar mucho tiempo cuando se trata de proyectos grandes. 9 | 10 | Algunas personas resaltan que uno de los puntos más fuertes de Git es su sistema de ramificaciones y lo cierto es que esto le hace resaltar sobre los otros sistemas de control de versiones. 11 | ¿Por qué esto es tan importante? 12 | La forma en la que Git maneja las ramificaciones es increíblemente rápida, haciendo así de las operaciones de ramificación algo casi instantáneo, al igual que el avance o el retroceso entre distintas ramas, lo cual también es tremendamente rápido. 13 | 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. 14 | Entender y manejar esta opción te proporciona una poderosa y exclusiva herramienta que puede, literalmente, cambiar la forma en la que desarrollas. 15 | 16 | include::book/03-git-branching/sections/nutshell.asc[] 17 | 18 | include::book/03-git-branching/sections/basic-branching-and-merging.asc[] 19 | 20 | include::book/03-git-branching/sections/branch-management.asc[] 21 | 22 | include::book/03-git-branching/sections/workflows.asc[] 23 | 24 | include::book/03-git-branching/sections/remote-branches.asc[] 25 | 26 | include::book/03-git-branching/sections/rebasing.asc[] 27 | 28 | === Recapitulación 29 | 30 | Hemos visto los procedimientos básicos de ramificación (branching) y fusión (merging) en Git. 31 | A estas alturas, te sentirás cómodo creando nuevas ramas (branch), saltando (checkout) entre ramas para trabajar y fusionando (merge) ramas entre ellas. 32 | También conocerás cómo compartir tus ramas enviándolas (push) a un servidor compartido, cómo trabajar colaborativamente en ramas compartidas, y cómo reorganizar (rebase) tus ramas antes de compartirlas. 33 | A continuación, hablaremos sobre lo que necesitas para tener tu propio servidor de hospedaje Git. 34 | -------------------------------------------------------------------------------- /ch04-git-server.asc: -------------------------------------------------------------------------------- 1 | [#ch04-git-server] 2 | == Git en el Servidor 3 | 4 | (((serving repositories))) 5 | En este punto, deberías ser capaz de realizar la mayoría de las tareas diarias para las cuales estarás usando Git. 6 | Sin embargo, para poder realizar cualquier colaboración en Git, necesitarás tener un repositorio remoto Git. 7 | Aunque técnicamente puedes enviar y recibir cambios desde repositorios de otros individuos, no se recomienda hacerlo porque, si no tienes cuidado, fácilmente podrías confundir en que es en lo que se está trabajando. 8 | Además, lo deseable es que tus colaboradores sean capaces de acceder al repositorio incluso si tu computadora no está en línea – muchas veces es útil tener un repositorio confiable en común. 9 | Por lo tanto, el método preferido para colaborar con otra persona es configurar un repositorio intermedio al cual ambos tengan acceso, y enviar (push) y recibir (pull) desde allí. 10 | 11 | Poner en funcionamiento un servidor Git es un proceso bastante claro. 12 | Primero, eliges con qué protocolos ha de comunicarse tu servidor. 13 | La primera sección de este capítulo cubrirá los protocolos disponibles, así como los pros y los contras de cada uno. 14 | Las siguientes secciones explicarán algunas configuraciones comunes utilizando dichos protocolos y como poner a funcionar tu servidor con alguno de ellos. 15 | Finalmente, revisaremos algunas de las opciones hospedadas, si no te importa hospedar tu código en el servidor de alguien más y no quieres tomarte la molestia de configurar y mantener tu propio servidor. 16 | 17 | Si no tienes interés en tener tu propio servidor, puedes saltarte hasta la última sección de este capítulo para ver algunas de las opciones para configurar una cuenta hospedada y seguir al siguiente capítulo, donde discutiremos los varios pormenores de trabajar en un ambiente de control de fuente distribuido. 18 | 19 | Un repositorio remoto es generalmente un _repositorio básico_ – un repositorio Git que no tiene directorio de trabajo. 20 | 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. 21 | En los más simples términos, un repositorio básico es el contenido `.git` del directorio de tu proyecto y nada más. 22 | 23 | include::book/04-git-server/sections/protocols.asc[] 24 | 25 | include::book/04-git-server/sections/git-on-a-server.asc[] 26 | 27 | include::book/04-git-server/sections/generating-ssh-key.asc[] 28 | 29 | include::book/04-git-server/sections/setting-up-server.asc[] 30 | 31 | include::book/04-git-server/sections/git-daemon.asc[] 32 | 33 | include::book/04-git-server/sections/smart-http.asc[] 34 | 35 | include::book/04-git-server/sections/gitweb.asc[] 36 | 37 | include::book/04-git-server/sections/gitlab.asc[] 38 | 39 | include::book/04-git-server/sections/hosted.asc[] 40 | 41 | === Resumen 42 | 43 | Tienes varias opciones para obtener un repositorio Git remoto y ponerlo a funcionar para que puedas colaborar con otras personas o compartir tu trabajo. 44 | 45 | Mantener tu propio servidor te da control y te permite correr tu servidor dentro de tu propio cortafuegos, pero tal servidor generalmente requiere una importante cantidad de tu tiempo para configurar y mantener. 46 | Si almacenas tus datos en un servidor hospedado, es fácil de configurar y mantener; sin embargo, tienes que ser capaz de mantener tu código en los servidores de alguien más, y algunas organizaciones no te lo permitirán. 47 | 48 | Debería ser un proceso claro determinar que solución o combinación de soluciones es apropiada para ti y para tu organización. 49 | -------------------------------------------------------------------------------- /ch05-distributed-git.asc: -------------------------------------------------------------------------------- 1 | [#ch05-distributed-git] 2 | == Git en entornos distribuidos 3 | 4 | (((distributed git))) 5 | Ahora que ya tienes un repositorio Git configurado como punto de trabajo para que los desarrolladores compartan su código, y además ya conoces los comandos básicos de Git para usar en local, verás cómo se puede utilizar alguno de los flujos de trabajo distribuido que Git permite. 6 | 7 | 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. 8 | 9 | 10 | include::book/05-distributed-git/sections/distributed-workflows.asc[] 11 | 12 | include::book/05-distributed-git/sections/contributing.asc[] 13 | 14 | include::book/05-distributed-git/sections/maintaining.asc[] 15 | 16 | === Resumen 17 | 18 | Deberías sentirte lo suficiente cómodo para contribuir en un proyecto en Git así como para mantener tu propio proyecto o integrar las contribuciones de otros usuarios. 19 | ¡Felicidades por ser un desarrollador eficaz con Git! 20 | En el próximo capítulo, aprenderás como usar el servicio más grande y popular para alojar proyectos de Git: Github. 21 | -------------------------------------------------------------------------------- /ch06-github.asc: -------------------------------------------------------------------------------- 1 | [#ch06-github] 2 | [[r_github]] 3 | == GitHub 4 | 5 | (((GitHub))) 6 | GitHub es el mayor proveedor de alojamiento de repositorios Git, y es el punto 7 | de encuentro para que millones de desarrolladores colaboren en el desarrollo de 8 | sus proyectos. Un gran porcentaje de los repositorios Git se almacenan en 9 | GitHub, y muchos proyectos de código abierto lo utilizan para hospedar su 10 | Git, realizar su seguimiento de fallos, hacer revisiones de código y otras 11 | cosas. 12 | Por tanto, aunque no sea parte directa del proyecto de código abierto de Git, 13 | es muy probable que durante tu uso profesional de Git necesites interactuar 14 | con GitHub en algún momento. 15 | 16 | Este capítulo trata del uso eficaz de GitHub. 17 | Veremos cómo crear y gestionar una cuenta, crear y gestionar repositorios 18 | Git, también los flujos de trabajo (workflows) habituales para participar 19 | en proyectos y para aceptar nuevos participantes en los tuyos, la interfaz 20 | de programación de GitHub (API) y muchos otros pequeños trucos que te harán, 21 | en general, la vida más fácil. 22 | 23 | Si no vas a utilizar GitHub para hospedar tus proyectos o para colaborar 24 | con otros, puedes saltar directamente a <>. 25 | 26 | [WARNING] 27 | .Cambios en la interfaz 28 | ==== 29 | Observa que como muchos sitios web activos, el aspecto de la interfaz de 30 | usuario puede cambiar con el tiempo, frente a las capturas de pantalla que 31 | incluye este libro. Probablemente la versión en línea de este libro tenga 32 | esas capturas más actualizadas. 33 | ==== 34 | 35 | include::book/06-github/sections/1-setting-up-account.asc[] 36 | 37 | include::book/06-github/sections/2-contributing.asc[] 38 | 39 | include::book/06-github/sections/3-maintaining.asc[] 40 | 41 | include::book/06-github/sections/4-managing-organization.asc[] 42 | 43 | include::book/06-github/sections/5-scripting.asc[] 44 | 45 | === Resumen 46 | 47 | Ahora ya eres un usuario de GitHub. 48 | Ya sabes cómo crear una cuenta, gestionar una organización, crear y enviar 49 | repositorios, participar con los proyectos de otras personas y aceptar 50 | contribuciones de terceros en tus proyectos. En el siguiente capítulo 51 | conoceremos otras herramientas y trucos potentes para manejar situaciones 52 | más complicadas, con los que te puedes convertir con seguridad en un experto 53 | de Git. 54 | -------------------------------------------------------------------------------- /ch07-git-tools.asc: -------------------------------------------------------------------------------- 1 | [#ch07-git-tools] 2 | [[r_git_tools]] 3 | == Herramientas de Git 4 | 5 | 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 | Has conseguido cumplir con las tareas básicas de seguimiento y has agregado archivos, además has aprovechado el poder del area de staging y has conocido el tema de branching y merging. 7 | 8 | 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. 9 | 10 | include::book/07-git-tools/sections/revision-selection.asc[] 11 | 12 | include::book/07-git-tools/sections/interactive-staging.asc[] 13 | 14 | include::book/07-git-tools/sections/stashing-cleaning.asc[] 15 | 16 | include::book/07-git-tools/sections/signing.asc[] 17 | 18 | include::book/07-git-tools/sections/searching.asc[] 19 | 20 | include::book/07-git-tools/sections/rewriting-history.asc[] 21 | 22 | include::book/07-git-tools/sections/reset.asc[] 23 | 24 | include::book/07-git-tools/sections/advanced-merging.asc[] 25 | 26 | include::book/07-git-tools/sections/rerere.asc[] 27 | 28 | include::book/07-git-tools/sections/debugging.asc[] 29 | 30 | include::book/07-git-tools/sections/submodules.asc[] 31 | 32 | include::book/07-git-tools/sections/bundling.asc[] 33 | 34 | include::book/07-git-tools/sections/replace.asc[] 35 | 36 | include::book/07-git-tools/sections/credentials.asc[] 37 | 38 | === Resumen 39 | 40 | Has visto un número de herramientas avanzadas que te permiten manipular tus commits y el área de staging de una manera más precisa. 41 | Cuando notes errores, podrás estar en la capacidad de descubrir fácilmente qué commit lo introdujo, cuándo y por quién. 42 | Si quieres usar subproyectos en tu proyecto, has aprendido como acomodar esas necesidades. 43 | En este momento, tu debes ser capaz de realizar la mayoría de cosas que vas a necesitar en Git durante tu día a día desde la línea de comandos y sentirte a gusto haciéndolo. 44 | -------------------------------------------------------------------------------- /ch08-customizing-git.asc: -------------------------------------------------------------------------------- 1 | [#ch08-customizing-git] 2 | == Personalización de Git 3 | 4 | Hasta ahora, hemos visto los aspectos básicos del funcionamiento de Git y la 5 | manera de utilizarlo; además de haber presentado una serie de herramientas 6 | suministradas con Git para ayudarnos a usarlo de manera sencilla y eficiente. 7 | En este capítulo, avanzaremos sobre ciertas operaciones que puedes utilizar 8 | para personalizar el funcionamiento de Git ; presentando algunos de sus 9 | principales ajustes y el sistema de anclajes (hooks). Con estas operaciones, 10 | será fácil conseguir que Git trabaje exactamente como tú, tu empresa o tu grupo 11 | necesitéis. 12 | 13 | include::book/08-customizing-git/sections/config.asc[] 14 | 15 | include::book/08-customizing-git/sections/attributes.asc[] 16 | 17 | include::book/08-customizing-git/sections/hooks.asc[] 18 | 19 | include::book/08-customizing-git/sections/policy.asc[] 20 | 21 | === Recapitulación 22 | 23 | Se han visto las principales vías por donde puedes personalizar tanto tu 24 | cliente como tu servidor Git para que se ajusten a tu forma de trabajar y a tus 25 | proyectos. Has aprendido todo tipo de ajustes de configuración, atributos 26 | basados en archivos e incluso enganches (hooks). Y has preparado un ejemplo de 27 | servidor con mecanismos para asegurar políticas determinadas. A partir de 28 | ahora estás listo para encajar Git en prácticamente cualquier flujo de trabajo 29 | que puedas imaginar. 30 | -------------------------------------------------------------------------------- /ch09-git-and-other-scms.asc: -------------------------------------------------------------------------------- 1 | [#ch09-git-and-other-scms] 2 | == Git y Otros Sistemas 3 | 4 | El mundo no es perfecto. 5 | Por lo general, no se puede cambiar inmediatamente cada proyecto con el que está en contacto Git. 6 | A veces estás atrapado en un proyecto usando otro VCS, y desearías poder usar Git. 7 | Pasaremos la primera parte de este capítulo aprendiendo sobre cómo utilizar Git como cliente cuando el proyecto en el que se está trabajando está alojado en un sistema diferente. 8 | 9 | En algún momento, puede que desees convertir tu proyecto existente a Git. 10 | La segunda parte de este capítulo describe cómo migrar tu proyecto en Git desde varios sistemas específicos, así como un método que funcionará si no existe una herramienta de importación pre-construida. 11 | 12 | === Git como Cliente 13 | 14 | (((Git como Cliente))) 15 | Git proporciona una experiencia tan agradable para los desarrolladores que muchas personas han descubierto cómo usarlo en su estación de trabajo, incluso si el resto de su equipo está usando un VCS completamente diferente. 16 | Hay un número de estos adaptadores disponibles, llamados ``bridges''. 17 | Aquí vamos a cubrir los que es más probable que se encuentren en la naturaleza. 18 | 19 | include::book/09-git-and-other-scms/sections/client-svn.asc[] 20 | 21 | include::book/09-git-and-other-scms/sections/client-hg.asc[] 22 | 23 | include::book/09-git-and-other-scms/sections/client-p4.asc[] 24 | 25 | include::book/09-git-and-other-scms/sections/client-tfs.asc[] 26 | 27 | [[r_migrating]] 28 | === Migración a Git 29 | 30 | (((Migración a Git))) 31 | Si tiene una base de código existente en otro VCS pero ha decidido comenzar a usar Git, debe migrar su proyecto de una forma u otra. 32 | Esta sección revisa algunos importadores para sistemas comunes y luego demuestra cómo desarrollar su propio importador personalizado. 33 | 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. 34 | 35 | include::book/09-git-and-other-scms/sections/import-svn.asc[] 36 | 37 | include::book/09-git-and-other-scms/sections/import-hg.asc[] 38 | 39 | include::book/09-git-and-other-scms/sections/import-p4.asc[] 40 | 41 | include::book/09-git-and-other-scms/sections/import-tfs.asc[] 42 | 43 | include::book/09-git-and-other-scms/sections/import-custom.asc[] 44 | 45 | === Resumen 46 | 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. 47 | En el próximo capítulo, cubriremos los elementos internos de Git para que pueda crear cada byte, si es necesario. 48 | -------------------------------------------------------------------------------- /ch10-git-internals.asc: -------------------------------------------------------------------------------- 1 | [#ch10-git-internals] 2 | [[r_git_internals]] 3 | == Los entresijos internos de Git 4 | 5 | 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. 6 | Nos parece que esta información es realmente importante para entender cuan útil y potente es Git, pero algunas personas opinan que puede ser confuso e innecesariamente complejo para novatos. 7 | Por ello, lo hemos puesto en el capítulo final del libro; de tal forma que puedas leerlo antes o después, en cualquier momento, a lo largo de tu proceso de aprendizaje. 8 | Lo dejamos en tus manos. 9 | 10 | Y, ahora que estamos aquí, comencemos con el tema. 11 | Ante todo, si no está aún suficientemente claro, Git es fundamentalmente un sistema de archivo de contenido localizable con una interfaz de usuario de VCS escrita sobre él. 12 | En breve vas a aprender más acerca de que significa esto. 13 | 14 | En los primeros tiempos de Git (principalmente antes de la versión 1.5), la interfaz de usuario era mucho más compleja, ya que se centraba en el sistema de archivos en lugar de en mejorado VCS. 15 | En los últimos años, la IU se ha refinado hasta llegar a ser tan limpia y sencillo de usar como la de cualquier otro sistema; pero frecuentemente, el estereotipo persiste en lo complejo y difícil de aprender que era la IU anterior de Git. 16 | 17 | La capa de contenido localizable del sistema de archivos es increíblemente interesante; por ello, es lo primero que vamos a cubrir en este capítulo. 18 | A continuación mostraremos los mecanismos de transporte y las tareas de mantenimiento del repositorio que posiblemente necesites usar alguna vez. 19 | 20 | 21 | include::book/10-git-internals/sections/plumbing-porcelain.asc[] 22 | 23 | include::book/10-git-internals/sections/objects.asc[] 24 | 25 | include::book/10-git-internals/sections/refs.asc[] 26 | 27 | include::book/10-git-internals/sections/packfiles.asc[] 28 | 29 | include::book/10-git-internals/sections/refspec.asc[] 30 | 31 | include::book/10-git-internals/sections/transfer-protocols.asc[] 32 | 33 | include::book/10-git-internals/sections/maintenance.asc[] 34 | 35 | include::book/10-git-internals/sections/environment.asc[] 36 | 37 | === Recapitulación 38 | 39 | A estas alturas deberías tener una idea bastante clara de como trabaja Git entre bastidores y, hasta cierto punto, sobre cómo está implementado. 40 | En este capítulo se han visto unos cuantos comandos "de fontanería" -comandos de menor nivel y más simples que los "de porcelana" que hemos estado viendo en el resto del libro. 41 | Entendiendo cómo trabaja Git a bajo nivel, es más sencillo comprender por qué hace lo que hace, a la par que facilita la escritura de tus propias herramientas y scripts auxiliares para implementar flujos de trabajo tal y como necesites. 42 | 43 | Git, en su calidad de sistema de archivos de contenido localizable, es una herramienta muy poderosa que puedes usar fácilmente más que sólo un sitema de control de versiones. 44 | Esperamos que uses este nuevo conocimiento profundo de las entrañas de Git para implementar tus propias aplicaciones y para que te encuentres más cómodo usando Git de forma avanzada. 45 | -------------------------------------------------------------------------------- /diagram-source/progit.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/diagram-source/progit.sketch -------------------------------------------------------------------------------- /images/2fa-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/2fa-1.png -------------------------------------------------------------------------------- /images/account-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/account-settings.png -------------------------------------------------------------------------------- /images/advance-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/advance-master.png -------------------------------------------------------------------------------- /images/advance-testing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/advance-testing.png -------------------------------------------------------------------------------- /images/areas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/areas.png -------------------------------------------------------------------------------- /images/avatar-crop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/avatar-crop.png -------------------------------------------------------------------------------- /images/basic-branching-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-branching-1.png -------------------------------------------------------------------------------- /images/basic-branching-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-branching-2.png -------------------------------------------------------------------------------- /images/basic-branching-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-branching-3.png -------------------------------------------------------------------------------- /images/basic-branching-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-branching-4.png -------------------------------------------------------------------------------- /images/basic-branching-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-branching-5.png -------------------------------------------------------------------------------- /images/basic-branching-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-branching-6.png -------------------------------------------------------------------------------- /images/basic-merging-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-merging-1.png -------------------------------------------------------------------------------- /images/basic-merging-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-merging-2.png -------------------------------------------------------------------------------- /images/basic-rebase-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-rebase-1.png -------------------------------------------------------------------------------- /images/basic-rebase-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-rebase-2.png -------------------------------------------------------------------------------- /images/basic-rebase-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-rebase-3.png -------------------------------------------------------------------------------- /images/basic-rebase-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/basic-rebase-4.png -------------------------------------------------------------------------------- /images/benevolent-dictator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/benevolent-dictator.png -------------------------------------------------------------------------------- /images/bitnami.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/bitnami.png -------------------------------------------------------------------------------- /images/blink-01-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-01-start.png -------------------------------------------------------------------------------- /images/blink-02-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-02-pr.png -------------------------------------------------------------------------------- /images/blink-03-pull-request-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-03-pull-request-open.png -------------------------------------------------------------------------------- /images/blink-04-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-04-email.png -------------------------------------------------------------------------------- /images/blink-04-pr-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-04-pr-comment.png -------------------------------------------------------------------------------- /images/blink-05-general-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-05-general-comment.png -------------------------------------------------------------------------------- /images/blink-06-final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-06-final.png -------------------------------------------------------------------------------- /images/blink-pull-request-open copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-pull-request-open copy.png -------------------------------------------------------------------------------- /images/blink-pull-request-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/blink-pull-request-open.png -------------------------------------------------------------------------------- /images/branch-and-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/branch-and-history.png -------------------------------------------------------------------------------- /images/branch_widget_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/branch_widget_mac.png -------------------------------------------------------------------------------- /images/branch_widget_win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/branch_widget_win.png -------------------------------------------------------------------------------- /images/centralized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/centralized.png -------------------------------------------------------------------------------- /images/centralized_workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/centralized_workflow.png -------------------------------------------------------------------------------- /images/checkout-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/checkout-master.png -------------------------------------------------------------------------------- /images/clean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/clean.png -------------------------------------------------------------------------------- /images/collaborators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/collaborators.png -------------------------------------------------------------------------------- /images/commit-and-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/commit-and-tree.png -------------------------------------------------------------------------------- /images/commits-and-parents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/commits-and-parents.png -------------------------------------------------------------------------------- /images/data-model-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/data-model-1.png -------------------------------------------------------------------------------- /images/data-model-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/data-model-2.png -------------------------------------------------------------------------------- /images/data-model-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/data-model-3.png -------------------------------------------------------------------------------- /images/data-model-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/data-model-4.png -------------------------------------------------------------------------------- /images/deltas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/deltas.png -------------------------------------------------------------------------------- /images/distributed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/distributed.png -------------------------------------------------------------------------------- /images/double-dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/double-dot.png -------------------------------------------------------------------------------- /images/egit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/egit.png -------------------------------------------------------------------------------- /images/email-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/email-settings.png -------------------------------------------------------------------------------- /images/emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/emoji.png -------------------------------------------------------------------------------- /images/forkbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/forkbutton.png -------------------------------------------------------------------------------- /images/git-bash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/git-bash.png -------------------------------------------------------------------------------- /images/git-diff-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/git-diff-check.png -------------------------------------------------------------------------------- /images/git-fusion-boot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/git-fusion-boot.png -------------------------------------------------------------------------------- /images/git-fusion-perforce-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/git-fusion-perforce-graph.png -------------------------------------------------------------------------------- /images/git-gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/git-gui.png -------------------------------------------------------------------------------- /images/git-instaweb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/git-instaweb.png -------------------------------------------------------------------------------- /images/git-osx-installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/git-osx-installer.png -------------------------------------------------------------------------------- /images/git-tfs-ct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/git-tfs-ct.png -------------------------------------------------------------------------------- /images/github_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/github_mac.png -------------------------------------------------------------------------------- /images/github_win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/github_win.png -------------------------------------------------------------------------------- /images/gitk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/gitk.png -------------------------------------------------------------------------------- /images/gitlab-broadcast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/gitlab-broadcast.png -------------------------------------------------------------------------------- /images/gitlab-groups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/gitlab-groups.png -------------------------------------------------------------------------------- /images/gitlab-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/gitlab-menu.png -------------------------------------------------------------------------------- /images/gitlab-users.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/gitlab-users.png -------------------------------------------------------------------------------- /images/head-to-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/head-to-master.png -------------------------------------------------------------------------------- /images/head-to-testing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/head-to-testing.png -------------------------------------------------------------------------------- /images/hubot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/hubot.png -------------------------------------------------------------------------------- /images/integration-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/integration-manager.png -------------------------------------------------------------------------------- /images/interesting-rebase-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/interesting-rebase-1.png -------------------------------------------------------------------------------- /images/interesting-rebase-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/interesting-rebase-2.png -------------------------------------------------------------------------------- /images/interesting-rebase-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/interesting-rebase-3.png -------------------------------------------------------------------------------- /images/interesting-rebase-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/interesting-rebase-4.png -------------------------------------------------------------------------------- /images/interesting-rebase-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/interesting-rebase-5.png -------------------------------------------------------------------------------- /images/large-merges-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/large-merges-1.png -------------------------------------------------------------------------------- /images/large-merges-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/large-merges-2.png -------------------------------------------------------------------------------- /images/lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/lifecycle.png -------------------------------------------------------------------------------- /images/local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/local.png -------------------------------------------------------------------------------- /images/lr-branches-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/lr-branches-1.png -------------------------------------------------------------------------------- /images/lr-branches-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/lr-branches-2.png -------------------------------------------------------------------------------- /images/maint-01-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-01-email.png -------------------------------------------------------------------------------- /images/maint-02-merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-02-merge.png -------------------------------------------------------------------------------- /images/maint-03-email-resp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-03-email-resp.png -------------------------------------------------------------------------------- /images/maint-04-target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-04-target.png -------------------------------------------------------------------------------- /images/maint-05-mentions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-05-mentions.png -------------------------------------------------------------------------------- /images/maint-06-unsubscribe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-06-unsubscribe.png -------------------------------------------------------------------------------- /images/maint-07-notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-07-notifications.png -------------------------------------------------------------------------------- /images/maint-08-notifications-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-08-notifications-page.png -------------------------------------------------------------------------------- /images/maint-09-contrib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-09-contrib.png -------------------------------------------------------------------------------- /images/maint-10-default-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-10-default-branch.png -------------------------------------------------------------------------------- /images/maint-11-transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/maint-11-transfer.png -------------------------------------------------------------------------------- /images/managed-team-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/managed-team-1.png -------------------------------------------------------------------------------- /images/managed-team-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/managed-team-2.png -------------------------------------------------------------------------------- /images/managed-team-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/managed-team-3.png -------------------------------------------------------------------------------- /images/managed-team-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/managed-team-flow.png -------------------------------------------------------------------------------- /images/markdown-01-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/markdown-01-example.png -------------------------------------------------------------------------------- /images/markdown-02-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/markdown-02-tasks.png -------------------------------------------------------------------------------- /images/markdown-03-task-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/markdown-03-task-summary.png -------------------------------------------------------------------------------- /images/markdown-04-fenced-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/markdown-04-fenced-code.png -------------------------------------------------------------------------------- /images/markdown-05-quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/markdown-05-quote.png -------------------------------------------------------------------------------- /images/markdown-06-emoji-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/markdown-06-emoji-complete.png -------------------------------------------------------------------------------- /images/markdown-07-emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/markdown-07-emoji.png -------------------------------------------------------------------------------- /images/markdown-08-drag-drop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/markdown-08-drag-drop.png -------------------------------------------------------------------------------- /images/mentions-01-syntax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/mentions-01-syntax.png -------------------------------------------------------------------------------- /images/mentions-02-render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/mentions-02-render.png -------------------------------------------------------------------------------- /images/mentions-03-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/mentions-03-closed.png -------------------------------------------------------------------------------- /images/merging-workflows-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/merging-workflows-1.png -------------------------------------------------------------------------------- /images/merging-workflows-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/merging-workflows-2.png -------------------------------------------------------------------------------- /images/merging-workflows-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/merging-workflows-3.png -------------------------------------------------------------------------------- /images/merging-workflows-4 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/merging-workflows-4 2.png -------------------------------------------------------------------------------- /images/merging-workflows-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/merging-workflows-4.png -------------------------------------------------------------------------------- /images/merging-workflows-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/merging-workflows-5.png -------------------------------------------------------------------------------- /images/new-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/new-repo.png -------------------------------------------------------------------------------- /images/neworg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/neworg.png -------------------------------------------------------------------------------- /images/newrepo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/newrepo.png -------------------------------------------------------------------------------- /images/newrepoform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/newrepoform.png -------------------------------------------------------------------------------- /images/notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/notifications.png -------------------------------------------------------------------------------- /images/orgs-01-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/orgs-01-page.png -------------------------------------------------------------------------------- /images/orgs-02-teams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/orgs-02-teams.png -------------------------------------------------------------------------------- /images/orgs-03-audit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/orgs-03-audit.png -------------------------------------------------------------------------------- /images/p4merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/p4merge.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/perils-of-rebasing-1.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/perils-of-rebasing-2.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/perils-of-rebasing-3.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/perils-of-rebasing-4.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/perils-of-rebasing-5.png -------------------------------------------------------------------------------- /images/posh-git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/posh-git.png -------------------------------------------------------------------------------- /images/pr-01-fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/pr-01-fail.png -------------------------------------------------------------------------------- /images/pr-02-merge-fix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/pr-02-merge-fix.png -------------------------------------------------------------------------------- /images/public-small-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/public-small-1.png -------------------------------------------------------------------------------- /images/public-small-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/public-small-2.png -------------------------------------------------------------------------------- /images/public-small-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/public-small-3.png -------------------------------------------------------------------------------- /images/rebasing-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/rebasing-1.png -------------------------------------------------------------------------------- /images/rebasing-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/rebasing-2.png -------------------------------------------------------------------------------- /images/remote-branches-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/remote-branches-1.png -------------------------------------------------------------------------------- /images/remote-branches-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/remote-branches-2.png -------------------------------------------------------------------------------- /images/remote-branches-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/remote-branches-3.png -------------------------------------------------------------------------------- /images/remote-branches-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/remote-branches-4.png -------------------------------------------------------------------------------- /images/remote-branches-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/remote-branches-5.png -------------------------------------------------------------------------------- /images/replace1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/replace1.png -------------------------------------------------------------------------------- /images/replace2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/replace2.png -------------------------------------------------------------------------------- /images/replace3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/replace3.png -------------------------------------------------------------------------------- /images/replace4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/replace4.png -------------------------------------------------------------------------------- /images/replace5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/replace5.png -------------------------------------------------------------------------------- /images/reposettingslink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reposettingslink.png -------------------------------------------------------------------------------- /images/rerere1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/rerere1.png -------------------------------------------------------------------------------- /images/rerere2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/rerere2.png -------------------------------------------------------------------------------- /images/rerere3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/rerere3.png -------------------------------------------------------------------------------- /images/reset-checkout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-checkout.png -------------------------------------------------------------------------------- /images/reset-ex1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-ex1.png -------------------------------------------------------------------------------- /images/reset-ex2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-ex2.png -------------------------------------------------------------------------------- /images/reset-ex3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-ex3.png -------------------------------------------------------------------------------- /images/reset-ex4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-ex4.png -------------------------------------------------------------------------------- /images/reset-ex5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-ex5.png -------------------------------------------------------------------------------- /images/reset-ex6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-ex6.png -------------------------------------------------------------------------------- /images/reset-hard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-hard.png -------------------------------------------------------------------------------- /images/reset-mixed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-mixed.png -------------------------------------------------------------------------------- /images/reset-path1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-path1.png -------------------------------------------------------------------------------- /images/reset-path2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-path2.png -------------------------------------------------------------------------------- /images/reset-path3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-path3.png -------------------------------------------------------------------------------- /images/reset-soft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-soft.png -------------------------------------------------------------------------------- /images/reset-squash-r1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-squash-r1.png -------------------------------------------------------------------------------- /images/reset-squash-r2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-squash-r2.png -------------------------------------------------------------------------------- /images/reset-squash-r3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-squash-r3.png -------------------------------------------------------------------------------- /images/reset-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-start.png -------------------------------------------------------------------------------- /images/reset-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/reset-workflow.png -------------------------------------------------------------------------------- /images/scripting-01-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/scripting-01-services.png -------------------------------------------------------------------------------- /images/scripting-02-email-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/scripting-02-email-service.png -------------------------------------------------------------------------------- /images/scripting-03-webhook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/scripting-03-webhook.png -------------------------------------------------------------------------------- /images/scripting-04-webhook-debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/scripting-04-webhook-debug.png -------------------------------------------------------------------------------- /images/scripting-05-access-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/scripting-05-access-token.png -------------------------------------------------------------------------------- /images/scripting-06-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/scripting-06-comment.png -------------------------------------------------------------------------------- /images/scripting-07-status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/scripting-07-status.png -------------------------------------------------------------------------------- /images/signup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/signup.png -------------------------------------------------------------------------------- /images/small-team-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/small-team-1.png -------------------------------------------------------------------------------- /images/small-team-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/small-team-2.png -------------------------------------------------------------------------------- /images/small-team-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/small-team-3.png -------------------------------------------------------------------------------- /images/small-team-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/small-team-4.png -------------------------------------------------------------------------------- /images/small-team-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/small-team-5.png -------------------------------------------------------------------------------- /images/small-team-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/small-team-6.png -------------------------------------------------------------------------------- /images/small-team-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/small-team-7.png -------------------------------------------------------------------------------- /images/small-team-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/small-team-flow.png -------------------------------------------------------------------------------- /images/smudge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/smudge.png -------------------------------------------------------------------------------- /images/snapshots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/snapshots.png -------------------------------------------------------------------------------- /images/ssh-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/ssh-keys.png -------------------------------------------------------------------------------- /images/topic-branches-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/topic-branches-1.png -------------------------------------------------------------------------------- /images/topic-branches-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/topic-branches-2.png -------------------------------------------------------------------------------- /images/two-branches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/two-branches.png -------------------------------------------------------------------------------- /images/undomerge-reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/undomerge-reset.png -------------------------------------------------------------------------------- /images/undomerge-revert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/undomerge-revert.png -------------------------------------------------------------------------------- /images/undomerge-revert2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/undomerge-revert2.png -------------------------------------------------------------------------------- /images/undomerge-revert3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/undomerge-revert3.png -------------------------------------------------------------------------------- /images/undomerge-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/undomerge-start.png -------------------------------------------------------------------------------- /images/vs-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/vs-1.png -------------------------------------------------------------------------------- /images/vs-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/vs-2.png -------------------------------------------------------------------------------- /images/your-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/your-profile.png -------------------------------------------------------------------------------- /images/zsh-oh-my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/zsh-oh-my.png -------------------------------------------------------------------------------- /images/zsh-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-es/2264d131f4f6ca028ff4fe88ca60fc8384ee0c3c/images/zsh-prompt.png -------------------------------------------------------------------------------- /progit.asc: -------------------------------------------------------------------------------- 1 | Pro Git 2 | ======= 3 | :doctype: book 4 | :docinfo: 5 | :lang: es 6 | :toc: 7 | :toclevels: 2 8 | :pagenums: 9 | :front-cover-image: image:book/cover.png[width=1050,height=1600] 10 | 11 | 12 | ifdef::ebook-format[:leveloffset: -1] 13 | 14 | include::book/license.asc[] 15 | 16 | include::book/preface_scott.asc[] 17 | 18 | include::book/preface_ben.asc[] 19 | 20 | include::book/dedication.asc[] 21 | 22 | include::book/contributors.asc[] 23 | 24 | include::book/introduction.asc[] 25 | 26 | include::ch01-introduction.asc[] 27 | 28 | include::ch02-git-basics.asc[] 29 | 30 | include::ch03-git-branching.asc[] 31 | 32 | include::ch04-git-server.asc[] 33 | 34 | include::ch05-distributed-git.asc[] 35 | 36 | include::ch06-github.asc[] 37 | 38 | include::ch07-git-tools.asc[] 39 | 40 | include::ch08-customizing-git.asc[] 41 | 42 | include::ch09-git-and-other-scms.asc[] 43 | 44 | include::ch10-git-internals.asc[] 45 | 46 | include::A-git-in-other-environments.asc[] 47 | 48 | include::B-embedding-git.asc[] 49 | 50 | include::C-git-commands.asc[] 51 | 52 | ifndef::ebook-format[include::index.asc[]] 53 | -------------------------------------------------------------------------------- /status.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "es", 3 | "language": "Spanish", 4 | "maintainers": ["andres-mancera"], 5 | "files": { 6 | "01-introduction": { 7 | "1-introduction.asc": 100, 8 | "sections/about-version-control.asc": 100, 9 | "sections/basics.asc": 100, 10 | "sections/command-line.asc": 100, 11 | "sections/first-time-setup.asc": 100, 12 | "sections/help.asc": 100, 13 | "sections/history.asc": 100, 14 | "sections/installing.asc": 100 15 | }, 16 | "02-git-basics": { 17 | "1-git-basics.asc": 100, 18 | "sections/aliases.asc": 100, 19 | "sections/getting-a-repository.asc": 100, 20 | "sections/recording-changes.asc": 100, 21 | "sections/remotes.asc": 100, 22 | "sections/tagging.asc": 100, 23 | "sections/undoing.asc": 100, 24 | "sections/viewing-history.asc": 100 25 | }, 26 | "03-git-branching": { 27 | "1-git-branching.asc": 100, 28 | "sections/basic-branching-and-merging.asc": 100, 29 | "sections/branch-management.asc": 100, 30 | "sections/nutshell.asc": 100, 31 | "sections/rebasing.asc": 100, 32 | "sections/remote-branches.asc": 100, 33 | "sections/workflows.asc": 100 34 | }, 35 | "04-git-server": { 36 | "1-git-server.asc": 100, 37 | "sections/generating-ssh-key.asc": 100, 38 | "sections/git-daemon.asc": 100, 39 | "sections/git-on-a-server.asc": 100, 40 | "sections/gitlab.asc": 100, 41 | "sections/gitweb.asc": 100, 42 | "sections/hosted.asc": 100, 43 | "sections/protocols.asc": 100, 44 | "sections/setting-up-server.asc": 100, 45 | "sections/smart-http.asc": 100 46 | }, 47 | "05-distributed-git": { 48 | "1-distributed-git.asc": 100, 49 | "sections/contributing.asc": 0, 50 | "sections/distributed-workflows.asc": 40, 51 | "sections/maintaining.asc": 100 52 | }, 53 | "06-github": { 54 | "1-github.asc": 100, 55 | "sections/1-setting-up-account.asc": 100, 56 | "sections/2-contributing.asc": 100, 57 | "sections/3-maintaining.asc": 100, 58 | "sections/4-managing-organization.asc": 100, 59 | "sections/5-scripting.asc": 100 60 | }, 61 | "07-git-tools": { 62 | "1-git-tools.asc": 100, 63 | "sections/advanced-merging.asc": 100, 64 | "sections/bundling.asc": 0, 65 | "sections/credentials.asc": 100, 66 | "sections/debugging.asc": 100, 67 | "sections/interactive-staging.asc": 0, 68 | "sections/replace.asc": 0, 69 | "sections/rerere.asc": 0, 70 | "sections/reset.asc": 0, 71 | "sections/revision-selection.asc": 0, 72 | "sections/rewriting-history.asc": 0, 73 | "sections/searching.asc": 0, 74 | "sections/signing.asc": 100, 75 | "sections/stashing-cleaning.asc": 0, 76 | "sections/submodules.asc": 0, 77 | "sections/subtree-merges.asc": 0 78 | }, 79 | "08-customizing-git": { 80 | "1-customizing-git.asc": 100, 81 | "sections/attributes.asc": 100, 82 | "sections/config.asc": 100, 83 | "sections/hooks.asc": 100, 84 | "sections/policy.asc": 100 85 | }, 86 | "09-git-and-other-scms": { 87 | "1-git-and-other-scms.asc": 0, 88 | "sections/client-hg.asc": 0, 89 | "sections/client-p4.asc": 0, 90 | "sections/client-svn.asc": 0, 91 | "sections/client-tfs.asc": 0, 92 | "sections/import-custom.asc": 0, 93 | "sections/import-hg.asc": 0, 94 | "sections/import-p4.asc": 0, 95 | "sections/import-svn.asc": 0, 96 | "sections/import-tfs.asc": 0 97 | }, 98 | "10-git-internals": { 99 | "1-git-internals.asc": 100, 100 | "sections/environment.asc": 100, 101 | "sections/maintenance.asc": 100, 102 | "sections/objects.asc": 100, 103 | "sections/packfiles.asc": 100, 104 | "sections/plumbing-porcelain.asc": 100, 105 | "sections/refs.asc": 100, 106 | "sections/refspec.asc": 100, 107 | "sections/transfer-protocols.asc": 100 108 | }, 109 | "A-git-in-other-environments": { 110 | "1-git-other-environments.asc": 100, 111 | "sections/bash.asc": 100, 112 | "sections/eclipse.asc": 100, 113 | "sections/guis.asc": 100, 114 | "sections/powershell.asc": 0, 115 | "sections/visualstudio.asc": 100, 116 | "sections/zsh.asc": 0 117 | }, 118 | "B-embedding-git": { 119 | "1-embedding-git.asc": 100, 120 | "sections/command-line.asc": 100, 121 | "sections/jgit.asc": 100, 122 | "sections/libgit2.asc": 100 123 | }, 124 | "C-git-commands": { 125 | "1-git-commands.asc": 100 126 | } 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /theme/epub/epub.css: -------------------------------------------------------------------------------- 1 | /* syntax highlighting and coloring text in general */ 2 | 3 | /* Pygments with manni theme */ 4 | pre code.hll { background-color: #ffffcc } 5 | pre code.c { color: #0099FF; font-style: italic } /* Comment */ 6 | pre code.err { color: #AA0000 } /* Error */ 7 | pre code.k { color: #006699; font-weight: bold } /* Keyword */ 8 | pre code.o { color: #555555 } /* Operator */ 9 | pre code.cm { color: #35586C; font-style: italic } /* Comment.Multiline */ 10 | pre code.cp { color: #009999 } /* Comment.Preproc */ 11 | pre code.c1 { color: #35586C; font-style: italic } /* Comment.Single */ 12 | pre code.cs { color: #35586C; font-weight: bold; font-style: italic } /* Comment.Special */ 13 | pre code.gd { background-color: #FFCCCC } /* Generic.Deleted */ 14 | pre code.ge { font-style: italic } /* Generic.Emph */ 15 | pre code.gr { color: #FF0000 } /* Generic.Error */ 16 | pre code.gh { color: #003300; font-weight: bold } /* Generic.Heading */ 17 | pre code.gi { background-color: #CCFFCC } /* Generic.Inserted */ 18 | 19 | /* Overriding default manni style of #AAAAAA gray for Generic Output with #000000 black, which is better suited to ORM terminal output */ 20 | pre code.go { color: #000000 } /* Generic.Output */ 21 | 22 | pre code.gp { color: #000099; font-weight: bold } /* Generic.Prompt */ 23 | pre code.gs { font-weight: bold } /* Generic.Strong */ 24 | pre code.gu { color: #003300; font-weight: bold } /* Generic.Subheading */ 25 | pre code.gt { color: #99CC66 } /* Generic.Traceback */ 26 | pre code.kc { color: #006699; font-weight: bold } /* Keyword.Constant */ 27 | pre code.kd { color: #006699; font-weight: bold } /* Keyword.Declaration */ 28 | pre code.kn { color: #006699; font-weight: bold } /* Keyword.Namespace */ 29 | pre code.kp { color: #006699 } /* Keyword.Pseudo */ 30 | pre code.kr { color: #006699; font-weight: bold } /* Keyword.Reserved */ 31 | pre code.kt { color: #007788; font-weight: bold } /* Keyword.Type */ 32 | pre code.m { color: #FF6600 } /* Literal.Number */ 33 | pre code.s { color: #CC3300 } /* Literal.String */ 34 | pre code.na { color: #330099 } /* Name.Attribute */ 35 | pre code.nb { color: #336666 } /* Name.Builtin */ 36 | pre code.nc { color: #00AA88; font-weight: bold } /* Name.Class */ 37 | pre code.no { color: #336600 } /* Name.Constant */ 38 | pre code.nd { color: #9999FF } /* Name.Decorator */ 39 | pre code.ni { color: #999999; font-weight: bold } /* Name.Entity */ 40 | pre code.ne { color: #CC0000; font-weight: bold } /* Name.Exception */ 41 | pre code.nf { color: #CC00FF } /* Name.Function */ 42 | pre code.nl { color: #9999FF } /* Name.Label */ 43 | pre code.nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */ 44 | pre code.nt { color: #330099; font-weight: bold } /* Name.Tag */ 45 | pre code.nv { color: #003333 } /* Name.Variable */ 46 | pre code.ow { color: #000000; font-weight: bold } /* Operator.Word */ 47 | pre code.w { color: #bbbbbb } /* Text.Whitespace */ 48 | pre code.mf { color: #FF6600 } /* Literal.Number.Float */ 49 | pre code.mh { color: #FF6600 } /* Literal.Number.Hex */ 50 | pre code.mi { color: #FF6600 } /* Literal.Number.Integer */ 51 | pre code.mo { color: #FF6600 } /* Literal.Number.Oct */ 52 | pre code.sb { color: #CC3300 } /* Literal.String.Backtick */ 53 | pre code.sc { color: #CC3300 } /* Literal.String.Char */ 54 | pre code.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ 55 | pre code.s2 { color: #CC3300 } /* Literal.String.Double */ 56 | pre code.se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */ 57 | pre code.sh { color: #CC3300 } /* Literal.String.Heredoc */ 58 | pre code.si { color: #AA0000 } /* Literal.String.Interpol */ 59 | pre code.sx { color: #CC3300 } /* Literal.String.Other */ 60 | pre code.sr { color: #33AAAA } /* Literal.String.Regex */ 61 | pre code.s1 { color: #CC3300 } /* Literal.String.Single */ 62 | 63 | /* Overriding manni default yellow #FFCC33 with brown #AA6600, which is easier to read */ 64 | pre code.ss { color: #AA6600 } /* Literal.String.Symbol */ 65 | 66 | pre code.bp { color: #336666 } /* Name.Builtin.Pseudo */ 67 | pre code.vc { color: #003333 } /* Name.Variable.Class */ 68 | pre code.vg { color: #003333 } /* Name.Variable.Global */ 69 | pre code.vi { color: #003333 } /* Name.Variable.Instance */ 70 | pre code.il { color: #FF6600 } /* Literal.Number.Integer.Long */ 71 | 72 | /* Sanders's additions to manni */ 73 | pre code.g { color: #005500 } /* Generic */ 74 | pre code.l { color: #CC6600 } /* Literal */ 75 | pre code.l { color: #FF9900 } /* Literal.Date */ 76 | pre code.n { color: #000088 } /* Name */ 77 | pre code.nx { color: #000088 } /* Name.Other */ 78 | pre code.py { color: #9966FF } /* Name.Property */ 79 | pre code.p { color: #000000 } /* Punctuation */ 80 | pre code.x { color: #FF0066 } /* Other */ 81 | 82 | /* Chacon's additions to make command line look more like a command line */ 83 | pre[data-code-language="console"] { 84 | background: #ddd; 85 | padding: 10px; 86 | } 87 | pre[data-code-language="console"] code.go { 88 | color: #555; 89 | font-size: 1.0em; 90 | } 91 | pre[data-code-language="console"] code.gp { 92 | color: #009900; 93 | font-weight: bold; 94 | } 95 | -------------------------------------------------------------------------------- /theme/epub/epub.xsl: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /theme/epub/layout.html: -------------------------------------------------------------------------------- 1 | {{ doctype }} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {{ title }} 10 | 11 | 12 | {{ content }} 13 | 14 | 15 | -------------------------------------------------------------------------------- /theme/html/html.css: -------------------------------------------------------------------------------- 1 | /* syntax highlighting and coloring text in general */ 2 | 3 | /* Pygments with manni theme */ 4 | pre code.hll { background-color: #ffffcc } 5 | pre code.c { color: #0099FF; font-style: italic } /* Comment */ 6 | pre code.err { color: #AA0000 } /* Error */ 7 | pre code.k { color: #006699; font-weight: bold } /* Keyword */ 8 | pre code.o { color: #555555 } /* Operator */ 9 | pre code.cm { color: #35586C; font-style: italic } /* Comment.Multiline */ 10 | pre code.cp { color: #009999 } /* Comment.Preproc */ 11 | pre code.c1 { color: #35586C; font-style: italic } /* Comment.Single */ 12 | pre code.cs { color: #35586C; font-weight: bold; font-style: italic } /* Comment.Special */ 13 | pre code.gd { background-color: #FFCCCC } /* Generic.Deleted */ 14 | pre code.ge { font-style: italic } /* Generic.Emph */ 15 | pre code.gr { color: #FF0000 } /* Generic.Error */ 16 | pre code.gh { color: #003300; font-weight: bold } /* Generic.Heading */ 17 | pre code.gi { background-color: #CCFFCC } /* Generic.Inserted */ 18 | 19 | /* Overriding default manni style of #AAAAAA gray for Generic Output with #000000 black, which is better suited to ORM terminal output */ 20 | pre code.go { color: #000000 } /* Generic.Output */ 21 | 22 | pre code.gp { color: #000099; font-weight: bold } /* Generic.Prompt */ 23 | pre code.gs { font-weight: bold } /* Generic.Strong */ 24 | pre code.gu { color: #003300; font-weight: bold } /* Generic.Subheading */ 25 | pre code.gt { color: #99CC66 } /* Generic.Traceback */ 26 | pre code.kc { color: #006699; font-weight: bold } /* Keyword.Constant */ 27 | pre code.kd { color: #006699; font-weight: bold } /* Keyword.Declaration */ 28 | pre code.kn { color: #006699; font-weight: bold } /* Keyword.Namespace */ 29 | pre code.kp { color: #006699 } /* Keyword.Pseudo */ 30 | pre code.kr { color: #006699; font-weight: bold } /* Keyword.Reserved */ 31 | pre code.kt { color: #007788; font-weight: bold } /* Keyword.Type */ 32 | pre code.m { color: #FF6600 } /* Literal.Number */ 33 | pre code.s { color: #CC3300 } /* Literal.String */ 34 | pre code.na { color: #330099 } /* Name.Attribute */ 35 | pre code.nb { color: #336666 } /* Name.Builtin */ 36 | pre code.nc { color: #00AA88; font-weight: bold } /* Name.Class */ 37 | pre code.no { color: #336600 } /* Name.Constant */ 38 | pre code.nd { color: #9999FF } /* Name.Decorator */ 39 | pre code.ni { color: #999999; font-weight: bold } /* Name.Entity */ 40 | pre code.ne { color: #CC0000; font-weight: bold } /* Name.Exception */ 41 | pre code.nf { color: #CC00FF } /* Name.Function */ 42 | pre code.nl { color: #9999FF } /* Name.Label */ 43 | pre code.nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */ 44 | pre code.nt { color: #330099; font-weight: bold } /* Name.Tag */ 45 | pre code.nv { color: #003333 } /* Name.Variable */ 46 | pre code.ow { color: #000000; font-weight: bold } /* Operator.Word */ 47 | pre code.w { color: #bbbbbb } /* Text.Whitespace */ 48 | pre code.mf { color: #FF6600 } /* Literal.Number.Float */ 49 | pre code.mh { color: #FF6600 } /* Literal.Number.Hex */ 50 | pre code.mi { color: #FF6600 } /* Literal.Number.Integer */ 51 | pre code.mo { color: #FF6600 } /* Literal.Number.Oct */ 52 | pre code.sb { color: #CC3300 } /* Literal.String.Backtick */ 53 | pre code.sc { color: #CC3300 } /* Literal.String.Char */ 54 | pre code.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ 55 | pre code.s2 { color: #CC3300 } /* Literal.String.Double */ 56 | pre code.se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */ 57 | pre code.sh { color: #CC3300 } /* Literal.String.Heredoc */ 58 | pre code.si { color: #AA0000 } /* Literal.String.Interpol */ 59 | pre code.sx { color: #CC3300 } /* Literal.String.Other */ 60 | pre code.sr { color: #33AAAA } /* Literal.String.Regex */ 61 | pre code.s1 { color: #CC3300 } /* Literal.String.Single */ 62 | 63 | /* Overriding manni default yellow #FFCC33 with brown #AA6600, which is easier to read */ 64 | pre code.ss { color: #AA6600 } /* Literal.String.Symbol */ 65 | 66 | pre code.bp { color: #336666 } /* Name.Builtin.Pseudo */ 67 | pre code.vc { color: #003333 } /* Name.Variable.Class */ 68 | pre code.vg { color: #003333 } /* Name.Variable.Global */ 69 | pre code.vi { color: #003333 } /* Name.Variable.Instance */ 70 | pre code.il { color: #FF6600 } /* Literal.Number.Integer.Long */ 71 | 72 | /* Sanders's additions to manni */ 73 | pre code.g { color: #005500 } /* Generic */ 74 | pre code.l { color: #CC6600 } /* Literal */ 75 | pre code.l { color: #FF9900 } /* Literal.Date */ 76 | pre code.n { color: #000088 } /* Name */ 77 | pre code.nx { color: #000088 } /* Name.Other */ 78 | pre code.py { color: #9966FF } /* Name.Property */ 79 | pre code.p { color: #000000 } /* Punctuation */ 80 | pre code.x { color: #FF0066 } /* Other */ 81 | 82 | /* Chacon's additions to make command line look more like a command line */ 83 | pre[data-code-language="console"] { 84 | background: #ddd; 85 | padding: 10px; 86 | } 87 | pre[data-code-language="console"] code.go { 88 | color: #555; 89 | font-size: 1.0em; 90 | } 91 | pre[data-code-language="console"] code.gp { 92 | color: #009900; 93 | font-weight: bold; 94 | } 95 | -------------------------------------------------------------------------------- /theme/html/html.xsl: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /theme/mobi/mobi.xsl: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /theme/pdf/pdf.xsl: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /theme/pdf/pdf.xsl~: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | --------------------------------------------------------------------------------