├── .github └── workflows │ ├── pr-build.yml │ └── release-on-merge.yml ├── .gitignore ├── .travis.yml ├── A-git-in-other-environments.asc ├── B-embedding-git.asc ├── C-git-commands.asc ├── Gemfile ├── Gemfile.lock ├── LICENSE.asc ├── README.asc ├── Rakefile ├── TRANSLATION_NOTES.asc ├── atlas.json ├── book ├── 01-introduction │ └── sections │ │ ├── about-version-control.asc │ │ ├── command-line.asc │ │ ├── first-time-setup.asc │ │ ├── help.asc │ │ ├── history.asc │ │ ├── installing.asc │ │ └── what-is-git.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 │ │ ├── notes.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 │ └── sections │ │ ├── command-line.asc │ │ ├── jgit.asc │ │ └── libgit2.asc ├── contributors.asc ├── cover.html ├── cover.png ├── index.asc ├── introduction.asc ├── preface.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-getting-started.asc ├── ch02-git-basics-chapter.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 ├── 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 | 4 | # build artifacts 5 | progit.html 6 | progit.pdf 7 | progit.pdfmarks 8 | progit.epub 9 | progit-kf8.epub 10 | progit.mobi 11 | 12 | # vim objects 13 | *.swp 14 | 15 | # ide 16 | .idea 17 | 18 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | sudo: false 3 | git: 4 | depth: false 5 | cache: bundler 6 | before_install: 7 | - rm -f Gemfile.lock Gemfile Rakefile 8 | - wget https://raw.githubusercontent.com/progit/progit2-pub/master/Gemfile 9 | - wget https://raw.githubusercontent.com/progit/progit2-pub/master/Rakefile 10 | - bundle install 11 | script: bundle exec rake book:build 12 | after_success: bundle exec rake book:tag 13 | deploy: 14 | provider: releases 15 | file: 16 | - progit.epub 17 | - progit.mobi 18 | - progit.pdf 19 | skip_cleanup: true 20 | on: 21 | tags: true 22 | api-key: $GITHUB_API_TOKEN 23 | branches: 24 | only: 25 | - master 26 | - /^2\.1(\.\d+)+$/ 27 | 28 | addons: 29 | apt: 30 | packages: 31 | - epubcheck 32 | notifications: 33 | email: 34 | on_success: never 35 | on_failure: always 36 | -------------------------------------------------------------------------------- /A-git-in-other-environments.asc: -------------------------------------------------------------------------------- 1 | [#A-git-in-other-environments] 2 | [appendix] 3 | == Git in altri contesti 4 | 5 | Se hai letto tutto il libro avrai imparato tantissimo su come usare Git dalla riga di comando. 6 | Puoi lavorare con file locali, collegare il tuo repository ad altri in rete, e lavorare efficientemente con altre persone. 7 | Ma non è tutto qui; Git è normalmente parte di ecosistemi più grandi e non sempre il terminale è il modo migliore di usarlo. 8 | Ora daremo uno sguardo ad alcuni degli altri ambienti in cui Git è utile e come altre applicazioni (incluse le tue) funzionano con Git. 9 | 10 | include::book/A-git-in-other-environments/sections/guis.asc[] 11 | 12 | include::book/A-git-in-other-environments/sections/visualstudio.asc[] 13 | 14 | include::book/A-git-in-other-environments/sections/eclipse.asc[] 15 | 16 | 17 | include::book/A-git-in-other-environments/sections/bash.asc[] 18 | 19 | include::book/A-git-in-other-environments/sections/zsh.asc[] 20 | 21 | include::book/A-git-in-other-environments/sections/powershell.asc[] 22 | 23 | === Riassunto 24 | 25 | Hai imparato come controllare la forza di Git dagli strumenti che usi quotidianamente e come accedere ai repository di Git dai tuoi programmi. 26 | -------------------------------------------------------------------------------- /B-embedding-git.asc: -------------------------------------------------------------------------------- 1 | [#B-embedding-git] 2 | [appendix] 3 | == Embedding Git in your Applications 4 | 5 | If your application is for developers, chances are good that it could benefit from integration with source control. 6 | Even non-developer applications, such as document editors, could potentially benefit from version-control features, and Git's model works very well for many different scenarios. 7 | 8 | If you need to integrate Git with your application, you have essentially three choices: spawning a shell and using the Git command-line tool; Libgit2; and 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 | -------------------------------------------------------------------------------- /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 | 12 | gem 'coderay' 13 | gem 'pygments.rb' 14 | gem 'thread_safe' 15 | gem 'epubcheck' 16 | gem 'kindlegen' 17 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GIT 2 | remote: https://github.com/asciidoctor/asciidoctor-epub3 3 | revision: 76c0411690d101aa22d98bad75ffa647a4885647 4 | specs: 5 | asciidoctor-epub3 (1.5.0.alpha.8.dev) 6 | asciidoctor (~> 1.5.0) 7 | gepub (~> 0.6.9.2) 8 | thread_safe (~> 0.3.6) 9 | 10 | GEM 11 | remote: https://rubygems.org/ 12 | specs: 13 | Ascii85 (1.0.3) 14 | addressable (2.8.0) 15 | public_suffix (>= 2.0.2, < 5.0) 16 | afm (0.2.2) 17 | asciidoctor (1.5.6.1) 18 | asciidoctor-pdf (1.5.0.alpha.16) 19 | asciidoctor (>= 1.5.0) 20 | prawn (>= 1.3.0, < 2.3.0) 21 | prawn-icon (= 1.3.0) 22 | prawn-svg (>= 0.21.0, < 0.28.0) 23 | prawn-table (= 0.2.2) 24 | prawn-templates (>= 0.0.3, <= 0.1.1) 25 | safe_yaml (~> 1.0.4) 26 | thread_safe (~> 0.3.6) 27 | treetop (= 1.5.3) 28 | awesome_print (1.8.0) 29 | coderay (1.1.2) 30 | css_parser (1.6.0) 31 | addressable 32 | epubcheck (3.0.1) 33 | gepub (0.6.9.2) 34 | nokogiri (~> 1.6.1) 35 | rubyzip (>= 1.1.1) 36 | hashery (2.1.2) 37 | json (2.3.0) 38 | kindlegen (3.0.3) 39 | rake 40 | rubyzip 41 | mini_portile2 (2.1.0) 42 | multi_json (1.13.1) 43 | nokogiri (1.6.8.1) 44 | mini_portile2 (~> 2.1.0) 45 | pdf-core (0.7.0) 46 | pdf-reader (2.1.0) 47 | Ascii85 (~> 1.0.0) 48 | afm (~> 0.2.1) 49 | hashery (~> 2.0) 50 | ruby-rc4 51 | ttfunk 52 | polyglot (0.3.5) 53 | prawn (2.2.2) 54 | pdf-core (~> 0.7.0) 55 | ttfunk (~> 1.5) 56 | prawn-icon (1.3.0) 57 | prawn (>= 1.1.0, < 3.0.0) 58 | prawn-svg (0.27.1) 59 | css_parser (~> 1.3) 60 | prawn (>= 0.11.1, < 3) 61 | prawn-table (0.2.2) 62 | prawn (>= 1.3.0, < 3.0.0) 63 | prawn-templates (0.1.1) 64 | pdf-reader (~> 2.0) 65 | prawn (~> 2.2) 66 | public_suffix (4.0.6) 67 | pygments.rb (1.2.1) 68 | multi_json (>= 1.0.0) 69 | rake (12.3.3) 70 | ruby-rc4 (0.1.5) 71 | rubyzip (2.3.2) 72 | safe_yaml (1.0.4) 73 | thread_safe (0.3.6) 74 | treetop (1.5.3) 75 | polyglot (~> 0.3) 76 | ttfunk (1.5.1) 77 | 78 | PLATFORMS 79 | ruby 80 | 81 | DEPENDENCIES 82 | asciidoctor (= 1.5.6.1) 83 | asciidoctor-epub3! 84 | asciidoctor-pdf (= 1.5.0.alpha.16) 85 | awesome_print 86 | coderay 87 | epubcheck 88 | json 89 | kindlegen 90 | pygments.rb 91 | rake 92 | thread_safe 93 | 94 | BUNDLED WITH 95 | 1.16.1 96 | -------------------------------------------------------------------------------- /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, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. 2 | -------------------------------------------------------------------------------- /README.asc: -------------------------------------------------------------------------------- 1 | = Pro Git, Seconda Edizione, Italiano 2 | 3 | Benvenuto alla seconda edizione del manuale Pro Git. 4 | 5 | La versione online di questo libro la trovi all'indirizzo https://git-scm.com/book/it/v2 6 | 7 | Come per la prima edizione, anche la seconda edizione di Pro Git è rilasciata open source con licenza Creative Commons. 8 | 9 | Un paio di cose sono cambiate da quando la prima edizione fu resa open source. La prima è stato passare da Markdown al meraviglioso Asciidoc, come formato del testo del libro. Siamo anche passati ad usare la https://atlas.oreilly.com[piattaforma Atlas] della O'Reilly's per la generazione continua del libro. In questo modo i formati di libro più diffusi sono disponibili in tutte le lingue. 10 | 11 | Abbiamo anche deciso di mantenere le varie traduzioni in repository separati, piuttosto che in sottocartelle della versione inglese. Guarda la sezione Traduzioni per maggiori informazioni. 12 | 13 | == Contribuire 14 | 15 | Per segnalare e correggere errori o nuovi contenuti alla versione originale (in inglese) è necessario aprire una richiesta di "Pull" su https://github.com/progit/progit2[GitHub]. È comunque una buona prassi, prima di iniziare a fare qualcosa, https://github.com/progit/progit2/issues/new[aprire una nuova issue] per accettarti che il tuo lavoro verrà accettato. 16 | 17 | Correzioni e chiarimenti verranno accettati se i manutentori riconosceranno che migliorano il contenuto. Puoi aprire una issue così che possano capire il problema e se sia necessario risolverlo. 18 | 19 | Per maggiori informazioni fai riferimento al https://github.com/progit/progit2[repository in inglese] 20 | 21 | == Come generare il libro 22 | 23 | Ci sono due modi per generare e-book da questo codice. 24 | 25 | Quello più semplice è lasciarlo fare a noi. Un robot verifica tutte le nuove modifiche e produce automaticamente un libro disponibile per chiunque. 26 | 27 | Puoi trovare la traduzione in italiano anche su http://daftano.github.io/progit-it. Ci stiamo ancora lavorando, quindi non troverai subito tutto il testo in italiano, ma poco a poco lo completeremo. 28 | 29 | Quella originale, in inglese è invece su http://git-scm.com/book[] e maggiori informazioni sulle traduzioni disponibili le trovi su https://progit.org[]. 30 | 31 | L'altro modo per generare un e-book è di farlo manualmente con Asciidoctor. Se esegui i comandi seguenti dovresti ottenere file HTML, Epub, Mobi e PDF: 32 | 33 | ---- 34 | $ bundle install 35 | $ bundle exec rake book:build 36 | Converting to HTML... 37 | -- HTML output at progit.html 38 | Converting to EPub... 39 | -- Epub output at progit.epub 40 | Converting to Mobi (kf8)... 41 | -- Mobi output at progit.mobi 42 | Converting to PDF... 43 | -- PDF output at progit.pdf 44 | ---- 45 | 46 | Questi comandi usano i progetti `asciidoctor`, `asciidoctor-pdf` e `asciidoctor-epub`. 47 | 48 | == Versione italiana 49 | 50 | Se vuoi contribuire alla traduzione italiana qui di seguito trovi i passi da seguire: 51 | 52 | Segui il https://groups.google.com/forum/#!forum/progit-it[gruppo] dei traduttori italiani di Pro Git, facci sapere che vuoi contribuire alla traduzione italiana e, possibilmente, presentati. 53 | 54 | == Flusso di lavoro 55 | 56 | . Clona il https://github.com/daftano/progit2-it[repository italiano] e fai le tue modifiche. 57 | 58 | . Scrivi sul gruppo chiedendo come puoi contribuire o proponendo di prendere in carico qualcosa. Questo per evitare che più persone lavorino alla stessa cosa, e ritrovarci quindi con lavori duplicati. 59 | 60 | . Se possibile, crea branch tematici. Se fai una singola modifica potrebbe non essere necessario. 61 | 62 | . Quando le tue modifiche sono pronte per essere condivise, apri una Pull Request, per integrare il tuo lavoro con quello generale. 63 | 64 | == Qualche consiglio 65 | 66 | * Usa un italiano corretto, semplice e corrente. 67 | 68 | * Se hai dubbi su una traduzione, scrivi nel gruppo per chiedere chiarimenti o fai riferimento a una di queste risorse: 69 | 70 | ** http://tp.linux.it/buona_traduzione.html 71 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | namespace :book do 2 | desc 'build basic book formats' 3 | task :build do 4 | 5 | puts "Generating contributors list" 6 | `git shortlog -s --all| grep -v -E "(Straub|Chacon)" | cut -f 2- | column -c 120 > book/contributors.txt` 7 | 8 | puts "Converting to HTML..." 9 | `bundle exec asciidoctor progit.asc` 10 | puts " -- HTML output at progit.html" 11 | 12 | puts "Converting to EPub..." 13 | `bundle exec asciidoctor-epub3 progit.asc` 14 | puts " -- Epub output at progit.epub" 15 | 16 | # sh "epubcheck progit.epub" 17 | 18 | puts "Converting to Mobi (kf8)..." 19 | `bundle exec asciidoctor-epub3 -a ebook-format=kf8 progit.asc` 20 | puts " -- Mobi output at progit.mobi" 21 | 22 | puts "Converting to PDF... (this one takes a while)" 23 | `bundle exec asciidoctor-pdf progit.asc 2>/dev/null` 24 | puts " -- PDF output at progit.pdf" 25 | end 26 | 27 | desc 'convert book to asciidoctor compatibility' 28 | task:convert do 29 | #`cp -aR ../progit2/images .` 30 | #`sed -i -e 's!/images/!!' .gitignore` 31 | #`git add images` 32 | #`git rm -r book/*/images` 33 | 34 | chapters = [ 35 | ["01", "introduction" ], 36 | ["02", "git-basics" ], 37 | ["03", "git-branching" ], 38 | ["04", "git-server" ], 39 | ["05", "distributed-git" ], 40 | ["06", "github" ], 41 | ["07", "git-tools" ], 42 | ["08", "customizing-git" ], 43 | ["09", "git-and-other-scms" ], 44 | ["10", "git-internals" ], 45 | ["A", "git-in-other-environments" ], 46 | ["B", "embedding-git" ], 47 | ["C", "git-commands" ] 48 | ] 49 | chaps =[ 50 | ["C", "git-commands" ] 51 | ] 52 | 53 | crossrefs = {} 54 | chapters.each { | num, title | 55 | if num =~ /[ABC]/ 56 | chap = "#{num}-#{title}" 57 | else 58 | chap = "ch#{num}-#{title}" 59 | end 60 | Dir[File.join ["book","#{num}-#{title}" , "sections","*.asc"]].map { |filename| 61 | File.read(filename).scan(/\[\[(.*?)\]\]/) 62 | }.flatten.each { |ref| 63 | crossrefs[ref] = "#{chap}" 64 | } 65 | } 66 | 67 | headrefs = {} 68 | chapters.each { | num, title | 69 | if num =~ /[ABC]/ 70 | chap = "#{num}-#{title}" 71 | else 72 | chap = "ch#{num}-#{title}" 73 | end 74 | Dir[File.join ["book","#{num}-#{title}", "*.asc"]].map { |filename| 75 | File.read(filename).scan(/\[\[(.*?)\]\]/) 76 | }.flatten.each { |ref| 77 | headrefs[ref] = "#{chap}" 78 | } 79 | } 80 | 81 | # transform all internal cross refs 82 | chapters.each { | num, title | 83 | if num =~ /[ABC]/ 84 | chap = "#{num}-#{title}" 85 | else 86 | chap = "ch#{num}-#{title}" 87 | end 88 | files = Dir[File.join ["book","#{num}-#{title}" , "sections","*.asc"]] + 89 | Dir[File.join ["book","#{num}-#{title}" ,"1-*.asc"]] 90 | p files 91 | files.each { |filename| 92 | content = File.read(filename) 93 | new_contents = content.gsub(/\[\[(.*?)\]\]/, '[[r\1]]').gsub(/<<(.*?)>>/) { |match| 94 | ch = crossrefs[$1] 95 | h = headrefs[$1] 96 | # p " #{match} -> #{ch}, #{h}" 97 | if ch 98 | # if local do not add the file 99 | if ch==chap 100 | "<>" 101 | else 102 | "<<#{ch}#r#{$1}>>" 103 | end 104 | elsif h 105 | if h==chap 106 | "<<#{chap}>>" 107 | else 108 | "<<#{h}##{h}>>" 109 | end 110 | end 111 | } 112 | File.open(filename, "w") {|file| file.puts new_contents } 113 | } 114 | } 115 | 116 | chapters.each { | num, title | 117 | if num =~ /[ABC]/ 118 | chap = "#{num}-#{title}" 119 | else 120 | chap = "ch#{num}-#{title}" 121 | end 122 | Dir[File.join ["book","#{num}-#{title}" ,"1*.asc"]].map { |filename| 123 | content = File.read (filename) 124 | new_contents = content.gsub(/include::(.*?)asc/) {|match| 125 | "include::book/#{num}-#{title}/#{$1}asc"} 126 | File.open("#{chap}.asc", "w") {|file| 127 | file.puts "[##{chap}]\n" 128 | file.puts new_contents } 129 | } 130 | } 131 | end 132 | end 133 | 134 | 135 | 136 | task :default => "book:build" 137 | -------------------------------------------------------------------------------- /TRANSLATION_NOTES.asc: -------------------------------------------------------------------------------- 1 | == Translation Notes 2 | 3 | After forking this repository to translate the work, this file is where the notes for coordinating the translation work would go. Things like standardizing on words and expressions so that the work is consistent or notes on how the contributing process is to be handled. 4 | 5 | As a translation maintainer, also feel free to modify or completely rewrite the README file to contain instructions specific to your translation. 6 | 7 | === Translation Status 8 | 9 | As the work is translated, please update the `status.json` file to indicate the rough percentage complete each file is. This will be shown on various pages to let people know how much work is left to be done. 10 | -------------------------------------------------------------------------------- /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": false, 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 riga di comando 2 | 3 | Ci sono molti modi diversi di usare Git. 4 | C'è la linea di comando originale e ci sono molte interfacce grafiche ciascuna con le proprie capacità. 5 | Per questo manuale useremo la riga di comando di Git. 6 | Principalmente perché la riga di comando è l'unico posto dove puoi eseguire *tutti* i comandi di Git. Molte interfacce grafiche, per semplificare, implementano solo una parte delle funzionalità di Git. 7 | Se sai cosa fare sulla riga di comando, molto probabilmente saprai usare anche l'interfaccia grafica, ma non è necessariamente vero l'opposto. 8 | Inoltre l'interfaccia grafica è qualosa che rispecchia un gusto personale, mentre _tutti_ gli utenti avranno installata e disponibile la riga di comando. 9 | 10 | Quindi il requisito minimo che ci aspettiamo tu abbia è saper aprire il Terminale in Mac o il Prompt dei comandi o la Powershell in Windows. 11 | Se non sai di cosa stiamo parlando, dovresti fermarti qui e fare una ricerca veloce su come fare, in modo che possa seguire il resto degli esempi e delle descrizioni di questo manuale. 12 | -------------------------------------------------------------------------------- /book/01-introduction/sections/first-time-setup.asc: -------------------------------------------------------------------------------- 1 | [[r_first_time]] 2 | === First-Time Git Setup 3 | 4 | Now that you have Git on your system, you'll want to do a few things to customize your Git environment. 5 | You should have to do these things only once on any given computer; they'll stick around between upgrades. 6 | You can also change them at any time by running through the commands again. 7 | 8 | Git comes with a tool called `git config` that lets you get and set configuration variables that control all aspects of how Git looks and operates.(((git commands, config))) 9 | These variables can be stored in three different places: 10 | 11 | 1. `/etc/gitconfig` file: Contains values for every user on the system and all their repositories. 12 | If you pass the option `--system` to `git config`, it reads and writes from this file specifically. 13 | 2. `~/.gitconfig` or `~/.config/git/config` file: Specific to your user. 14 | You can make Git read and write to this file specifically by passing the `--global` option. 15 | 3. `config` file in the Git directory (that is, `.git/config`) of whatever repository you're currently using: Specific to that single repository. 16 | 17 | Each level overrides values in the previous level, so values in `.git/config` trump those in `/etc/gitconfig`. 18 | 19 | On Windows systems, Git looks for the `.gitconfig` file in the `$HOME` directory (`C:\Users\$USER` for most people). 20 | It also still looks for `/etc/gitconfig`, although it's relative to the MSys root, which is wherever you decide to install Git on your Windows system when you run the installer. 21 | 22 | ==== Your Identity 23 | 24 | The first thing you should do when you install Git is to set your user name and e-mail address. 25 | This is important because every Git commit uses this information, and it's immutably baked into the commits you start creating: 26 | 27 | [source,console] 28 | ---- 29 | $ git config --global user.name "John Doe" 30 | $ git config --global user.email johndoe@example.com 31 | ---- 32 | 33 | Again, you need to do this only once if you pass the `--global` option, because then Git will always use that information for anything you do on that system. 34 | If you want to override this with a different name or e-mail address for specific projects, you can run the command without the `--global` option when you're in that project. 35 | 36 | Many of the GUI tools will help you do this when you first run them. 37 | 38 | ==== Your Editor 39 | 40 | Now that your identity is set up, you can configure the default text editor that will be used when Git needs you to type in a message. 41 | If not configured, Git uses your system's default editor, which is generally Vim. 42 | If you want to use a different text editor, such as Emacs, you can do the following: 43 | 44 | [source,console] 45 | ---- 46 | $ git config --global core.editor emacs 47 | ---- 48 | 49 | [WARNING] 50 | ==== 51 | Vim and Emacs are popular text editors often used by developers on Unix based systems like Linux and Mac. If you are not familiar with either of these editors or are on a Windows system, you may need to search for instructions for how to set up your favorite editor with Git. 52 | If you don't set an editor like this and you don't know what Vim or Emacs are, you will likely get into a really confusing state when they are launched. 53 | ==== 54 | 55 | ==== Checking Your Settings 56 | 57 | If you want to check your settings, you can use the `git config --list` command to list all the settings Git can find at that point: 58 | 59 | [source,console] 60 | ---- 61 | $ git config --list 62 | user.name=John Doe 63 | user.email=johndoe@example.com 64 | color.status=auto 65 | color.branch=auto 66 | color.interactive=auto 67 | color.diff=auto 68 | ... 69 | ---- 70 | 71 | You may see keys more than once, because Git reads the same key from different files (`/etc/gitconfig` and `~/.gitconfig`, for example). 72 | In this case, Git uses the last value for each unique key it sees. 73 | 74 | You can also check what Git thinks a specific key's value is by typing `git config `:(((git commands, config))) 75 | 76 | [source,console] 77 | ---- 78 | $ git config user.name 79 | John Doe 80 | ---- 81 | -------------------------------------------------------------------------------- /book/01-introduction/sections/help.asc: -------------------------------------------------------------------------------- 1 | [[r_git_help]] 2 | === Chiedere aiuto 3 | 4 | Se dovessi avere bisogno di aiuto durante l'uso di Git, ci sono tre modi per visualizzare la pagina di aiuto (pagina man) di ciascun comando di Git, direttamente dal manuale. 5 | 6 | [source,console] 7 | ---- 8 | $ git help 9 | $ git --help 10 | $ man git- 11 | ---- 12 | 13 | Puoi, per esempio, leggere la pagina man del comando config eseguendo(((git commands, help))) 14 | 15 | [source,console] 16 | ---- 17 | $ git help config 18 | ---- 19 | 20 | Questi comandi sono belli perché puoi accedervi da qualsiasi posto, anche se non sei collegato 21 | Se le pagine del manuale e questo libro non fossero necessari e hai bisogno di un aiuto di una persona, puoi provare nei canali irc `#git` o `#github` del server Freenode IRC (irc.freenode.net). 22 | In questi canali ci sono normalmente centinaia di persone esperte di Git che sono spesso disponibili ad aiutare gli altri.(((IRC))) 23 | -------------------------------------------------------------------------------- /book/01-introduction/sections/history.asc: -------------------------------------------------------------------------------- 1 | //// 2 | === A Short History of Git 3 | //// 4 | 5 | 6 | === Una Breve Storia di Git 7 | 8 | //// 9 | As with many great things in life, Git began with a bit of creative destruction and fiery controversy. 10 | 11 | The Linux kernel is an open source software project of fairly large scope.(((Linux))) 12 | For most of the lifetime of the Linux kernel maintenance (1991–2002), changes to the software were passed around as patches and archived files. 13 | In 2002, the Linux kernel project began using a proprietary DVCS called BitKeeper.(((BitKeeper))) 14 | //// 15 | 16 | 17 | Come per molte grandi cose della vita, Git è nato con un po' di distruzione creativa e polemiche infuocate. 18 | Il kernel di Linux è un progetto software open source di grande portata.(((Linux))) 19 | Per buona parte del tempo (1991-2002) della manutenzione del kernel Linux le modifiche al software venivano passate sotto forma di patch e file compressi. 20 | Nel 2002, il progetto del kernel Linux iniziò ad utilizzare un sistema DVCS proprietario chiamato BitKeeper.(((BitKeeper))) 21 | 22 | //// 23 | In 2005, the relationship between the community that developed the Linux kernel and the commercial company that developed BitKeeper broke down, and the tool's free-of-charge status was revoked. 24 | This prompted the Linux development community (and in particular Linus Torvalds, the creator of Linux) to develop their own tool based on some of the lessons they learned while using BitKeeper.(((Linus Torvalds))) 25 | Some of the goals of the new system were as follows: 26 | //// 27 | 28 | 29 | Nel 2005 il rapporto tra la comunità che sviluppa il kernel Linux e la società commerciale che aveva sviluppato BitKeeper si ruppe, e fu revocato l'uso gratuito di BitKeeper. 30 | Ciò indusse la comunità di sviluppo di Linux (e in particolare Linus Torvalds, il creatore di Linux) a sviluppare uno strumento proprio, basandosi su alcune delle lezioni apprese durante l'utilizzo di BitKeeper.(((Linus Torvalds))) 31 | Alcuni degli obiettivi del nuovo sistema erano i seguenti: 32 | 33 | //// 34 | * Speed 35 | * Simple design 36 | * Strong support for non-linear development (thousands of parallel branches) 37 | * Fully distributed 38 | * Able to handle large projects like the Linux kernel efficiently (speed and data size) 39 | 40 | Since its birth in 2005, Git has evolved and matured to be easy to use and yet retain these initial qualities. 41 | It's amazingly fast, it's very efficient with large projects, and it has an incredible branching system for non-linear development (See <>). 42 | //// 43 | 44 | * Velocità 45 | * Design semplice 46 | * Ottimo supporto allo sviluppo non-lineare (migliaia di rami paralleli) 47 | * Completamente distribuito 48 | * Capacità di gestire, in modo efficiente (velocità e dimensione dei dati), grandi progetti come il kernel Linux 49 | 50 | Fin dalla sua nascita nel 2005 Git si è evoluto e maturato per essere facile da usare e tuttora mantiene le sue qualità iniziali. 51 | È incredibilmente veloce, è molto efficiente con progetti grandi e ha un incredibile sistema di ramificazioni, per lo sviluppo non lineare (Vedi <>). 52 | -------------------------------------------------------------------------------- /book/01-introduction/sections/installing.asc: -------------------------------------------------------------------------------- 1 | === Installing Git 2 | 3 | Before you start using Git, you have to make it available on your computer. 4 | Even if it's already installed, it's probably a good idea to update to the latest version. 5 | You can either install it as a package or via another installer, or download the source code and compile it yourself. 6 | 7 | [NOTE] 8 | ==== 9 | This book was written using Git version *2.0.0*. Though most of the commands we use should work even in ancient versions of Git, some of them might not or might act slightly differently if you're using an older version. Since Git is quite excellent at preserving backwards compatibility, any version after 2.0 should work just fine. 10 | ==== 11 | 12 | ==== Installing on Linux 13 | 14 | (((Linux, installing))) 15 | If you want to install Git on Linux via a binary installer, you can generally do so through the basic package-management tool that comes with your distribution. 16 | If you're on Fedora for example, you can use yum: 17 | 18 | $ yum install git 19 | 20 | If you're on a Debian-based distribution like Ubuntu, try apt-get: 21 | 22 | $ apt-get install git 23 | 24 | For more options, there are instructions for installing on several different Unix flavors on the Git website, at http://git-scm.com/download/linux[]. 25 | 26 | ==== Installing on Mac 27 | 28 | (((Mac, installing))) 29 | There are several ways to install Git on a Mac. 30 | The easiest is probably to install the Xcode Command Line Tools.(((Xcode))) 31 | On Mavericks (10.9) or above you can do this simply by trying to run 'git' from the Terminal the very first time. 32 | If you don't have it installed already, it will prompt you to install it. 33 | 34 | If you want a more up to date version, you can also install it via a binary installer. 35 | An OSX Git installer is maintained and available for download at the Git website, at http://git-scm.com/download/mac[]. 36 | 37 | .Git OS X Installer. 38 | image::images/git-osx-installer.png[Git OS X installer.] 39 | 40 | You can also install it as part of the GitHub for Mac install. 41 | Their GUI Git tool has an option to install command line tools as well. 42 | You can download that tool from the GitHub for Mac website, at http://mac.github.com[]. 43 | 44 | ==== Installing on Windows 45 | 46 | There are also a few ways to install Git on Windows.(((Windows, installing))) 47 | The most official build is available for download on the Git website. 48 | Just go to http://git-scm.com/download/win[] and the download will start automatically. 49 | Note that this is a project called Git for Windows (also called msysGit), which is separate from Git itself; for more information on it, go to http://msysgit.github.io/[]. 50 | 51 | Another easy way to get Git installed is by installing GitHub for Windows. 52 | The installer includes a command line version of Git as well as the GUI. 53 | It also works well with Powershell, and sets up solid credential caching and sane CRLF settings.(((Powershell)))(((CRLF)))(((credential caching))) 54 | We'll learn more about those things a little later, but suffice it to say they're things you want. 55 | You can download this from the GitHub for Windows website, at http://windows.github.com[]. 56 | 57 | 58 | ==== Installing from Source 59 | 60 | Some people may instead find it useful to install Git from source, because you'll get the most recent version. 61 | The binary installers tend to be a bit behind, though as Git has matured in recent years, this has made less of a difference. 62 | 63 | If you do want to install Git from source, you need to have the following libraries that Git depends on: curl, zlib, openssl, expat, and libiconv. 64 | For example, if you're on a system that has yum (such as Fedora) or apt-get (such as a Debian based system), you can use one of these commands to install all of the dependencies: 65 | 66 | $ yum install curl-devel expat-devel gettext-devel \ 67 | openssl-devel zlib-devel 68 | 69 | $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ 70 | libz-dev libssl-dev 71 | 72 | When you have all the necessary dependencies, you can go ahead and grab the latest tagged release tarball from several places. 73 | You can get it via the Kernel.org site, at https://www.kernel.org/pub/software/scm/git[], or the mirror on the GitHub web site, at https://github.com/git/git/releases[]. 74 | It's generally a little clearer what the latest version is on the GitHub page, but the kernel.org page also has release signatures if you want to verify your download. 75 | 76 | Then, compile and install: 77 | 78 | $ tar -zxf git-1.9.1.tar.gz 79 | $ cd git-1.9.1 80 | $ make configure 81 | $ ./configure --prefix=/usr 82 | $ make all doc info 83 | $ sudo make install install-doc install-html install-info 84 | 85 | After this is done, you can also get Git via Git itself for updates: 86 | 87 | $ git clone git://git.kernel.org/pub/scm/git/git.git 88 | -------------------------------------------------------------------------------- /book/02-git-basics/sections/aliases.asc: -------------------------------------------------------------------------------- 1 | [[r_git_aliases]] 2 | === Git Aliases 3 | 4 | (((aliases))) 5 | Before we finish this chapter on basic Git, there's just one little tip that can make your Git experience simpler, easier, and more familiar: aliases. 6 | We won't refer to them or assume you've used them later in the book, but you should probably know how to use them. 7 | 8 | Git doesn't automatically infer your command if you type it in partially. 9 | If you don't want to type the entire text of each of the Git commands, you can easily set up an alias for each command using `git config`.(((git commands, config))) 10 | Here are a couple of examples you may want to set up: 11 | 12 | [source,console] 13 | ---- 14 | $ git config --global alias.co checkout 15 | $ git config --global alias.br branch 16 | $ git config --global alias.ci commit 17 | $ git config --global alias.st status 18 | ---- 19 | 20 | This means that, for example, instead of typing `git commit`, you just need to type `git ci`. 21 | As you go on using Git, you'll probably use other commands frequently as well; don't hesitate to create new aliases. 22 | 23 | This technique can also be very useful in creating commands that you think should exist. 24 | For example, to correct the usability problem you encountered with unstaging a file, you can add your own unstage alias to Git: 25 | 26 | [source,console] 27 | ---- 28 | $ git config --global alias.unstage 'reset HEAD --' 29 | ---- 30 | 31 | This makes the following two commands equivalent: 32 | 33 | [source,console] 34 | ---- 35 | $ git unstage fileA 36 | $ git reset HEAD fileA 37 | ---- 38 | 39 | This seems a bit clearer. 40 | It's also common to add a `last` command, like this: 41 | 42 | [source,console] 43 | ---- 44 | $ git config --global alias.last 'log -1 HEAD' 45 | ---- 46 | 47 | This way, you can see the last commit easily: 48 | 49 | [source,console] 50 | ---- 51 | $ git last 52 | commit 66938dae3329c7aebe598c2246a8e6af90d04646 53 | Author: Josh Goebel 54 | Date: Tue Aug 26 19:48:51 2008 +0800 55 | 56 | test for current head 57 | 58 | Signed-off-by: Scott Chacon 59 | ---- 60 | 61 | As you can tell, Git simply replaces the new command with whatever you alias it for. 62 | However, maybe you want to run an external command, rather than a Git subcommand. 63 | In that case, you start the command with a `!` character. 64 | This is useful if you write your own tools that work with a Git repository. 65 | We can demonstrate by aliasing `git visual` to run `gitk`: 66 | 67 | [source,console] 68 | ---- 69 | $ git config --global alias.visual "!gitk" 70 | ---- 71 | -------------------------------------------------------------------------------- /book/02-git-basics/sections/getting-a-repository.asc: -------------------------------------------------------------------------------- 1 | [[r_getting_a_repo]] 2 | === Getting a Git Repository 3 | 4 | You can get a Git project using two main approaches. 5 | The first takes an existing project or directory and imports it into Git. 6 | The second clones an existing Git repository from another server. 7 | 8 | ==== Initializing a Repository in an Existing Directory 9 | 10 | If you're starting to track an existing project in Git, you need to go to the project's directory and type 11 | 12 | [source,console] 13 | ---- 14 | $ git init 15 | ---- 16 | 17 | This creates a new subdirectory named `.git` that contains all of your necessary repository files – a Git repository skeleton. 18 | At this point, nothing in your project is tracked yet. 19 | (See <> for more information about exactly what files are contained in the `.git` directory you just created.)(((git commands, init))) 20 | 21 | If you want to start version-controlling existing files (as opposed to an empty directory), you should probably begin tracking those files and do an initial commit. 22 | You can accomplish that with a few `git add` commands that specify the files you want to track, followed by a `git commit`: 23 | 24 | [source,console] 25 | ---- 26 | $ git add *.c 27 | $ git add LICENSE 28 | $ git commit -m 'initial project version' 29 | ---- 30 | 31 | We'll go over what these commands do in just a minute. 32 | At this point, you have a Git repository with tracked files and an initial commit. 33 | 34 | [[r_git_cloning]] 35 | ==== Cloning an Existing Repository 36 | 37 | If you want to get a copy of an existing Git repository – for example, a project you'd like to contribute to – the command you need is `git clone`. 38 | If you're familiar with other VCS systems such as Subversion, you'll notice that the command is "clone" and not "checkout". 39 | This is an important distinction – instead of getting just a working copy, Git receives a full copy of nearly all data that the server has. 40 | Every version of every file for the history of the project is pulled down by default when you run `git clone`. 41 | In fact, if your server disk gets corrupted, you can often use nearly any of the clones on any client to set the server back to the state it was in when it was cloned (you may lose some server-side hooks and such, but all the versioned data would be there – see <> for more details). 42 | 43 | You clone a repository with `git clone [url]`.(((git commands, clone))) 44 | For example, if you want to clone the Git linkable library called libgit2, you can do so like this: 45 | 46 | [source,console] 47 | ---- 48 | $ git clone https://github.com/libgit2/libgit2 49 | ---- 50 | 51 | That creates a directory named ``libgit2'', initializes a `.git` directory inside it, pulls down all the data for that repository, and checks out a working copy of the latest version. 52 | If you go into the new `libgit2` directory, you'll see the project files in there, ready to be worked on or used. 53 | If you want to clone the repository into a directory named something other than ``libgit2'', you can specify that as the next command-line option: 54 | 55 | [source,console] 56 | ---- 57 | $ git clone https://github.com/libgit2/libgit2 mylibgit 58 | ---- 59 | 60 | That command does the same thing as the previous one, but the target directory is called `mylibgit`. 61 | 62 | Git has a number of different transfer protocols you can use. 63 | The previous example uses the `https://` protocol, but you may also see `git://` or `user@server:path/to/repo.git`, which uses the SSH transfer protocol. 64 | <> will introduce all of the available options the server can set up to access your Git repository and the pros and cons of each. 65 | -------------------------------------------------------------------------------- /book/03-git-branching/sections/branch-management.asc: -------------------------------------------------------------------------------- 1 | [[r_branch_management]] 2 | === Branch Management 3 | 4 | (((branches, managing))) 5 | Now that you've created, merged, and deleted some branches, let's look at some branch-management tools that will come in handy when you begin using branches all the time. 6 | 7 | The `git branch` command does more than just create and delete branches.(((git commands, branch))) 8 | If you run it with no arguments, you get a simple listing of your current branches: 9 | 10 | [source,console] 11 | ---- 12 | $ git branch 13 | iss53 14 | * master 15 | testing 16 | ---- 17 | 18 | Notice the `*` character that prefixes the `master` branch: it indicates the branch that you currently have checked out (i.e., the branch that `HEAD` points to). 19 | This means that if you commit at this point, the `master` branch will be moved forward with your new work. 20 | To see the last commit on each branch, you can run `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 | The useful `--merged` and `--no-merged` options can filter this list to branches that you have or have not yet merged into the branch you're currently on. 31 | To see which branches are already merged into the branch you're on, you can run `git branch --merged`: 32 | 33 | [source,console] 34 | ---- 35 | $ git branch --merged 36 | iss53 37 | * master 38 | ---- 39 | 40 | Because you already merged in `iss53` earlier, you see it in your list. 41 | Branches on this list without the `*` in front of them are generally fine to delete with `git branch -d`; you've already incorporated their work into another branch, so you're not going to lose anything. 42 | 43 | To see all the branches that contain work you haven't yet merged in, you can run `git branch --no-merged`: 44 | 45 | [source,console] 46 | ---- 47 | $ git branch --no-merged 48 | testing 49 | ---- 50 | 51 | This shows your other branch. 52 | Because it contains work that isn't merged in yet, trying to delete it with `git branch -d` will fail: 53 | 54 | [source,console] 55 | ---- 56 | $ git branch -d testing 57 | error: The branch 'testing' is not fully merged. 58 | If you are sure you want to delete it, run 'git branch -D testing'. 59 | ---- 60 | 61 | If you really do want to delete the branch and lose that work, you can force it with `-D`, as the helpful message points out. 62 | -------------------------------------------------------------------------------- /book/04-git-server/sections/generating-ssh-key.asc: -------------------------------------------------------------------------------- 1 | [[r_generate_ssh_key]] 2 | === Generating Your SSH Public Key 3 | 4 | (((SSH keys))) 5 | That being said, many Git servers authenticate using SSH public keys. 6 | In order to provide a public key, each user in your system must generate one if they don't already have one. 7 | This process is similar across all operating systems. 8 | First, you should check to make sure you don't already have a key. 9 | By default, a user's SSH keys are stored in that user's `~/.ssh` directory. 10 | You can easily check to see if you have a key already by going to that directory and listing the contents: 11 | 12 | [source,console] 13 | ---- 14 | $ cd ~/.ssh 15 | $ ls 16 | authorized_keys2 id_dsa known_hosts 17 | config id_dsa.pub 18 | ---- 19 | 20 | You're looking for a pair of files named something like `id_dsa` or `id_rsa` and a matching file with a `.pub` extension. 21 | The `.pub` file is your public key, and the other file is your private key. 22 | If you don't have these files (or you don't even have a `.ssh` directory), you can create them by running a program called `ssh-keygen`, which is provided with the SSH package on Linux/Mac systems and comes with the MSysGit package on Windows: 23 | 24 | [source,console] 25 | ---- 26 | $ ssh-keygen 27 | Generating public/private rsa key pair. 28 | Enter file in which to save the key (/home/schacon/.ssh/id_rsa): 29 | Created directory '/home/schacon/.ssh'. 30 | Enter passphrase (empty for no passphrase): 31 | Enter same passphrase again: 32 | Your identification has been saved in /home/schacon/.ssh/id_rsa. 33 | Your public key has been saved in /home/schacon/.ssh/id_rsa.pub. 34 | The key fingerprint is: 35 | d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local 36 | ---- 37 | 38 | First it confirms where you want to save the key (`.ssh/id_rsa`), and then it asks twice for a passphrase, which you can leave empty if you don't want to type a password when you use the key. 39 | 40 | Now, each user that does this has to send their public key to you or whoever is administrating the Git server (assuming you're using an SSH server setup that requires public keys). 41 | All they have to do is copy the contents of the `.pub` file and e-mail it. 42 | The public keys look something like this: 43 | 44 | [source,console] 45 | ---- 46 | $ cat ~/.ssh/id_rsa.pub 47 | ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU 48 | GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3 49 | Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA 50 | t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En 51 | mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx 52 | NrRFi9wrf+M7Q== schacon@mylaptop.local 53 | ---- 54 | 55 | For a more in-depth tutorial on creating an SSH key on multiple operating systems, see the GitHub guide on SSH keys at https://help.github.com/articles/generating-ssh-keys[]. 56 | -------------------------------------------------------------------------------- /book/04-git-server/sections/git-daemon.asc: -------------------------------------------------------------------------------- 1 | === Git Daemon 2 | 3 | (((serving repositories, git protocol))) 4 | Next we'll set up a daemon serving repositories over the ``Git'' protocol. This is common choice for fast, unauthenticated access to your Git data. Remember that since it's not an authenticated service, anything you serve over this protocol is public within it's network. 5 | 6 | If you're running this on a server outside your firewall, it should only be used for projects that are publicly visible to the world. 7 | If the server you're running it on is inside your firewall, you might use it for projects that a large number of people or computers (continuous integration or build servers) have read-only access to, when you don't want to have to add an SSH key for each. 8 | 9 | In any case, the Git protocol is relatively easy to set up. 10 | Basically, you need to run this command in a daemonized manner:(((git commands, daemon))) 11 | 12 | [source,console] 13 | ---- 14 | git daemon --reuseaddr --base-path=/opt/git/ /opt/git/ 15 | ---- 16 | 17 | `--reuseaddr` allows the server to restart without waiting for old connections to time out, the `--base-path` option allows people to clone projects without specifying the entire path, and the path at the end tells the Git daemon where to look for repositories to export. 18 | If you're running a firewall, you'll also need to punch a hole in it at port 9418 on the box you're setting this up on. 19 | 20 | You can daemonize this process a number of ways, depending on the operating system you're running. 21 | On an Ubuntu machine, you can use an Upstart script. 22 | So, in the following file 23 | 24 | [source,console] 25 | ---- 26 | /etc/event.d/local-git-daemon 27 | ---- 28 | 29 | you put this script: 30 | 31 | [source,console] 32 | ---- 33 | start on startup 34 | stop on shutdown 35 | exec /usr/bin/git daemon \ 36 | --user=git --group=git \ 37 | --reuseaddr \ 38 | --base-path=/opt/git/ \ 39 | /opt/git/ 40 | respawn 41 | ---- 42 | 43 | For security reasons, it is strongly encouraged to have this daemon run as a user with read-only permissions to the repositories – you can easily do this by creating a new user 'git-ro' and running the daemon as them. 44 | For the sake of simplicity we'll simply run it as the same 'git' user that Gitosis is running as. 45 | 46 | When you restart your machine, your Git daemon will start automatically and respawn if it goes down. 47 | To get it running without having to reboot, you can run this: 48 | 49 | [source,console] 50 | ---- 51 | initctl start local-git-daemon 52 | ---- 53 | 54 | On other systems, you may want to use `xinetd`, a script in your `sysvinit` system, or something else – as long as you get that command daemonized and watched somehow. 55 | 56 | Next, you have to tell Git which repositories to allow unauthenticated Git server-based access to. You can do this in each repository by creating a file name `git-daemon-export-ok`. 57 | 58 | [source,console] 59 | ---- 60 | $ cd /path/to/project.git 61 | $ touch git-daemon-export-ok 62 | ---- 63 | 64 | The presence of that file tells Git that it's OK to serve this project without authentication. 65 | -------------------------------------------------------------------------------- /book/04-git-server/sections/gitweb.asc: -------------------------------------------------------------------------------- 1 | === GitWeb 2 | 3 | (((serving repositories, GitWeb)))(((GitWeb))) 4 | Now that you have basic read/write and read-only access to your project, you may want to set up a simple web-based visualizer. 5 | Git comes with a CGI script called GitWeb that is sometimes used for this. 6 | 7 | [[rgitweb]] 8 | .The GitWeb web-based user interface. 9 | image::images/git-instaweb.png[The GitWeb web-based user interface.] 10 | 11 | If you want to check out what GitWeb would look like for your project, Git comes with a command to fire up a temporary instance if you have a lightweight server on your system like `lighttpd` or `webrick`. 12 | On Linux machines, `lighttpd` is often installed, so you may be able to get it to run by typing `git instaweb` in your project directory. 13 | If you're running a Mac, Leopard comes preinstalled with Ruby, so `webrick` may be your best bet. 14 | To start `instaweb` with a non-lighttpd handler, you can run it with the `--httpd` option.(((git commands, instaweb))) 15 | 16 | [source,console] 17 | ---- 18 | $ git instaweb --httpd=webrick 19 | [2009-02-21 10:02:21] INFO WEBrick 1.3.1 20 | [2009-02-21 10:02:21] INFO ruby 1.8.6 (2008-03-03) [universal-darwin9.0] 21 | ---- 22 | 23 | That starts up an HTTPD server on port 1234 and then automatically starts a web browser that opens on that page. 24 | It's pretty easy on your part. 25 | When you're done and want to shut down the server, you can run the same command with the `--stop` option: 26 | 27 | [source,console] 28 | ---- 29 | $ git instaweb --httpd=webrick --stop 30 | ---- 31 | 32 | If you want to run the web interface on a server all the time for your team or for an open source project you're hosting, you'll need to set up the CGI script to be served by your normal web server. 33 | Some Linux distributions have a `gitweb` package that you may be able to install via `apt` or `yum`, so you may want to try that first. 34 | We'll walk though installing GitWeb manually very quickly. 35 | First, you need to get the Git source code, which GitWeb comes with, and generate the custom CGI script: 36 | 37 | [source,console] 38 | ---- 39 | $ git clone git://git.kernel.org/pub/scm/git/git.git 40 | $ cd git/ 41 | $ make GITWEB_PROJECTROOT="/opt/git" prefix=/usr gitweb 42 | SUBDIR gitweb 43 | SUBDIR ../ 44 | make[2]: `GIT-VERSION-FILE' is up to date. 45 | GEN gitweb.cgi 46 | GEN static/gitweb.js 47 | $ sudo cp -Rf gitweb /var/www/ 48 | ---- 49 | 50 | Notice that you have to tell the command where to find your Git repositories with the `GITWEB_PROJECTROOT` variable. 51 | Now, you need to make Apache use CGI for that script, for which you can add a VirtualHost: 52 | 53 | [source,console] 54 | ---- 55 | 56 | ServerName gitserver 57 | DocumentRoot /var/www/gitweb 58 | 59 | Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch 60 | AllowOverride All 61 | order allow,deny 62 | Allow from all 63 | AddHandler cgi-script cgi 64 | DirectoryIndex gitweb.cgi 65 | 66 | 67 | ---- 68 | 69 | Again, GitWeb can be served with any CGI or Perl capable web server; if you prefer to use something else, it shouldn't be difficult to set up. 70 | At this point, you should be able to visit `http://gitserver/` to view your repositories online. 71 | -------------------------------------------------------------------------------- /book/04-git-server/sections/hosted.asc: -------------------------------------------------------------------------------- 1 | === Third Party Hosted Options 2 | 3 | If you don't want to go through all of the work involved in setting up your own Git server, you have several options for hosting your Git projects on an external dedicated hosting site. 4 | Doing so offers a number of advantages: a hosting site is generally quick to set up and easy to start projects on, and no server maintenance or monitoring is involved. 5 | Even if you set up and run your own server internally, you may still want to use a public hosting site for your open source code – it's generally easier for the open source community to find and help you with. 6 | 7 | These days, you have a huge number of hosting options to choose from, each with different advantages and disadvantages. 8 | To see an up-to-date list, check out the GitHosting page on the main Git wiki at https://git.wiki.kernel.org/index.php/GitHosting[] 9 | 10 | We'll cover using GitHub in detail in <>, as it is the largest Git host out there and you may need to interact with projects hosted on it in any case, but there are dozens more to choose from should you not want to set up your own Git server. 11 | -------------------------------------------------------------------------------- /book/04-git-server/sections/smart-http.asc: -------------------------------------------------------------------------------- 1 | === Smart HTTP 2 | 3 | (((serving repositories, HTTP))) 4 | We now have authenticated access though SSH and unauthenticated access through `git://`, but there is also a protocol that can do both at the same time. 5 | Setting up Smart HTTP is basically just enabling a CGI script that is provided with Git called `git-http-backend` on the server.((git commands, "http-backend")) 6 | This CGI will read the path and headers sent by a `git fetch` or `git push` to an HTTP URL and determine if the client can communicate over HTTP (which is true for any client since version 1.6.6). 7 | If the CGI sees that the client is smart, it will communicate smartly with it, otherwise it will fall back to the dumb behavior (so it is backward compatible for reads with older clients). 8 | 9 | Let's walk though a very basic setup. We'll set this up with Apache as the CGI server. If you don't have Apache setup, you can do so on a Linux box with something like this:(((Apache))) 10 | 11 | [source,console] 12 | ---- 13 | $ sudo apt-get install apache2 apache2-utils 14 | $ a2enmod cgi alias env 15 | ---- 16 | 17 | This also enables the `mod_cgi`, `mod_alias`, and `mod_env` modules, which are all needed for this to work properly. 18 | 19 | Next we need to add some things to the Apache configuration to run the `git http-backend` as the handler for anything coming into the `/git` path of your web server. 20 | 21 | [source,console] 22 | ---- 23 | SetEnv GIT_PROJECT_ROOT /opt/git 24 | SetEnv GIT_HTTP_EXPORT_ALL 25 | ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ 26 | ---- 27 | 28 | If you leave out `GIT_HTTP_EXPORT_ALL` environment variable, then Git will only serve to unauthenticated clients the repositories with the `git-daemon-export-ok` file in them, just like the Git daemon did. 29 | 30 | Then you'll have to tell Apache to allow requests to that path with something like this: 31 | 32 | [source,console] 33 | ---- 34 | 35 | Options ExecCGI Indexes 36 | Order allow,deny 37 | Allow from all 38 | Require all granted 39 | 40 | ---- 41 | 42 | Finally you'll want to make writes be authenticated somehow, possibly with an Auth block like this: 43 | 44 | [source,console] 45 | ---- 46 | 47 | AuthType Basic 48 | AuthName "Git Access" 49 | AuthUserFile /opt/git/.htpasswd 50 | Require valid-user 51 | 52 | ---- 53 | 54 | That will require you to create a `.htaccess` file containing the passwords of all the valid users. Here is an example of adding a ``schacon'' user to the file: 55 | 56 | [source,console] 57 | ---- 58 | $ htdigest -c /opt/git/.htpasswd "Git Access" schacon 59 | ---- 60 | 61 | There are tons of ways to have Apache authenticate users, you'll have to choose and implement one of them. This is just the simplest example we could come up with. You'll also almost certainly want to set this up over SSL so all this data is encrypted. 62 | 63 | We don't want to go too far down the rabbit hole of Apache configuration specifics, since you could well be using a different server or have different authenication needs. The idea is that Git comes with a CGI called `git http-backend` that when invoked will do all the negotiation to send and receive data over HTTP. It does not implement any authentication itself, but that can easily be controlled at the layer of the web server that invokes it. You can do this with nearly any CGI-capable web server, so go with the one that you know best. 64 | 65 | [NOTE] 66 | ==== 67 | For more information on configuring authentication in Apache, check out the Apache docs here: http://httpd.apache.org/docs/current/howto/auth.html[] 68 | ==== 69 | -------------------------------------------------------------------------------- /book/06-github/callouts/1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/1.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/1.png -------------------------------------------------------------------------------- /book/06-github/callouts/10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/10.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/10.png -------------------------------------------------------------------------------- /book/06-github/callouts/2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/2.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/2.png -------------------------------------------------------------------------------- /book/06-github/callouts/3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/3.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/3.png -------------------------------------------------------------------------------- /book/06-github/callouts/4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/4.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/4.png -------------------------------------------------------------------------------- /book/06-github/callouts/5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/5.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/5.png -------------------------------------------------------------------------------- /book/06-github/callouts/6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/6.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/6.png -------------------------------------------------------------------------------- /book/06-github/callouts/7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/7.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/7.png -------------------------------------------------------------------------------- /book/06-github/callouts/8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/8.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/8.png -------------------------------------------------------------------------------- /book/06-github/callouts/9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/9.pdf -------------------------------------------------------------------------------- /book/06-github/callouts/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/06-github/callouts/9.png -------------------------------------------------------------------------------- /book/06-github/sections/4-managing-organization.asc: -------------------------------------------------------------------------------- 1 | [[r_github_orgs]] 2 | === Managing an organization 3 | 4 | (((GitHub, organizations))) 5 | In addition to single-user accounts, GitHub has what are called Organizations. 6 | Like personal accounts, Organizational accounts have a namespace where all their projects exist, but many other things are different. 7 | These accounts represent a group of people with shared ownership of projects, and there are many tools to manage subgroups of those people. 8 | Normally these accounts are used for Open Source groups (such as ``perl'' or ``rails'') or companies (such as ``google'' or ``twitter''). 9 | 10 | ==== Organization Basics 11 | 12 | An organization is pretty easy to create; just click on the ``+'' icon at the top-right of any GitHub page, and select ``New organization'' from the menu. 13 | 14 | .The ``New organization'' menu item. 15 | image::images/neworg.png[The ``New organization'' menu item.] 16 | 17 | First you'll need to name your organzation and provide an email address for a main point of contact for the group. Then you can invite other users to be co-owners of the account if you want to. 18 | 19 | Follow these steps and you'll soon be the owner of a brand-new organization. 20 | Like personal accounts, organizations are free if everything you plan to store there will be open source. 21 | 22 | As an owner in an organization, when you fork a repository, you'll have the choice of forking it to your organization's namespace. When you create new repositories you can create them either under your personal account or under any of the organizations that you are an owner in. You also automatically ``watch'' any new repository created under these organizations. 23 | 24 | Just like in <>, you can upload an avatar for your organization to personalize it a bit. Also just like personal accounts, you have a landing page for the organization that lists all of your repositories and can be viewed by other people. 25 | 26 | Now let's cover some of the things that are a bit different with an organizational account. 27 | 28 | ==== Teams 29 | 30 | Organizations are associated with individual people by way of teams, which are simply a grouping of individual user accounts and repositories within the organization and what kind of access those people have in those repositories. 31 | 32 | For example, say your company has three repositories: `frontend`, `backend`, and `deployscripts`. 33 | You'd want your HTML/CSS/Javascript developers to have access to `frontend` and maybe `backend`, and your Operations people to have access to `backend` and `deployscripts`. 34 | Teams make this easy, without having to manage the collaborators for every individual repository. 35 | 36 | The Organization page shows you a simple dashboard of all the repositories, users and teams that are under this organziation. 37 | 38 | [[r_org_page]] 39 | .The Organization page. 40 | image::images/orgs-01-page.png[] 41 | 42 | To manage your Teams, you can click on the Teams sidebar on the right hand side of the page in <>. This will bring you to a page you can use to add members to the team, add repositories to the team or manage the settings and access control levels for the team. Each team can have read only, read/write or administrative access to the repositories. You can change that level by clicking the ``Settings'' button in <>. 43 | 44 | [[r_team_page]] 45 | .The Team page. 46 | image::images/orgs-02-teams.png[] 47 | 48 | When you invite someone to a team, they will get an email letting them know they've been invited. 49 | 50 | Additionally, team `@mentions` (such as `@acmecorp/frontend`) work much the same as they do with individual users, except that *all* members of the team are then subscribed to the thread. 51 | This is useful if you want the attention from someone on a team, but you don't know exactly who to ask. 52 | 53 | A user can belong to any number of teams, so don't limit yourself to only access-control teams. 54 | Special-interest teams like `ux`, `css`, or `refactoring` are useful for certain kinds of questions, and others like `legal` and `colorblind` for an entirely different kind. 55 | 56 | ==== Audit Log 57 | 58 | Organizations also give owners access to all the information about what went on under the organization. You can go to the 'Audit Log' tab and see what events have happened at an organization level, who did them and where in the world they were done. 59 | 60 | [[r_audit_log]] 61 | .The Audit log. 62 | image::images/orgs-03-audit.png[] 63 | 64 | You can also filter down to specific types of events, specific places or specific people. 65 | -------------------------------------------------------------------------------- /book/07-git-tools/callouts/1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/1.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/1.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/10.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/10.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/2.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/2.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/3.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/3.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/4.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/4.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/5.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/5.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/6.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/6.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/7.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/7.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/8.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/8.png -------------------------------------------------------------------------------- /book/07-git-tools/callouts/9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/07-git-tools/callouts/9.pdf -------------------------------------------------------------------------------- /book/07-git-tools/callouts/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/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 | The next system you'll look at importing from is Perforce. 6 | As we discussed above, there are two ways to let Git and Perforce talk to each other: git-p4 and Perforce Git Fusion. 7 | 8 | ===== Perforce Git Fusion 9 | 10 | Git Fusion makes this process fairly painless. 11 | Just configure your project settings, user mappings, and branches using a configuration file (as discussed in <>), and clone the repository. 12 | Git Fusion leaves you with what looks like a native Git repository, which is then ready to push to a native Git host if you desire. 13 | You could even use Perforce as your Git host if you like. 14 | 15 | [[r_git_p4]] 16 | ===== Git-p4 17 | 18 | Git-p4 can also act as an import tool. 19 | As an example, we'll import the Jam project from the Perforce Public Depot. 20 | To set up your client, you must export the P4PORT environment variable to point to the Perforce depot: 21 | 22 | [source,console] 23 | ---- 24 | $ export P4PORT=public.perforce.com:1666 25 | ---- 26 | 27 | [NOTE] 28 | ==== 29 | In order to follow along, you'll need a Perforce depot to connect with. 30 | We'll be using the public depot at public.perforce.com for our examples, but you can use any depot you have access to. 31 | ==== 32 | 33 | (((git commands, p4))) 34 | Run the `git p4 clone` command to import the Jam project from the Perforce server, supplying the depot and project path and the path into which you want to import the project: 35 | 36 | [source,console] 37 | ---- 38 | $ git-p4 clone //guest/perforce_software/jam@all p4import 39 | Importing from //guest/perforce_software/jam@all into p4import 40 | Initialized empty Git repository in /private/tmp/p4import/.git/ 41 | Import destination: refs/remotes/p4/master 42 | Importing revision 9957 (100%) 43 | ---- 44 | 45 | This particular project has only one branch, but if you have branches that are configured with branch views (or just a set of directories), you can use the `--detect-branches` flag to `git p4 clone` to import all the project's branches as well. 46 | See <> for a bit more detail on this. 47 | 48 | At this point you're almost done. 49 | If you go to the `p4import` directory and run `git log`, you can see your imported work: 50 | 51 | [source,console] 52 | ---- 53 | $ git log -2 54 | commit e5da1c909e5db3036475419f6379f2c73710c4e6 55 | Author: giles 56 | Date: Wed Feb 8 03:13:27 2012 -0800 57 | 58 | Correction to line 355; change to . 59 | 60 | [git-p4: depot-paths = "//public/jam/src/": change = 8068] 61 | 62 | commit aa21359a0a135dda85c50a7f7cf249e4f7b8fd98 63 | Author: kwirth 64 | Date: Tue Jul 7 01:35:51 2009 -0800 65 | 66 | Fix spelling error on Jam doc page (cummulative -> cumulative). 67 | 68 | [git-p4: depot-paths = "//public/jam/src/": change = 7304] 69 | ---- 70 | 71 | You can see that `git-p4` has left an identifier in each commit message. 72 | It's fine to keep that identifier there, in case you need to reference the Perforce change number later. 73 | However, if you'd like to remove the identifier, now is the time to do so – before you start doing work on the new repository. 74 | (((git commands, filter-branch))) 75 | You can use `git filter-branch` to remove the identifier strings en masse: 76 | 77 | [source,console] 78 | ---- 79 | $ git filter-branch --msg-filter 'sed -e "/^\[git-p4:/d"' 80 | Rewrite e5da1c909e5db3036475419f6379f2c73710c4e6 (125/125) 81 | Ref 'refs/heads/master' was rewritten 82 | ---- 83 | 84 | If you run `git log`, you can see that all the SHA-1 checksums for the commits have changed, but the `git-p4` strings are no longer in the commit messages: 85 | 86 | [source,console] 87 | ---- 88 | $ git log -2 89 | commit b17341801ed838d97f7800a54a6f9b95750839b7 90 | Author: giles 91 | Date: Wed Feb 8 03:13:27 2012 -0800 92 | 93 | Correction to line 355; change to . 94 | 95 | commit 3e68c2e26cd89cb983eb52c024ecdfba1d6b3fff 96 | Author: kwirth 97 | Date: Tue Jul 7 01:35:51 2009 -0800 98 | 99 | Fix spelling error on Jam doc page (cummulative -> cumulative). 100 | ---- 101 | 102 | Your import is ready to push up to your new Git server. 103 | -------------------------------------------------------------------------------- /book/09-git-and-other-scms/sections/import-svn.asc: -------------------------------------------------------------------------------- 1 | ==== Subversion 2 | 3 | (((Subversion))) 4 | (((Importing, from Subversion))) 5 | If you read the previous section about using `git svn`, you can easily use those instructions to `git svn clone` a repository; then, stop using the Subversion server, push to a new Git server, and start using that. 6 | If you want the history, you can accomplish that as quickly as you can pull the data out of the Subversion server (which may take a while). 7 | 8 | However, the import isn't perfect; and because it will take so long, you may as well do it right. 9 | The first problem is the author information. 10 | In Subversion, each person committing has a user on the system who is recorded in the commit information. 11 | The examples in the previous section show `schacon` in some places, such as the `blame` output and the `git svn log`. 12 | If you want to map this to better Git author data, you need a mapping from the Subversion users to the Git authors. 13 | Create a file called `users.txt` that has this mapping in a format like this: 14 | 15 | [source] 16 | ---- 17 | schacon = Scott Chacon 18 | selse = Someo Nelse 19 | ---- 20 | 21 | To get a list of the author names that SVN uses, you can run this: 22 | 23 | [source,console] 24 | ---- 25 | $ svn log --xml | grep author | sort -u | \ 26 | perl -pe 's/.*>(.*?)<.*/$1 = /' 27 | ---- 28 | 29 | That generates the log output in XML format, then keeps only the lines with author information, discards duplicates, strips out the XML tags. 30 | (Obviously this only works on a machine with `grep`, `sort`, and `perl` installed.) 31 | Then, redirect that output into your users.txt file so you can add the equivalent Git user data next to each entry. 32 | 33 | You can provide this file to `git svn` to help it map the author data more accurately. 34 | You can also tell `git svn` not to include the metadata that Subversion normally imports, by passing `--no-metadata` to the `clone` or `init` command. 35 | This makes your `import` command look like this: 36 | 37 | [source,console] 38 | ---- 39 | $ git svn clone http://my-project.googlecode.com/svn/ \ 40 | --authors-file=users.txt --no-metadata -s my_project 41 | ---- 42 | 43 | Now you should have a nicer Subversion import in your `my_project` directory. 44 | Instead of commits that look like this 45 | 46 | [source] 47 | ---- 48 | commit 37efa680e8473b615de980fa935944215428a35a 49 | Author: schacon 50 | Date: Sun May 3 00:12:22 2009 +0000 51 | 52 | fixed install - go to trunk 53 | 54 | git-svn-id: https://my-project.googlecode.com/svn/trunk@94 4c93b258-373f-11de- 55 | be05-5f7a86268029 56 | ---- 57 | 58 | they look like this: 59 | 60 | [source] 61 | ---- 62 | commit 03a8785f44c8ea5cdb0e8834b7c8e6c469be2ff2 63 | Author: Scott Chacon 64 | Date: Sun May 3 00:12:22 2009 +0000 65 | 66 | fixed install - go to trunk 67 | ---- 68 | 69 | Not only does the Author field look a lot better, but the `git-svn-id` is no longer there, either. 70 | 71 | You should also do a bit of post-import cleanup. 72 | For one thing, you should clean up the weird references that `git svn` set up. 73 | First you'll move the tags so they're actual tags rather than strange remote branches, and then you'll move the rest of the branches so they're local. 74 | 75 | To move the tags to be proper Git tags, run 76 | 77 | [source,console] 78 | ---- 79 | $ cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/ 80 | $ rm -Rf .git/refs/remotes/origin/tags 81 | ---- 82 | 83 | This takes the references that were remote branches that started with `remotes/origin/tags/` and makes them real (lightweight) tags. 84 | 85 | Next, move the rest of the references under `refs/remotes` to be local branches: 86 | 87 | [source,console] 88 | ---- 89 | $ cp -Rf .git/refs/remotes/* .git/refs/heads/ 90 | $ rm -Rf .git/refs/remotes 91 | ---- 92 | 93 | Now all the old branches are real Git branches and all the old tags are real Git tags. 94 | The last thing to do is add your new Git server as a remote and push to it. 95 | Here is an example of adding your server as a remote: 96 | 97 | [source,console] 98 | ---- 99 | $ git remote add origin git@my-git-server:myrepository.git 100 | ---- 101 | 102 | Because you want all your branches and tags to go up, you can now run this: 103 | 104 | [source,console] 105 | ---- 106 | $ git push origin --all 107 | ---- 108 | 109 | All your branches and tags should be on your new Git server in a nice, clean import. 110 | -------------------------------------------------------------------------------- /book/09-git-and-other-scms/sections/import-tfs.asc: -------------------------------------------------------------------------------- 1 | [[r_git_tfs]] 2 | ==== TFS 3 | 4 | (((TFS)))(((Importing, from TFS))) 5 | If your team is converting their source control from TFVC to Git, you'll want the highest-fidelity conversion you can get. 6 | This means that, while we covered both git-tfs and git-tf for the interop section, we'll only be covering git-tfs for this part, because git-tfs supports branches, and this is prohibitively difficult using git-tf. 7 | 8 | [NOTE] 9 | ==== 10 | This is a one-way conversion. 11 | The resulting Git repository won't be able to connect with the original TFVC project. 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 | This grabs all of the changesets in the history of the project and put it in the AUTHORS_TMP file that we will process to extract the data of the 'User' column (the 2nd one). 24 | Open the file and find at which characters start and end the column and replace, in the following command-line, the parameters `11-20` of the `cut` command with the ones found: 25 | 26 | [source,powershell] 27 | ---- 28 | PS> cat AUTHORS_TMP | cut -b 11-20 | tail -n+3 | uniq | sort > AUTHORS 29 | ---- 30 | 31 | The `cut` command keeps only the characters between 11 and 20 from each line. 32 | The `tail` command skips the first two lines, which are field headers and ASCII-art underlines. 33 | The result of all of this is piped to `uniq` to eliminate duplicates, and saved to a file named `AUTHORS`. 34 | The next step is manual; in order for git-tfs to make effective use of this file, each line must be in this format: 35 | 36 | [source,text] 37 | ---- 38 | DOMAIN\username = User Name 39 | ---- 40 | 41 | The portion on the left is the ``User'' field from TFVC, and the portion on the right side of the equals sign is the user name that will be used for Git commits. 42 | 43 | Once you have this file, the next thing to do is make a full clone of the TFVC project you're interested in: 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 | Next you'll want to clean the `git-tfs-id` sections from the bottom of the commit messages. 51 | The following command will do that: 52 | 53 | [source,powershell] 54 | ---- 55 | PS> git filter-branch -f --msg-filter 'sed "s/^git-tfs-id:.*$//g"' -- --all 56 | ---- 57 | 58 | That uses the `sed` command from the Git-bash environment to replace any line starting with ``git-tfs-id:'' with emptiness, which Git will then ignore. 59 | 60 | Once that's all done, you're ready to add a new remote, push all your branches up, and have your team start working from Git. 61 | -------------------------------------------------------------------------------- /book/10-git-internals/sections/plumbing-porcelain.asc: -------------------------------------------------------------------------------- 1 | [[r_plumbing_porcelain]] 2 | === Plumbing and Porcelain 3 | 4 | This book covers how to use Git with 30 or so verbs such as `checkout`, `branch`, `remote`, and so on. 5 | But because Git was initially a toolkit for a VCS rather than a full user-friendly VCS, it has a bunch of verbs that do low-level work and were designed to be chained together UNIX style or called from scripts. 6 | These commands are generally referred to as ``plumbing'' commands, and the more user-friendly commands are called ``porcelain'' commands. 7 | 8 | The book's first nine chapters deal almost exclusively with porcelain commands. 9 | But in this chapter, you'll be dealing mostly with the lower-level plumbing commands, because they give you access to the inner workings of Git, and help demonstrate how and why Git does what it does. 10 | Many of these commands aren't meant to be used manually on the command line, but rather to be used as building blocks for new tools and custom scripts. 11 | 12 | When you run `git init` in a new or existing directory, Git creates the `.git` directory, which is where almost everything that Git stores and manipulates is located. 13 | If you want to back up or clone your repository, copying this single directory elsewhere gives you nearly everything you need. 14 | This entire chapter basically deals with the stuff in this directory. 15 | Here's what it looks like: 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 | You may see some other files in there, but this is a fresh `git init` repository – it's what you see by default. 30 | The `description` file is only used by the GitWeb program, so don't worry about it. 31 | The `config` file contains your project-specific configuration options, and the `info` directory keeps a global exclude file (((excludes))) for ignored patterns that you don't want to track in a .gitignore file. 32 | The `hooks` directory contains your client- or server-side hook scripts, which are discussed in detail in <>. 33 | 34 | This leaves four important entries: the `HEAD` and (yet to be created) `index` files, and the `objects` and `refs` directories. 35 | These are the core parts of Git. 36 | The `objects` directory stores all the content for your database, the `refs` directory stores pointers into commit objects in that data (branches), the `HEAD` file points to the branch you currently have checked out, and the `index` file is where Git stores your staging area information. 37 | You'll now look at each of these sections in detail to see how Git operates. 38 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/bash.asc: -------------------------------------------------------------------------------- 1 | === Git in Bash 2 | 3 | (((bash)))(((tab completion, bash)))(((shell prompts, bash))) 4 | 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. 5 | Git actually ships with plugins for several shells, but it's not turned on by default. 6 | 7 | First, you need to get a copy of the `contrib/completion/git-completion.bash` file out of the Git source code. 8 | Copy it somewhere handy, like your home directory, and add this to your `.bashrc`: 9 | 10 | [source,console] 11 | ----- 12 | . ~/git-completion.bash 13 | ----- 14 | 15 | Once that's done, change your directory to a git repository, and type: 16 | 17 | [source,console] 18 | ---- 19 | $ git chec 20 | ---- 21 | 22 | …and Bash will auto-complete to `git checkout`. 23 | This works with all of Git's subcommands, command-line parameters, and remotes and ref names where appropriate. 24 | 25 | It's also useful to customize your prompt to show information about the current directory's Git repository. 26 | 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. 27 | 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`: 28 | 29 | [source,console] 30 | ----- 31 | . ~/git-prompt.sh 32 | export GIT_PS1_SHOWDIRTYSTATE=1 33 | export PS1='\w$(__git_ps1 " (%s)")\$ ' 34 | ----- 35 | 36 | 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. 37 | Now your bash prompt will look like this when you're anywhere inside a Git-controlled project: 38 | 39 | .Customized `bash` prompt. 40 | image::images/git-bash.png[Customized `bash` prompt.] 41 | 42 | 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. 43 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/eclipse.asc: -------------------------------------------------------------------------------- 1 | === Git in Eclipse 2 | 3 | (((Eclipse))) 4 | Eclipse ships with a plugin called Egit, which provides a fairly-complete interface to Git operations. 5 | It's accessed by switching to the Git Perspective (Window > Open Perspective > Other…, and select "Git"). 6 | 7 | .Eclipse's EGit environment. 8 | image::images/egit.png[Eclipse's EGit environment.] 9 | 10 | 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. 11 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/powershell.asc: -------------------------------------------------------------------------------- 1 | [[r_git_powershell]] 2 | === Git in Powershell 3 | 4 | (((powershell)))(((tab completion, powershell)))(((shell prompts, powershell))) 5 | (((posh-git))) 6 | The standard command-line terminal on Windows (`cmd.exe`) isn't really capable of a customized Git experience, but if you're using Powershell, you're in luck. 7 | A package called Posh-Git (https://github.com/dahlbyk/posh-git[]) provides powerful tab-completion facilities, as well as an enhanced prompt to help you stay on top of your repository status. It looks like this: 8 | 9 | .Powershell with Posh-git. 10 | image::images/posh-git.png[Powershell with Posh-git.] 11 | 12 | If you've installed GitHub for Windows, Posh-Git is included by default, and all you have to do is add these lines to your `profile.ps1` (which is usually located in `C:\Users\\Documents\WindowsPowerShell`): 13 | 14 | [source,powershell] 15 | ----- 16 | . (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") 17 | . $env:github_posh_git\profile.example.ps1 18 | ----- 19 | 20 | If you're not a GitHub for Windows user, just download a Posh-Git release from (https://github.com/dahlbyk/posh-git[]), and uncompress it to the `WindowsPowershell` directory. 21 | Then open a Powershell prompt as the administrator, and do this: 22 | 23 | [source,powershell] 24 | ----- 25 | > Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm 26 | > cd ~\Documents\WindowsPowerShell\posh-git 27 | > .\install.ps1 28 | ----- 29 | 30 | This will add the proper line to your `profile.ps1` file, and posh-git will be active the next time you open your prompt. 31 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/visualstudio.asc: -------------------------------------------------------------------------------- 1 | === Git in Visual Studio 2 | 3 | (((Visual Studio))) 4 | Starting with Visual Studio 2013 Update 1, Visual Studio users have a Git client built directly into their IDE. 5 | 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. 6 | 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. 7 | 8 | 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. 9 | You'll see the "Connect" view, which looks a bit like this: 10 | 11 | .Connecting to a Git repository from Team Explorer. 12 | image::images/vs-1.png[Connecting to a Git repository from Team Explorer.] 13 | 14 | Visual Studio remembers all of the projects you've opened that are Git-controlled, and they're available in the list at the bottom. 15 | If you don't see the one you want there, click the "Add" link and type in the path to the working directory. 16 | Double clicking on one of the local Git repositories leads you to the Home view, which looks like <>. 17 | 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. 18 | 19 | [[rvs_home]] 20 | .The "Home" view for a Git repository in Visual Studio. 21 | image::images/vs-2.png[The Home view for a Git repository in Visual Studio.] 22 | 23 | Visual Studio now has a powerful task-focused UI for Git. 24 | It includes a linear history view, a diff viewer, remote commands, and many other capabilities. 25 | For complete documentation of this feature (which doesn't fit here), go to http://msdn.microsoft.com/en-us/library/hh850437.aspx[]. 26 | -------------------------------------------------------------------------------- /book/A-git-in-other-environments/sections/zsh.asc: -------------------------------------------------------------------------------- 1 | === Git in Zsh 2 | 3 | (((zsh)))(((tab completion, zsh)))(((shell prompts, zsh))) 4 | Git also ships with a tab-completion library for Zsh. 5 | Just copy `contrib/completion/git-completion.zsh` to your home directory and source it from your `.zshrc`. 6 | Zsh's interface is a bit more powerful than Bash's: 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 | Ambiguous tab-completions aren't just listed; they have helpful descriptions, and you can graphically navigate the list by repeatedly hitting tab. 20 | This works with Git commands, their arguments, and names of things inside the repository (like refs and remotes), as well filenames and all the other things Zsh knows how to tab-complete. 21 | 22 | Zsh happens to be fairly compatible with Bash when it comes to prompt customization, but it allows you to have a right-side prompt as well. 23 | To include the branch name on the right side, add these lines to your `~/.zshrc` file: 24 | 25 | [source,console] 26 | ---- 27 | setopt prompt_subst 28 | . ~/git-prompt.sh 29 | export RPROMPT=$'$(__git_ps1 "%s")' 30 | ---- 31 | 32 | This results in a display of the current branch on the right-hand side of the terminal window, whenever your shell is inside a Git repository. It looks a bit like this: 33 | 34 | .Customized `zsh` prompt. 35 | image::images/zsh-prompt.png[Customized `zsh` prompt.] 36 | 37 | Zsh is powerful enough that there are entire frameworks dedicated to making it better. 38 | One of them is called "oh-my-zsh", and it can be found at https://github.com/robbyrussell/oh-my-zsh[]. 39 | oh-my-zsh's plugin system comes with powerful git tab-completion, and it has a variety of prompt "themes", many of which display version-control data. 40 | <> is just one example of what can be done with this system. 41 | 42 | [[roh_my_zsh_git]] 43 | .An example of an oh-my-zsh theme. 44 | image::images/zsh-oh-my.png[An example of an oh-my-zsh theme.] 45 | -------------------------------------------------------------------------------- /book/B-embedding-git/sections/command-line.asc: -------------------------------------------------------------------------------- 1 | === Command-line Git 2 | 3 | One option is to spawn a shell process and use the Git command-line tool to do the work. 4 | This has the benefit of being canonical, and all of Git's features are supported. 5 | This also happens to be fairly easy, as most runtime environments have a relatively simple facility for invoking a process with command-line arguments. 6 | However, this approach does have some downsides. 7 | 8 | One is that all the output is in plain text. 9 | This means that you'll have to parse Git's occasionally-changing output format to read progress and result information, which can be inefficient and error-prone. 10 | 11 | Another is the lack of error recovery. 12 | If a repository is corrupted somehow, or the user has a malformed configuration value, Git will simply refuse to perform many operations. 13 | 14 | Yet another is process management. 15 | Git requires you to maintain a shell environment on a separate process, which can add unwanted complexity. 16 | Trying to coordinate many of these processes (especially when potentially accessing the same repository from several processes) can be quite a challenge. 17 | -------------------------------------------------------------------------------- /book/contributors.asc: -------------------------------------------------------------------------------- 1 | [preface] 2 | == Collaboratori 3 | 4 | Poiché questo libro è Open Source, negli corso degli anni abbiamo ricevuto molte correzioni e aggiornamenti. Qui di seguito sono elencate tutte le persone che hanno contribuito alla versione inglese di Pro Git in quanto progetto open source. Grazie a tutti voi per averci aiutato e aver resto questo libro migliore per tutti. 5 | 6 | [source] 7 | ---- 8 | 2 Aaron Schumacher 9 | 4 Aggelos Orfanakos 10 | 4 Alec Clews 11 | 1 Alex Moundalexis 12 | 2 Alexander Harkness 13 | 1 Alexander Kahn 14 | 1 Andrew McCarthy 15 | 1 AntonioK 16 | 1 Benjamin Bergman 17 | 1 Brennon Bortz 18 | 2 Brian P O'Rourke 19 | 1 Bryan Goines 20 | 1 Cameron Wright 21 | 1 Chris Down 22 | 1 Christian Kluge 23 | 1 Christoph Korn 24 | 2 Ciro Santilli 25 | 2 Cor 26 | 1 Dan Croak 27 | 1 Dan Johnson 28 | 1 Daniel Kay 29 | 2 Daniel Rosen 30 | 1 DanielWeber 31 | 1 Dave Dash 32 | 10 Davide Fiorentino lo Regio 33 | 2 Dilip M 34 | 1 Dimitar Bonev 35 | 1 Emmanuel Trillaud 36 | 1 Eric-Paul Lecluse 37 | 1 Eugene Serkin 38 | 1 Fernando Dobladez 39 | 2 Gordon McCreight 40 | 1 Helmut K. C. Tessarek 41 | 31 Igor Murzov 42 | 1 Ilya Kuznetsov 43 | 1 Jason St. John 44 | 1 Jay Taggart 45 | 1 Jean Jordaan 46 | 51 Jean-Noël Avila 47 | 1 Jean-Noël Rouvignac 48 | 1 Jed Hartman 49 | 1 Jeffrey Forman 50 | 1 John DeStefano 51 | 1 Junior 52 | 1 Kieran Spear 53 | 1 Larry Shatzer, Jr 54 | 1 Linquize 55 | 1 Markus 56 | 7 Matt Deacalion Stevens 57 | 1 Matthew McCullough 58 | 1 Matthieu Moy 59 | 1 Max F. Albrecht 60 | 1 Michael Schneider 61 | 8 Mike D. Smith 62 | 1 Mike Limansky 63 | 1 Olivier Trichet 64 | 1 Ondrej Novy 65 | 6 Ori Avtalion 66 | 1 Paul Baumgart 67 | 1 Peter Vojtek 68 | 1 Philipp Kempgen 69 | 2 Philippe Lhoste 70 | 1 PowerKiKi 71 | 1 Radek Simko 72 | 1 Rasmus Abrahamsen 73 | 1 Reinhard Holler 74 | 1 Ross Light 75 | 1 Ryuichi Okumura 76 | 1 Sebastian Wiesinger 77 | 1 Severyn Kozak 78 | 1 Shane 79 | 2 Shannen 80 | 8 Sitaram Chamarty 81 | 5 Soon Van 82 | 4 Sven Axelsson 83 | 2 Tim Court 84 | 1 Tuomas Suutari 85 | 1 Vlad Gorodetsky 86 | 3 W. Trevor King 87 | 1 Wyatt Carss 88 | 1 Włodzimierz Gajda 89 | 1 Xue Fuqiao 90 | 1 Yue Lin Ho 91 | 2 adelcambre 92 | 1 anaran 93 | 1 bdukes 94 | 1 burningTyger 95 | 1 cor 96 | 1 iosias 97 | 7 nicesw123 98 | 1 onovy 99 | 2 pcasaretto 100 | 1 sampablokuper 101 | ---- 102 | 103 | -------------------------------------------------------------------------------- /book/cover.html: -------------------------------------------------------------------------------- 1 |
cover
2 | -------------------------------------------------------------------------------- /book/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/book/cover.png -------------------------------------------------------------------------------- /book/index.asc: -------------------------------------------------------------------------------- 1 | == Indice 2 | -------------------------------------------------------------------------------- /book/preface.asc: -------------------------------------------------------------------------------- 1 | Pro Git 2 | ======= 3 | :doctype: book 4 | :docinfo: 5 | :toc: 6 | :toclevels: 2 7 | 8 | [preface] 9 | == Prefazione di Scott Chacon 10 | 11 | Benvenuto alla seconda edizione di Pro Git. 12 | La prima edizione è stata pubblicata per più di quattro anni. 13 | Da allora sono cambiate tante cose e molte altre cose importanti non lo sono ancora. 14 | Mentre la maggior parte dei comandi e dei concetti di base sono ancora validi, grazie al fantastico gruppo di sviluppo di Git, che mantiene la compatibilità con le versioni precedenti, ci sono state alcune importanti aggiunte e cambiamenti nella comunità intorno a Git. 15 | La seconda edizione di questo libro ha lo scopo di descrivere tali modifiche e aggiornare il libro in modo che possa essere più utile ad un nuovo utente. 16 | 17 | Quando ho scritto la prima edizione, Git era ancora relativamente complicato da usare e poco diffuso, se non presso gli hacker più smaliziati. 18 | Cominciava a diffondersi presso alcune comunità, ma non aveva ancora raggiunto la diffusione che ha oggi. 19 | Da allora, quasi tutte le comunità open source lo hanno adottato. 20 | Git ha fatto progressi incredibili su Windows, per l'esplosione di interfacce grafiche dedicate, su tutte le piattaforme, per il supporto degli IDE e nell'uso in azienda. 21 | Il Pro Git di quattro anni fa non ne sapeva niente di tutto ciò. 22 | Uno dei principali obiettivi di questa nuova edizione è quello di illustrare tutte queste nuove frontiere nella comunità di Git. 23 | 24 | Anche la comunità Open Source che usa Git è esplosa. 25 | Quando mi sedetti per scrivere il libro, quasi cinque anni fa e mi ci volle un po' per far uscire la prima versione, avevo appena iniziato a lavorare presso una società poco nota che sviluppava un sito web di hosting per Git, chiamata GitHub. 26 | Al momento della pubblicazione saranno state poche migliaia le persone che usavano il sito ed eravamo solo in quattro a lavorarci. 27 | Mentre scrivo questa introduzione, GitHub sta per annunciare il 10-milionesimo progetto ospitato, quasi 5 milioni di account di sviluppatori registrati e più di 230 dipendenti. 28 | Che si odi o si ami, GitHub ha cambiato profondamente vaste aree della comunità Open Source in una forma a malapena immaginabile quando mi sedetti a scrivere la prima edizione. 29 | 30 | Ho scritto una piccola sezione, nella versione originale di Pro Git, riguardo GitHub come esempio di hosting Git, con cui non sono mai stato molto a mio agio. 31 | Non mi piace stare scrivendo di ciò che sento essere fondamentalmente una risorsa della comunità e allo stesso tempo parlare dell'azienda in cui lavoro. 32 | Nonostante continui a non piacermi questo conflitto di interessi, è innegabile l'importanza di GitHub nella comunità di Git. 33 | Invece di un semplice esempio di hosting Git, ho deciso di trasformare quella parte del libro, descrivendo più approfonditamente cosa sia GitHub e come usarlo al meglio. 34 | Se hai intenzione di imparare a usare Git, saper usare GitHub ti aiuterà a far parte di una comunità enorme, che ha un valore inestimabile, a prescindere dall'host Git che deciderai di usare per il tuo codice. 35 | 36 | L'altra grande novità dalla prima versione, è stata lo sviluppo e l'ascesa del protocollo HTTP per le transazioni in rete di Git. La maggior parte degli esempi del libro sono stati cambiati da SSH a HTTP perché è molto più semplice. 37 | 38 | È stato sorprendente vedere crescere Git negli anni, passando da un sistema di controllo di versione relativamente oscuro, a uno dominante i sistemi di controllo di versione. Sono felice che Pro Git sia andato così bene e che sia diventato uno dei pochi libri tecnici sul mercato ad avere un discreto successo ed essere, allo stesso tempo, completamente Open Source. 39 | 40 | 41 | Spero che gradirai questa versione aggiornata di Pro Git. 42 | 43 | [preface] 44 | == Prefazione di Ben Straub 45 | 46 | La prima edizione di questo libro mi ha legato a Git. Questa è stata la mia introduzione a un modo di fare software che ho sentito essere più naturale di qualsiasi cosa abbia visto prima. All'epoca sviluppavo già da diversi anni, ma questa è stata la svolta giusta che mi ha portato su una percorso molto più interessante del precedente. 47 | 48 | 49 | Ora, anni adopo, contribuisco a una implementazione di Git, ho lavorato per la più grande azienda di hosting Git, e ho viaggiato per il mondo insegnando GIT alla gente. Quando Scott mi ha chiesto se fossi interessato a lavorare alla seconda edizione, non ho avuto nemmeno bisogno di pensarci. 50 | 51 | 52 | È stato un piacere ed un privilegio lavorare a questo libro. 53 | Spero che ti sia d'aiuto tanto quanto lo è stato per me. 54 | 55 | 56 | [preface] 57 | == Dediche 58 | 59 | _A mia moglie, Becky, senza la quali quest'avventura non sarebbe mai iniziata. 60 | — Ben_ 61 | 62 | _Questa edizione è dedicata alle mie ragazze. 63 | A mia moglie Jessica che mi ha supportato per tutti questi anni e a mia figlia Josephine, che mi sosterrà quando sarò troppo vecchio per sapere cosa sta succedendo. — Scott_ 64 | -------------------------------------------------------------------------------- /book/toc.asc: -------------------------------------------------------------------------------- 1 | {{ toc }} 2 | -------------------------------------------------------------------------------- /callouts/1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/1.pdf -------------------------------------------------------------------------------- /callouts/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/1.png -------------------------------------------------------------------------------- /callouts/10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/10.pdf -------------------------------------------------------------------------------- /callouts/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/10.png -------------------------------------------------------------------------------- /callouts/2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/2.pdf -------------------------------------------------------------------------------- /callouts/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/2.png -------------------------------------------------------------------------------- /callouts/3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/3.pdf -------------------------------------------------------------------------------- /callouts/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/3.png -------------------------------------------------------------------------------- /callouts/4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/4.pdf -------------------------------------------------------------------------------- /callouts/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/4.png -------------------------------------------------------------------------------- /callouts/5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/5.pdf -------------------------------------------------------------------------------- /callouts/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/5.png -------------------------------------------------------------------------------- /callouts/6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/6.pdf -------------------------------------------------------------------------------- /callouts/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/6.png -------------------------------------------------------------------------------- /callouts/7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/7.pdf -------------------------------------------------------------------------------- /callouts/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/7.png -------------------------------------------------------------------------------- /callouts/8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/8.pdf -------------------------------------------------------------------------------- /callouts/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/8.png -------------------------------------------------------------------------------- /callouts/9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/9.pdf -------------------------------------------------------------------------------- /callouts/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/callouts/9.png -------------------------------------------------------------------------------- /ch01-getting-started.asc: -------------------------------------------------------------------------------- 1 | [[ch01-getting-started]] 2 | 3 | //// 4 | == Getting Started 5 | //// 6 | 7 | == Per Iniziare 8 | 9 | //// 10 | This chapter will be about getting started with Git. 11 | We will begin by explaining some background on version control tools, then move on to how to get Git running on your system and finally how to get it set up to start working with. 12 | At the end of this chapter you should understand why Git is around, why you should use it and you should be all set up to do so. 13 | //// 14 | 15 | 16 | Questo capitolo spiegherà come iniziare ad usare Git. 17 | Inizieremo con una introduzione sugli strumenti per il controllo delle versioni, per poi passare a come far funzionare Git sul proprio sistema e quindi come configurarlo per lavorarci. 18 | Alla fine di questo capitolo, dovresti capire a cosa serve Git, perché dovresti usarlo e dovresti essere pronto ad usarlo. 19 | 20 | include::book/01-introduction/sections/about-version-control.asc[] 21 | 22 | include::book/01-introduction/sections/history.asc[] 23 | 24 | include::book/01-introduction/sections/what-is-git.asc[] 25 | 26 | include::book/01-introduction/sections/command-line.asc[] 27 | 28 | include::book/01-introduction/sections/installing.asc[] 29 | 30 | include::book/01-introduction/sections/first-time-setup.asc[] 31 | 32 | include::book/01-introduction/sections/help.asc[] 33 | 34 | //// 35 | === Summary 36 | //// 37 | 38 | === Sommario 39 | 40 | //// 41 | You should have a basic understanding of what Git is and how it's different from any centralized version control systems you may have been using previously. 42 | You should also now have a working version of Git on your system that's set up with your personal identity. 43 | It's now time to learn some Git basics. 44 | //// 45 | 46 | Dovresti avere le basi per capire cos'è Git e com'è diverso dai CVCS che potresti aver usato. 47 | Dovresti avere già una versione funzionante di Git sul tuo sistema che è configurata con i tuoi dati. 48 | È ora tempo di imparare alcune delle basi di Git. 49 | -------------------------------------------------------------------------------- /ch02-git-basics-chapter.asc: -------------------------------------------------------------------------------- 1 | [[ch02-git-basics-chapter]] 2 | == Git Basics 3 | 4 | Se devi leggere un solo capitolo per iniziare a usare Git, leggi questo. 5 | Questo capitolo copre ogni comando di base di cui avrai bisogno per fare la maggior parte delle cose che farai con Git. 6 | Per la fine del capitolo, dovresti essere in grado di configurare e inizializare una repository, iniziare e stoppare il tracking dei file, e fare stage e commit delle modifiche. 7 | 8 | Mostreremo anche come configurare Git per ignorare alcuni file e file pattern, come annullare un errore velocemente e facilmente, come sfogliare la storia del tuo progetto e vedere le differenze tra i commit, e come fare push e pull dalle repository remote. 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 | === Sommario 25 | 26 | A questo punto, puoi fare tutte le operazioni di base locali di Git -- creare o clonare una repository, apportare modifiche, fare stage e commit di tali modifiche, e visualizzare la storia di tutte le modifiche che la repository ha subito. 27 | Dopo copriremo la funzione caratteristica di Git: il suo modello di branching. 28 | -------------------------------------------------------------------------------- /ch03-git-branching.asc: -------------------------------------------------------------------------------- 1 | [#ch03-git-branching] 2 | [[r_git_branching]] 3 | == Git Branching 4 | 5 | (((branches))) 6 | Nearly every VCS has some form of branching support. 7 | Branching means you diverge from the main line of development and continue to do work without messing with that main line. 8 | In many VCS tools, this is a somewhat expensive process, often requiring you to create a new copy of your source code directory, which can take a long time for large projects. 9 | 10 | Some people refer to Git's branching model as its ``killer feature,'' and it certainly sets Git apart in the VCS community. 11 | Why is it so special? 12 | The way Git branches is incredibly lightweight, making branching operations nearly instantaneous, and switching back and forth between branches generally just as fast. 13 | Unlike many other VCSs, Git encourages workflows that branch and merge often, even multiple times in a day. 14 | Understanding and mastering this feature gives you a powerful and unique tool and can entirely change the way that you develop. 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 | === Summary 29 | 30 | We've covered basic branching and merging in Git. 31 | You should feel comfortable creating and switching to new branches, switching between branches and merging local branches together. 32 | You should also be able to share your branches by pushing them to a shared server, working with others on shared branches and rebasing your branches before they are shared. 33 | Next, we'll cover what you'll need to run your own Git repository-hosting server. 34 | -------------------------------------------------------------------------------- /ch04-git-server.asc: -------------------------------------------------------------------------------- 1 | [#ch04-git-server] 2 | == Git on the Server 3 | 4 | (((serving repositories))) 5 | At this point, you should be able to do most of the day-to-day tasks for which you'll be using Git. 6 | However, in order to do any collaboration in Git, you'll need to have a remote Git repository. 7 | Although you can technically push changes to and pull changes from individuals' repositories, doing so is discouraged because you can fairly easily confuse what they're working on if you're not careful. 8 | Furthermore, you want your collaborators to be able to access the repository even if your computer is offline – having a more reliable common repository is often useful. 9 | Therefore, the preferred method for collaborating with someone is to set up an intermediate repository that you both have access to, and push to and pull from that. 10 | 11 | Running a Git server is fairly straightforward. 12 | First, you choose which protocols you want your server to communicate with. 13 | The first section of this chapter will cover the available protocols and the pros and cons of each. 14 | The next sections will explain some typical setups using those protocols and how to get your server running with them. 15 | Last, we'll go over a few hosted options, if you don't mind hosting your code on someone else's server and don't want to go through the hassle of setting up and maintaining your own server. 16 | 17 | If you have no interest in running your own server, you can skip to the last section of the chapter to see some options for setting up a hosted account and then move on to the next chapter, where we discuss the various ins and outs of working in a distributed source control environment. 18 | 19 | A remote repository is generally a _bare repository_ – a Git repository that has no working directory. 20 | Because the repository is only used as a collaboration point, there is no reason to have a snapshot checked out on disk; it's just the Git data. 21 | In the simplest terms, a bare repository is the contents of your project's `.git` directory and nothing else. 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 | === Summary 42 | 43 | You have several options to get a remote Git repository up and running so that you can collaborate with others or share your work. 44 | 45 | Running your own server gives you a lot of control and allows you to run the server within your own firewall, but such a server generally requires a fair amount of your time to set up and maintain. 46 | If you place your data on a hosted server, it's easy to set up and maintain; however, you have to be able to keep your code on someone else's servers, and some organizations don't allow that. 47 | 48 | It should be fairly straightforward to determine which solution or combination of solutions is appropriate for you and your organization. 49 | -------------------------------------------------------------------------------- /ch05-distributed-git.asc: -------------------------------------------------------------------------------- 1 | [#ch05-distributed-git] 2 | [[r_distributed_git]] 3 | == Distributed Git 4 | 5 | (((distributed git))) 6 | Now that you have a remote Git repository set up as a point for all the developers to share their code, and you're familiar with basic Git commands in a local workflow, you'll look at how to utilize some of the distributed workflows that Git affords you. 7 | 8 | In this chapter, you'll see how to work with Git in a distributed environment as a contributor and an integrator. 9 | That is, you'll learn how to contribute code successfully to a project and make it as easy on you and the project maintainer as possible, and also how to maintain a project successfully with a number of developers contributing. 10 | 11 | include::book/05-distributed-git/sections/distributed-workflows.asc[] 12 | 13 | include::book/05-distributed-git/sections/contributing.asc[] 14 | 15 | include::book/05-distributed-git/sections/maintaining.asc[] 16 | 17 | === Summary 18 | 19 | You should feel fairly comfortable contributing to a project in Git as well as maintaining your own project or integrating other users' contributions. 20 | Congratulations on being an effective Git developer! 21 | In the next chapter, you'll learn about how to use the largest and most popular Git hosting service, GitHub. 22 | -------------------------------------------------------------------------------- /ch06-github.asc: -------------------------------------------------------------------------------- 1 | [#ch06-github] 2 | [[r_github]] 3 | == GitHub 4 | 5 | (((GitHub))) 6 | GitHub is the single largest host for Git repositories, and is the central point of collaboration for millions of developers and projects. 7 | A large percentage of all Git repositories are hosted on GitHub, and many open-source projects use it for Git hosting, issue tracking, code review, and other things. 8 | So while it's not a direct part of the Git open source project, there's a good chance that you'll want or need to interact with GitHub at some point while using Git professionally. 9 | 10 | This chapter is about using GitHub effectively. 11 | We'll cover signing up for and managing an account, creating and using Git repositories, common workflows to contribute to projects and to accept contributions to yours, GitHub's programmatic interface and lots of little tips to make your life easier in general. 12 | 13 | If you are not interested in using GitHub to host your own projects or to collaborate with other projects that are hosted on GitHub, you can safely skip to <>. 14 | 15 | [WARNING] 16 | .Interfaces Change 17 | ==== 18 | It's important to note that like many active websites, the UI elements in these screenshots are bound to change over time. Hopefully the general idea of what we're trying to accomplish here will still be there, but if you want more up to date versions of these screens, the online versions of this book may have newer screenshots. 19 | ==== 20 | 21 | include::book/06-github/sections/1-setting-up-account.asc[] 22 | 23 | include::book/06-github/sections/2-contributing.asc[] 24 | 25 | include::book/06-github/sections/3-maintaining.asc[] 26 | 27 | include::book/06-github/sections/4-managing-organization.asc[] 28 | 29 | include::book/06-github/sections/5-scripting.asc[] 30 | 31 | === Summary 32 | 33 | Now you're a GitHub user. 34 | You know how to create an account, manage an organization, create and push to repositories, contribute to other peoples projects and accept contributions from others. 35 | In the next chapter, you'll learn more powerful tools and tips for dealing with complex situations, which will truly make you a Git master. 36 | -------------------------------------------------------------------------------- /ch07-git-tools.asc: -------------------------------------------------------------------------------- 1 | [#ch07-git-tools] 2 | [[r_git_tools]] 3 | == Git Tools 4 | 5 | By now, you’ve learned most of the day-to-day commands and workflows that you need to manage or maintain a Git repository for your source code control. 6 | You’ve accomplished the basic tasks of tracking and committing files, and you’ve harnessed the power of the staging area and lightweight topic branching and merging. 7 | 8 | Now you’ll explore a number of very powerful things that Git can do that you may not necessarily use on a day-to-day basis but that you may need at some point. 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 | === Summary 39 | 40 | You’ve seen a number of advanced tools that allow you to manipulate your commits and staging area more precisely. 41 | When you notice issues, you should be able to easily figure out what commit introduced them, when, and by whom. 42 | If you want to use subprojects in your project, you’ve learned how to accommodate those needs. 43 | At this point, you should be able to do most of the things in Git that you’ll need on the command line day to day and feel comfortable doing so. 44 | -------------------------------------------------------------------------------- /ch08-customizing-git.asc: -------------------------------------------------------------------------------- 1 | [#ch08-customizing-git] 2 | [[r_customizing_git]] 3 | == Customizing Git 4 | 5 | So far, we've covered the basics of how Git works and how to use it, and we've introduced a number of tools that Git provides to help you use it easily and efficiently. 6 | In this chapter, we'll see how you can make Git operate in a more customized fashion, by introducing several important configuration settings and the hooks system. 7 | With these tools, it's easy to get Git to work exactly the way you, your company, or your group needs it to. 8 | 9 | include::book/08-customizing-git/sections/config.asc[] 10 | 11 | include::book/08-customizing-git/sections/attributes.asc[] 12 | 13 | include::book/08-customizing-git/sections/hooks.asc[] 14 | 15 | include::book/08-customizing-git/sections/policy.asc[] 16 | 17 | === Summary 18 | 19 | We've covered most of the major ways that you can customize your Git client and server to best fit your workflow and projects. 20 | You've learned about all sorts of configuration settings, file-based attributes, and event hooks, and you've built an example policy-enforcing server. 21 | You should now be able to make Git fit nearly any workflow you can dream up. 22 | -------------------------------------------------------------------------------- /ch09-git-and-other-scms.asc: -------------------------------------------------------------------------------- 1 | [#ch09-git-and-other-scms] 2 | == Git and Other Systems 3 | 4 | The world isn't perfect. 5 | Usually, you can't immediately switch every project you come in contact with to Git. 6 | Sometimes you're stuck on a project using another VCS, and wish it was Git. 7 | We'll spend the first part of this chapter learning about ways to use Git as a client when the project you're working on is hosted in a different system. 8 | 9 | At some point, you may want to convert your existing project to Git. 10 | The second part of this chapter covers how to migrate your project into Git from several specific systems, as well as a method that will work if no pre-built import tool exists. 11 | 12 | === Git as a Client 13 | 14 | (((Git as a client))) 15 | Git provides such a nice experience for developers that many people have figured out how to use it on their workstation, even if the rest of their team is using an entirely different VCS. 16 | There are a number of these adapters, called ``bridges,'' available. 17 | Here we'll cover the ones you're most likely to run into in the wild. 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 | === Migrating to Git 29 | 30 | (((Migrating to Git))) 31 | If you have an existing codebase in another VCS but you've decided to start using Git, you must migrate your project one way or another. 32 | This section goes over some importers for common systems, and then demonstrates how to develop your own custom importer. 33 | You'll learn how to import data from several of the bigger professionally used SCM systems, because they make up the majority of users who are switching, and because high-quality tools for them are easy to come by. 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 | === Summary 46 | 47 | You should feel comfortable using Git as a client for other version-control systems, or importing nearly any existing repository into Git without losing data. 48 | In the next chapter, we'll cover the raw internals of Git so you can craft every single byte, if need be. 49 | -------------------------------------------------------------------------------- /ch10-git-internals.asc: -------------------------------------------------------------------------------- 1 | [#ch10-git-internals] 2 | [[r_git_internals]] 3 | == Git Internals 4 | 5 | You may have skipped to this chapter from a previous chapter, or you may have gotten here after reading the rest of the book – in either case, this is where we'll go over the inner workings and implementation of Git. 6 | We found that learning this information was fundamentally important to understanding how useful and powerful Git is, but others have argued to us that it can be confusing and unnecessarily complex for beginners. 7 | Thus, we've made this discussion the last chapter in the book so you could read it early or later in your learning process. 8 | We leave it up to you to decide. 9 | 10 | Now that you're here, let's get started. 11 | First, if it isn't yet clear, Git is fundamentally a content-addressable filesystem with a VCS user interface written on top of it. 12 | You'll learn more about what this means in a bit. 13 | 14 | In the early days of Git (mostly pre 1.5), the user interface was much more complex because it emphasized this filesystem rather than a polished VCS. 15 | In the last few years, the UI has been refined until it's as clean and easy to use as any system out there; but often, the stereotype lingers about the early Git UI that was complex and difficult to learn. 16 | 17 | The content-addressable filesystem layer is amazingly cool, so I'll cover that first in this chapter; then, you'll learn about the transport mechanisms and the repository maintenance tasks that you may eventually have to deal with. 18 | 19 | include::book/10-git-internals/sections/plumbing-porcelain.asc[] 20 | 21 | include::book/10-git-internals/sections/objects.asc[] 22 | 23 | include::book/10-git-internals/sections/refs.asc[] 24 | 25 | include::book/10-git-internals/sections/packfiles.asc[] 26 | 27 | include::book/10-git-internals/sections/refspec.asc[] 28 | 29 | include::book/10-git-internals/sections/transfer-protocols.asc[] 30 | 31 | include::book/10-git-internals/sections/maintenance.asc[] 32 | 33 | include::book/10-git-internals/sections/environment.asc[] 34 | 35 | === Summary 36 | 37 | You should have a pretty good understanding of what Git does in the background and, to some degree, how it's implemented. 38 | This chapter has covered a number of plumbing commands – commands that are lower level and simpler than the porcelain commands you've learned about in the rest of the book. 39 | Understanding how Git works at a lower level should make it easier to understand why it's doing what it's doing and also to write your own tools and helping scripts to make your specific workflow work for you. 40 | 41 | Git as a content-addressable filesystem is a very powerful tool that you can easily use as more than just a VCS. 42 | We hope you can use your newfound knowledge of Git internals to implement your own cool application of this technology and feel more comfortable using Git in more advanced ways. 43 | -------------------------------------------------------------------------------- /diagram-source/progit.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/diagram-source/progit.sketch -------------------------------------------------------------------------------- /images/2fa-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/2fa-1.png -------------------------------------------------------------------------------- /images/account-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/account-settings.png -------------------------------------------------------------------------------- /images/advance-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/advance-master.png -------------------------------------------------------------------------------- /images/advance-testing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/advance-testing.png -------------------------------------------------------------------------------- /images/areas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/areas.png -------------------------------------------------------------------------------- /images/avatar-crop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/avatar-crop.png -------------------------------------------------------------------------------- /images/basic-branching-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-branching-1.png -------------------------------------------------------------------------------- /images/basic-branching-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-branching-2.png -------------------------------------------------------------------------------- /images/basic-branching-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-branching-3.png -------------------------------------------------------------------------------- /images/basic-branching-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-branching-4.png -------------------------------------------------------------------------------- /images/basic-branching-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-branching-5.png -------------------------------------------------------------------------------- /images/basic-branching-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-branching-6.png -------------------------------------------------------------------------------- /images/basic-merging-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-merging-1.png -------------------------------------------------------------------------------- /images/basic-merging-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-merging-2.png -------------------------------------------------------------------------------- /images/basic-rebase-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-rebase-1.png -------------------------------------------------------------------------------- /images/basic-rebase-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-rebase-2.png -------------------------------------------------------------------------------- /images/basic-rebase-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-rebase-3.png -------------------------------------------------------------------------------- /images/basic-rebase-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/basic-rebase-4.png -------------------------------------------------------------------------------- /images/benevolent-dictator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/benevolent-dictator.png -------------------------------------------------------------------------------- /images/bitnami.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/bitnami.png -------------------------------------------------------------------------------- /images/blink-01-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-01-start.png -------------------------------------------------------------------------------- /images/blink-02-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-02-pr.png -------------------------------------------------------------------------------- /images/blink-03-pull-request-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-03-pull-request-open.png -------------------------------------------------------------------------------- /images/blink-04-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-04-email.png -------------------------------------------------------------------------------- /images/blink-04-pr-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-04-pr-comment.png -------------------------------------------------------------------------------- /images/blink-05-general-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-05-general-comment.png -------------------------------------------------------------------------------- /images/blink-06-final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-06-final.png -------------------------------------------------------------------------------- /images/blink-pull-request-open copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-pull-request-open copy.png -------------------------------------------------------------------------------- /images/blink-pull-request-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/blink-pull-request-open.png -------------------------------------------------------------------------------- /images/branch-and-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/branch-and-history.png -------------------------------------------------------------------------------- /images/branch_widget_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/branch_widget_mac.png -------------------------------------------------------------------------------- /images/branch_widget_win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/branch_widget_win.png -------------------------------------------------------------------------------- /images/centralized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/centralized.png -------------------------------------------------------------------------------- /images/centralized_workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/centralized_workflow.png -------------------------------------------------------------------------------- /images/checkout-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/checkout-master.png -------------------------------------------------------------------------------- /images/clean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/clean.png -------------------------------------------------------------------------------- /images/collaborators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/collaborators.png -------------------------------------------------------------------------------- /images/commit-and-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/commit-and-tree.png -------------------------------------------------------------------------------- /images/commits-and-parents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/commits-and-parents.png -------------------------------------------------------------------------------- /images/data-model-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/data-model-1.png -------------------------------------------------------------------------------- /images/data-model-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/data-model-2.png -------------------------------------------------------------------------------- /images/data-model-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/data-model-3.png -------------------------------------------------------------------------------- /images/data-model-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/data-model-4.png -------------------------------------------------------------------------------- /images/deltas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/deltas.png -------------------------------------------------------------------------------- /images/distributed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/distributed.png -------------------------------------------------------------------------------- /images/double-dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/double-dot.png -------------------------------------------------------------------------------- /images/egit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/egit.png -------------------------------------------------------------------------------- /images/email-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/email-settings.png -------------------------------------------------------------------------------- /images/emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/emoji.png -------------------------------------------------------------------------------- /images/forkbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/forkbutton.png -------------------------------------------------------------------------------- /images/git-bash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/git-bash.png -------------------------------------------------------------------------------- /images/git-diff-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/git-diff-check.png -------------------------------------------------------------------------------- /images/git-fusion-boot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/git-fusion-boot.png -------------------------------------------------------------------------------- /images/git-fusion-perforce-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/git-fusion-perforce-graph.png -------------------------------------------------------------------------------- /images/git-gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/git-gui.png -------------------------------------------------------------------------------- /images/git-instaweb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/git-instaweb.png -------------------------------------------------------------------------------- /images/git-osx-installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/git-osx-installer.png -------------------------------------------------------------------------------- /images/git-tfs-ct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/git-tfs-ct.png -------------------------------------------------------------------------------- /images/github_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/github_mac.png -------------------------------------------------------------------------------- /images/github_win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/github_win.png -------------------------------------------------------------------------------- /images/gitk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/gitk.png -------------------------------------------------------------------------------- /images/gitlab-broadcast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/gitlab-broadcast.png -------------------------------------------------------------------------------- /images/gitlab-groups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/gitlab-groups.png -------------------------------------------------------------------------------- /images/gitlab-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/gitlab-menu.png -------------------------------------------------------------------------------- /images/gitlab-users.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/gitlab-users.png -------------------------------------------------------------------------------- /images/head-to-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/head-to-master.png -------------------------------------------------------------------------------- /images/head-to-testing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/head-to-testing.png -------------------------------------------------------------------------------- /images/hubot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/hubot.png -------------------------------------------------------------------------------- /images/integration-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/integration-manager.png -------------------------------------------------------------------------------- /images/interesting-rebase-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/interesting-rebase-1.png -------------------------------------------------------------------------------- /images/interesting-rebase-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/interesting-rebase-2.png -------------------------------------------------------------------------------- /images/interesting-rebase-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/interesting-rebase-3.png -------------------------------------------------------------------------------- /images/interesting-rebase-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/interesting-rebase-4.png -------------------------------------------------------------------------------- /images/interesting-rebase-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/interesting-rebase-5.png -------------------------------------------------------------------------------- /images/large-merges-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/large-merges-1.png -------------------------------------------------------------------------------- /images/large-merges-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/large-merges-2.png -------------------------------------------------------------------------------- /images/lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/lifecycle.png -------------------------------------------------------------------------------- /images/local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/local.png -------------------------------------------------------------------------------- /images/lr-branches-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/lr-branches-1.png -------------------------------------------------------------------------------- /images/lr-branches-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/lr-branches-2.png -------------------------------------------------------------------------------- /images/maint-01-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-01-email.png -------------------------------------------------------------------------------- /images/maint-02-merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-02-merge.png -------------------------------------------------------------------------------- /images/maint-03-email-resp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-03-email-resp.png -------------------------------------------------------------------------------- /images/maint-04-target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-04-target.png -------------------------------------------------------------------------------- /images/maint-05-mentions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-05-mentions.png -------------------------------------------------------------------------------- /images/maint-06-unsubscribe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-06-unsubscribe.png -------------------------------------------------------------------------------- /images/maint-07-notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-07-notifications.png -------------------------------------------------------------------------------- /images/maint-08-notifications-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-08-notifications-page.png -------------------------------------------------------------------------------- /images/maint-09-contrib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-09-contrib.png -------------------------------------------------------------------------------- /images/maint-10-default-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-10-default-branch.png -------------------------------------------------------------------------------- /images/maint-11-transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/maint-11-transfer.png -------------------------------------------------------------------------------- /images/managed-team-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/managed-team-1.png -------------------------------------------------------------------------------- /images/managed-team-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/managed-team-2.png -------------------------------------------------------------------------------- /images/managed-team-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/managed-team-3.png -------------------------------------------------------------------------------- /images/managed-team-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/managed-team-flow.png -------------------------------------------------------------------------------- /images/markdown-01-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/markdown-01-example.png -------------------------------------------------------------------------------- /images/markdown-02-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/markdown-02-tasks.png -------------------------------------------------------------------------------- /images/markdown-03-task-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/markdown-03-task-summary.png -------------------------------------------------------------------------------- /images/markdown-04-fenced-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/markdown-04-fenced-code.png -------------------------------------------------------------------------------- /images/markdown-05-quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/markdown-05-quote.png -------------------------------------------------------------------------------- /images/markdown-06-emoji-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/markdown-06-emoji-complete.png -------------------------------------------------------------------------------- /images/markdown-07-emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/markdown-07-emoji.png -------------------------------------------------------------------------------- /images/markdown-08-drag-drop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/markdown-08-drag-drop.png -------------------------------------------------------------------------------- /images/mentions-01-syntax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/mentions-01-syntax.png -------------------------------------------------------------------------------- /images/mentions-02-render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/mentions-02-render.png -------------------------------------------------------------------------------- /images/mentions-03-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/mentions-03-closed.png -------------------------------------------------------------------------------- /images/merging-workflows-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/merging-workflows-1.png -------------------------------------------------------------------------------- /images/merging-workflows-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/merging-workflows-2.png -------------------------------------------------------------------------------- /images/merging-workflows-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/merging-workflows-3.png -------------------------------------------------------------------------------- /images/merging-workflows-4 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/merging-workflows-4 2.png -------------------------------------------------------------------------------- /images/merging-workflows-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/merging-workflows-4.png -------------------------------------------------------------------------------- /images/merging-workflows-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/merging-workflows-5.png -------------------------------------------------------------------------------- /images/new-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/new-repo.png -------------------------------------------------------------------------------- /images/neworg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/neworg.png -------------------------------------------------------------------------------- /images/newrepo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/newrepo.png -------------------------------------------------------------------------------- /images/newrepoform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/newrepoform.png -------------------------------------------------------------------------------- /images/notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/notifications.png -------------------------------------------------------------------------------- /images/orgs-01-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/orgs-01-page.png -------------------------------------------------------------------------------- /images/orgs-02-teams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/orgs-02-teams.png -------------------------------------------------------------------------------- /images/orgs-03-audit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/orgs-03-audit.png -------------------------------------------------------------------------------- /images/p4merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/p4merge.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/perils-of-rebasing-1.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/perils-of-rebasing-2.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/perils-of-rebasing-3.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/perils-of-rebasing-4.png -------------------------------------------------------------------------------- /images/perils-of-rebasing-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/perils-of-rebasing-5.png -------------------------------------------------------------------------------- /images/posh-git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/posh-git.png -------------------------------------------------------------------------------- /images/pr-01-fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/pr-01-fail.png -------------------------------------------------------------------------------- /images/pr-02-merge-fix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/pr-02-merge-fix.png -------------------------------------------------------------------------------- /images/public-small-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/public-small-1.png -------------------------------------------------------------------------------- /images/public-small-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/public-small-2.png -------------------------------------------------------------------------------- /images/public-small-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/public-small-3.png -------------------------------------------------------------------------------- /images/rebasing-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/rebasing-1.png -------------------------------------------------------------------------------- /images/rebasing-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/rebasing-2.png -------------------------------------------------------------------------------- /images/remote-branches-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/remote-branches-1.png -------------------------------------------------------------------------------- /images/remote-branches-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/remote-branches-2.png -------------------------------------------------------------------------------- /images/remote-branches-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/remote-branches-3.png -------------------------------------------------------------------------------- /images/remote-branches-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/remote-branches-4.png -------------------------------------------------------------------------------- /images/remote-branches-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/remote-branches-5.png -------------------------------------------------------------------------------- /images/replace1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/replace1.png -------------------------------------------------------------------------------- /images/replace2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/replace2.png -------------------------------------------------------------------------------- /images/replace3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/replace3.png -------------------------------------------------------------------------------- /images/replace4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/replace4.png -------------------------------------------------------------------------------- /images/replace5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/replace5.png -------------------------------------------------------------------------------- /images/reposettingslink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reposettingslink.png -------------------------------------------------------------------------------- /images/rerere1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/rerere1.png -------------------------------------------------------------------------------- /images/rerere2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/rerere2.png -------------------------------------------------------------------------------- /images/rerere3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/rerere3.png -------------------------------------------------------------------------------- /images/reset-checkout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-checkout.png -------------------------------------------------------------------------------- /images/reset-ex1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-ex1.png -------------------------------------------------------------------------------- /images/reset-ex2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-ex2.png -------------------------------------------------------------------------------- /images/reset-ex3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-ex3.png -------------------------------------------------------------------------------- /images/reset-ex4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-ex4.png -------------------------------------------------------------------------------- /images/reset-ex5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-ex5.png -------------------------------------------------------------------------------- /images/reset-ex6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-ex6.png -------------------------------------------------------------------------------- /images/reset-hard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-hard.png -------------------------------------------------------------------------------- /images/reset-mixed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-mixed.png -------------------------------------------------------------------------------- /images/reset-path1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-path1.png -------------------------------------------------------------------------------- /images/reset-path2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-path2.png -------------------------------------------------------------------------------- /images/reset-path3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-path3.png -------------------------------------------------------------------------------- /images/reset-soft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-soft.png -------------------------------------------------------------------------------- /images/reset-squash-r1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-squash-r1.png -------------------------------------------------------------------------------- /images/reset-squash-r2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-squash-r2.png -------------------------------------------------------------------------------- /images/reset-squash-r3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-squash-r3.png -------------------------------------------------------------------------------- /images/reset-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-start.png -------------------------------------------------------------------------------- /images/reset-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/reset-workflow.png -------------------------------------------------------------------------------- /images/scripting-01-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/scripting-01-services.png -------------------------------------------------------------------------------- /images/scripting-02-email-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/scripting-02-email-service.png -------------------------------------------------------------------------------- /images/scripting-03-webhook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/scripting-03-webhook.png -------------------------------------------------------------------------------- /images/scripting-04-webhook-debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/scripting-04-webhook-debug.png -------------------------------------------------------------------------------- /images/scripting-05-access-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/scripting-05-access-token.png -------------------------------------------------------------------------------- /images/scripting-06-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/scripting-06-comment.png -------------------------------------------------------------------------------- /images/scripting-07-status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/scripting-07-status.png -------------------------------------------------------------------------------- /images/signup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/signup.png -------------------------------------------------------------------------------- /images/small-team-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/small-team-1.png -------------------------------------------------------------------------------- /images/small-team-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/small-team-2.png -------------------------------------------------------------------------------- /images/small-team-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/small-team-3.png -------------------------------------------------------------------------------- /images/small-team-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/small-team-4.png -------------------------------------------------------------------------------- /images/small-team-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/small-team-5.png -------------------------------------------------------------------------------- /images/small-team-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/small-team-6.png -------------------------------------------------------------------------------- /images/small-team-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/small-team-7.png -------------------------------------------------------------------------------- /images/small-team-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/small-team-flow.png -------------------------------------------------------------------------------- /images/smudge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/smudge.png -------------------------------------------------------------------------------- /images/snapshots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/snapshots.png -------------------------------------------------------------------------------- /images/ssh-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/ssh-keys.png -------------------------------------------------------------------------------- /images/topic-branches-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/topic-branches-1.png -------------------------------------------------------------------------------- /images/topic-branches-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/topic-branches-2.png -------------------------------------------------------------------------------- /images/two-branches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/two-branches.png -------------------------------------------------------------------------------- /images/undomerge-reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/undomerge-reset.png -------------------------------------------------------------------------------- /images/undomerge-revert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/undomerge-revert.png -------------------------------------------------------------------------------- /images/undomerge-revert2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/undomerge-revert2.png -------------------------------------------------------------------------------- /images/undomerge-revert3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/undomerge-revert3.png -------------------------------------------------------------------------------- /images/undomerge-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/undomerge-start.png -------------------------------------------------------------------------------- /images/vs-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/vs-1.png -------------------------------------------------------------------------------- /images/vs-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/vs-2.png -------------------------------------------------------------------------------- /images/your-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/your-profile.png -------------------------------------------------------------------------------- /images/zsh-oh-my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/zsh-oh-my.png -------------------------------------------------------------------------------- /images/zsh-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progit/progit2-it/08e643e3d7391c7f503a9de7965bf5579fb9f727/images/zsh-prompt.png -------------------------------------------------------------------------------- /progit.asc: -------------------------------------------------------------------------------- 1 | Pro Git 2 | ======= 3 | :doctype: book 4 | :docinfo: 5 | :toc: 6 | :toclevels: 2 7 | :pagenums: 8 | :front-cover-image: image:book/cover.png[width=1050,height=1600] 9 | 10 | ifdef::ebook-format[:leveloffset: -1] 11 | 12 | include::book/introduction.asc[] 13 | 14 | include::ch01-getting-started.asc[] 15 | 16 | include::ch02-git-basics-chapter.asc[] 17 | 18 | include::ch03-git-branching.asc[] 19 | 20 | include::ch04-git-server.asc[] 21 | 22 | include::ch05-distributed-git.asc[] 23 | 24 | include::ch06-github.asc[] 25 | 26 | include::ch07-git-tools.asc[] 27 | 28 | include::ch08-customizing-git.asc[] 29 | 30 | include::ch09-git-and-other-scms.asc[] 31 | 32 | include::ch10-git-internals.asc[] 33 | 34 | include::A-git-in-other-environments.asc[] 35 | 36 | include::B-embedding-git.asc[] 37 | 38 | include::C-git-commands.asc[] 39 | 40 | ////ifndef::ebook-format[include::index.asc[]] 41 | -------------------------------------------------------------------------------- /status.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "it", 3 | "language": "Italian", 4 | "maintainers": ["daftano,schacon"], 5 | "files": { 6 | "01-introduction": { 7 | "1-introduction.asc": 100, 8 | "sections/about-version-control.asc": 100, 9 | "sections/basics.asc": 30, 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": 1, 18 | "sections/aliases.asc": 0, 19 | "sections/getting-a-repository.asc": 0, 20 | "sections/recording-changes.asc": 1, 21 | "sections/remotes.asc": 0, 22 | "sections/tagging.asc": 0, 23 | "sections/undoing.asc": 1, 24 | "sections/viewing-history.asc": 0 25 | }, 26 | "03-git-branching": { 27 | "1-git-branching.asc": 0, 28 | "sections/basic-branching-and-merging.asc": 0, 29 | "sections/branch-management.asc": 0, 30 | "sections/nutshell.asc": 1, 31 | "sections/rebasing.asc": 0, 32 | "sections/remote-branches.asc": 1, 33 | "sections/workflows.asc": 0 34 | }, 35 | "04-git-server": { 36 | "1-git-server.asc": 0, 37 | "sections/generating-ssh-key.asc": 0, 38 | "sections/git-daemon.asc": 0, 39 | "sections/git-on-a-server.asc": 0, 40 | "sections/gitlab.asc": 0, 41 | "sections/gitweb.asc": 0, 42 | "sections/hosted.asc": 0, 43 | "sections/protocols.asc": 0, 44 | "sections/setting-up-server.asc": 0, 45 | "sections/smart-http.asc": 0 46 | }, 47 | "05-distributed-git": { 48 | "1-distributed-git.asc": 0, 49 | "sections/contributing.asc": 0, 50 | "sections/distributed-workflows.asc": 0, 51 | "sections/maintaining.asc": 1 52 | }, 53 | "06-github": { 54 | "1-github.asc": 0, 55 | "sections/1-setting-up-account.asc": 0, 56 | "sections/2-contributing.asc": 0, 57 | "sections/3-maintaining.asc": 1, 58 | "sections/4-managing-organization.asc": 0, 59 | "sections/5-scripting.asc": 0 60 | }, 61 | "07-git-tools": { 62 | "1-git-tools.asc": 0, 63 | "sections/advanced-merging.asc": 0, 64 | "sections/bundling.asc": 0, 65 | "sections/credentials.asc": 0, 66 | "sections/debugging.asc": 0, 67 | "sections/interactive-staging.asc": 0, 68 | "sections/notes.asc": 0, 69 | "sections/replace.asc": 0, 70 | "sections/rerere.asc": 0, 71 | "sections/reset.asc": 1, 72 | "sections/revision-selection.asc": 0, 73 | "sections/rewriting-history.asc": 0, 74 | "sections/searching.asc": 0, 75 | "sections/signing.asc": 0, 76 | "sections/stashing-cleaning.asc": 0, 77 | "sections/submodules.asc": 1, 78 | "sections/subtree-merges.asc": 0 79 | }, 80 | "08-customizing-git": { 81 | "1-customizing-git.asc": 0, 82 | "sections/attributes.asc": 0, 83 | "sections/config.asc": 1, 84 | "sections/hooks.asc": 0, 85 | "sections/policy.asc": 0 86 | }, 87 | "09-git-and-other-scms": { 88 | "1-git-and-other-scms.asc": 0, 89 | "sections/client-hg.asc": 0, 90 | "sections/client-p4.asc": 0, 91 | "sections/client-svn.asc": 0, 92 | "sections/client-tfs.asc": 0, 93 | "sections/import-custom.asc": 0, 94 | "sections/import-hg.asc": 0, 95 | "sections/import-p4.asc": 0, 96 | "sections/import-svn.asc": 0, 97 | "sections/import-tfs.asc": 0 98 | }, 99 | "10-git-internals": { 100 | "1-git-internals.asc": 0, 101 | "sections/environment.asc": 0, 102 | "sections/maintenance.asc": 0, 103 | "sections/objects.asc": 0, 104 | "sections/packfiles.asc": 0, 105 | "sections/plumbing-porcelain.asc": 0, 106 | "sections/refs.asc": 1, 107 | "sections/refspec.asc": 0, 108 | "sections/transfer-protocols.asc": 0 109 | }, 110 | "A-git-in-other-environments": { 111 | "1-git-other-environments.asc": 0, 112 | "sections/bash.asc": 0, 113 | "sections/eclipse.asc": 0, 114 | "sections/guis.asc": 0, 115 | "sections/powershell.asc": 0, 116 | "sections/visualstudio.asc": 0, 117 | "sections/zsh.asc": 0 118 | }, 119 | "B-embedding-git": { 120 | "1-embedding-git.asc": 0, 121 | "sections/command-line.asc": 0, 122 | "sections/jgit.asc": 0, 123 | "sections/libgit2.asc": 0 124 | }, 125 | "C-git-commands": { 126 | "1-git-commands.asc": 1 127 | } 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /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/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.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/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 | --------------------------------------------------------------------------------