CINXE.COM
Git - git-range-diff Documentation
<!DOCTYPE html> <html lang="pt_BR"> <head> <script type="text/javascript"> const currentTheme = localStorage.getItem("theme") if (currentTheme) { const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)").matches if ((prefersDarkScheme && currentTheme === "light") || (!prefersDarkScheme && currentTheme === "dark")) { document.documentElement.dataset.theme = currentTheme } } </script> <meta charset='utf-8'> <meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Git - git-range-diff Documentation</title> <link href="/favicon.ico" rel='shortcut icon' type='image/x-icon'> <link rel="stylesheet" href="/application.min.css"> </head> <body id="documentation"> <div class="inner"> <header> <a id="logo" href="/"><img src="/images/logo@2x.png" width="110" height="46" alt="Git" class="no-filter" /></a> <span id="tagline"></span> <script type="text/javascript"> const taglines = [ "fast-version-control", "everything-is-local", "distributed-even-if-your-workflow-isnt", "local-branching-on-the-cheap", "distributed-is-the-new-centralized" ]; var tagline = taglines[Math.floor(Math.random() * taglines.length)]; document.getElementById('tagline').innerHTML = '--' + tagline; </script> <div id="search-container"> <form id="search" action="/search/results"> <input id="search-text" name="search" placeholder="Type / to search entire site…" autocomplete="off" type="text" /> </form> <div id="search-results"></div> </div> <img src="/images/dark-mode.svg" id="dark-mode-button" /> </header> </div> <div class="inner"> <div id="content-wrapper"> <div tabindex="1" class="sidebar-btn"></div> <aside class="sidebar" id="sidebar"> <nav> <ul> <li> <a href="/about">About</a> <ul> </ul> </li> <li> <a href="/doc" class="active">Documentation</a> <ul class="expanded"> <li> <a href="/docs" class="active">Reference</a> </li> <li> <a href="/book">Book</a> </li> <li> <a href="/videos">Videos</a> </li> <li> <a href="/doc/ext">External Links</a> </li> </ul> </li> <li> <a href="/downloads">Downloads</a> <ul > <li> <a href="/downloads/guis">GUI Clients</a> </li> <li> <a href="/downloads/logos">Logos</a> </li> </ul> </li> <li> <a href="/community">Community</a> </li> </ul> </nav> </aside> <div id="content"> <div id='reference-version'> <a class="dropdown-trigger" id="reference-languages-trigger" data-panel-id="l10n-versions-dropdown" href="#"> Português (Brasil) ▾</a> <div class='dropdown-panel right' id='l10n-versions-dropdown'> <header>Localized versions of <strong>git-range-diff</strong> manual</header> <ol class='reference-previous-versions'> <li> <a href="/docs/git-range-diff"><span class="version">English</span> </a> </li> <li> <a href="/docs/git-range-diff/fr"><span class="version">Français</span> </a> </li> <li> <a href="/docs/git-range-diff/pt_BR"><span class="version">Português (Brasil)</span> </a> </li> <li> <a href="/docs/git-range-diff/zh_HANS-CN"><span class="version">简体中文</span> </a> </li> </ol> <footer> Want to read in your language or fix typos?<br/> <a href="https://github.com/jnavila/git-manpages-l10n">You can help translate this page</a>. </footer> </div> <a class="dropdown-trigger" id="reference-topics-trigger" data-panel-id="topics-dropdown" href="#">Topics ▾</a> <div class='dropdown-panel right' id='topics-dropdown'> <div class='three-column'> <div class='column-left'> <h3 class='setup'>Setup and Config</h3> <ul class='unstyled'> <li> <a href="/docs/git/pt_BR"> git </a> </li> <li> <a href="/docs/git-config/pt_BR"> config </a> </li> <li> <a href="/docs/git-help/pt_BR"> help </a> </li> <li> <a href="/docs/git-bugreport/pt_BR"> bugreport </a> </li> <li> <a href="/doc/credential-helpers"> Credential helpers </a> </li> </ul> <h3 class='projects'>Getting and Creating Projects</h3> <ul class='unstyled'> <li> <a href="/docs/git-init/pt_BR"> init </a> </li> <li> <a href="/docs/git-clone/pt_BR"> clone </a> </li> </ul> <h3 class='snapshotting'>Basic Snapshotting</h3> <ul class='unstyled'> <li> <a href="/docs/git-add/pt_BR"> add </a> </li> <li> <a href="/docs/git-status/pt_BR"> status </a> </li> <li> <a href="/docs/git-diff/pt_BR"> diff </a> </li> <li> <a href="/docs/git-commit/pt_BR"> commit </a> </li> <li> <a href="/docs/git-notes/pt_BR"> notes </a> </li> <li> <a href="/docs/git-restore/pt_BR"> restore </a> </li> <li> <a href="/docs/git-reset/pt_BR"> reset </a> </li> <li> <a href="/docs/git-rm/pt_BR"> rm </a> </li> <li> <a href="/docs/git-mv/pt_BR"> mv </a> </li> </ul> <h3 class='branching'>Branching and Merging</h3> <ul class='unstyled'> <li> <a href="/docs/git-branch/pt_BR"> branch </a> </li> <li> <a href="/docs/git-checkout/pt_BR"> checkout </a> </li> <li> <a href="/docs/git-switch/pt_BR"> switch </a> </li> <li> <a href="/docs/git-merge/pt_BR"> merge </a> </li> <li> <a href="/docs/git-mergetool/pt_BR"> mergetool </a> </li> <li> <a href="/docs/git-log/pt_BR"> log </a> </li> <li> <a href="/docs/git-stash/pt_BR"> stash </a> </li> <li> <a href="/docs/git-tag/pt_BR"> tag </a> </li> <li> <a href="/docs/git-worktree/pt_BR"> worktree </a> </li> </ul> <h3 class='sharing'>Sharing and Updating Projects</h3> <ul class='unstyled'> <li> <a href="/docs/git-fetch/pt_BR"> fetch </a> </li> <li> <a href="/docs/git-pull/pt_BR"> pull </a> </li> <li> <a href="/docs/git-push/pt_BR"> push </a> </li> <li> <a href="/docs/git-remote/pt_BR"> remote </a> </li> <li> <a href="/docs/git-submodule/pt_BR"> submodule </a> </li> </ul> </div> <div class='column-middle'> <h3 class='inspection'>Inspection and Comparison</h3> <ul class='unstyled'> <li> <a href="/docs/git-show/pt_BR"> show </a> </li> <li> <a href="/docs/git-log/pt_BR"> log </a> </li> <li> <a href="/docs/git-diff/pt_BR"> diff </a> </li> <li> <a href="/docs/git-difftool/pt_BR"> difftool </a> </li> <li> <a href="/docs/git-range-diff/pt_BR"> range-diff </a> </li> <li> <a href="/docs/git-shortlog/pt_BR"> shortlog </a> </li> <li> <a href="/docs/git-describe/pt_BR"> describe </a> </li> </ul> <h3 class='patching'>Patching</h3> <ul class='unstyled'> <li> <a href="/docs/git-apply/pt_BR"> apply </a> </li> <li> <a href="/docs/git-cherry-pick/pt_BR"> cherry-pick </a> </li> <li> <a href="/docs/git-diff/pt_BR"> diff </a> </li> <li> <a href="/docs/git-rebase/pt_BR"> rebase </a> </li> <li> <a href="/docs/git-revert/pt_BR"> revert </a> </li> </ul> <h3 class='debugging'>Debugging</h3> <ul class='unstyled'> <li> <a href="/docs/git-bisect/pt_BR"> bisect </a> </li> <li> <a href="/docs/git-blame/pt_BR"> blame </a> </li> <li> <a href="/docs/git-grep/pt_BR"> grep </a> </li> </ul> <h3 class='email'>Email</h3> <ul class='unstyled'> <li> <a href="/docs/git-am/pt_BR"> am </a> </li> <li> <a href="/docs/git-apply/pt_BR"> apply </a> </li> <li> <a href="/docs/git-format-patch/pt_BR"> format-patch </a> </li> <li> <a href="/docs/git-send-email/pt_BR"> send-email </a> </li> <li> <a href="/docs/git-request-pull/pt_BR"> request-pull </a> </li> </ul> <h3 class='external'>External Systems</h3> <ul class='unstyled'> <li> <a href="/docs/git-svn/pt_BR"> svn </a> </li> <li> <a href="/docs/git-fast-import/pt_BR"> fast-import </a> </li> </ul> <h3 class='server-admin'>Server Admin</h3> <ul class='unstyled'> <li> <a href="/docs/git-daemon/pt_BR"> daemon </a> </li> <li> <a href="/docs/git-update-server-info/pt_BR"> update-server-info </a> </li> </ul> </div> <div class='column-right'> <h3 class='guides'>Guides</h3> <ul class='unstyled'> <li> <a href="/docs/gitattributes"> gitattributes </a> </li> <li> <a href="/docs/gitcli"> Command-line interface conventions </a> </li> <li> <a href="/docs/giteveryday"> Everyday Git </a> </li> <li> <a href="/docs/gitfaq"> Frequently Asked Questions (FAQ) </a> </li> <li> <a href="/docs/gitglossary/pt_BR"> Glossary </a> </li> <li> <a href="/docs/githooks"> Hooks </a> </li> <li> <a href="/docs/gitignore/pt_BR"> gitignore </a> </li> <li> <a href="/docs/gitmodules"> gitmodules </a> </li> <li> <a href="/docs/gitrevisions"> Revisions </a> </li> <li> <a href="/docs/gitsubmodules"> Submodules </a> </li> <li> <a href="/docs/gittutorial"> Tutorial </a> </li> <li> <a href="/docs/gitworkflows"> Workflows </a> </li> <li> <a href="/docs/git#_guides"> All guides... </a> </li> </ul> <h3 class='admin'>Administration</h3> <ul class='unstyled'> <li> <a href="/docs/git-clean/pt_BR"> clean </a> </li> <li> <a href="/docs/git-gc/pt_BR"> gc </a> </li> <li> <a href="/docs/git-fsck/pt_BR"> fsck </a> </li> <li> <a href="/docs/git-reflog/pt_BR"> reflog </a> </li> <li> <a href="/docs/git-filter-branch/pt_BR"> filter-branch </a> </li> <li> <a href="/docs/git-instaweb/pt_BR"> instaweb </a> </li> <li> <a href="/docs/git-archive/pt_BR"> archive </a> </li> <li> <a href="/docs/git-bundle/pt_BR"> bundle </a> </li> </ul> <h3 class='plumbing'>Plumbing Commands</h3> <ul class='unstyled'> <li> <a href="/docs/git-cat-file/pt_BR"> cat-file </a> </li> <li> <a href="/docs/git-check-ignore/pt_BR"> check-ignore </a> </li> <li> <a href="/docs/git-checkout-index/pt_BR"> checkout-index </a> </li> <li> <a href="/docs/git-commit-tree/pt_BR"> commit-tree </a> </li> <li> <a href="/docs/git-count-objects/pt_BR"> count-objects </a> </li> <li> <a href="/docs/git-diff-index/pt_BR"> diff-index </a> </li> <li> <a href="/docs/git-for-each-ref/pt_BR"> for-each-ref </a> </li> <li> <a href="/docs/git-hash-object/pt_BR"> hash-object </a> </li> <li> <a href="/docs/git-ls-files/pt_BR"> ls-files </a> </li> <li> <a href="/docs/git-ls-tree/pt_BR"> ls-tree </a> </li> <li> <a href="/docs/git-merge-base/pt_BR"> merge-base </a> </li> <li> <a href="/docs/git-read-tree/pt_BR"> read-tree </a> </li> <li> <a href="/docs/git-rev-list/pt_BR"> rev-list </a> </li> <li> <a href="/docs/git-rev-parse/pt_BR"> rev-parse </a> </li> <li> <a href="/docs/git-show-ref/pt_BR"> show-ref </a> </li> <li> <a href="/docs/git-symbolic-ref/pt_BR"> symbolic-ref </a> </li> <li> <a href="/docs/git-update-index/pt_BR"> update-index </a> </li> <li> <a href="/docs/git-update-ref/pt_BR"> update-ref </a> </li> <li> <a href="/docs/git-verify-pack/pt_BR"> verify-pack </a> </li> <li> <a href="/docs/git-write-tree/pt_BR"> write-tree </a> </li> </ul> </div> </div> </div> <a class="dropdown-trigger" id="reference-versions-trigger" data-panel-id="previous-versions-dropdown" href="#"> Latest version ▾ </a> <span class="light d-flex">git-range-diff last updated in 2.48.0</span> <div class='dropdown-panel left' id='previous-versions-dropdown'> <header>Changes in the <strong>git-range-diff</strong> manual</header> <ol class='reference-previous-versions'> <li class="no-change"><span>2.48.1 → 2.49.0 no changes</span></li> <li> <a href="/docs/git-range-diff/2.48.0"><span class="version">2.48.0</span> <span class="diff"> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2025-01-10</em> </a> </li> <li class="no-change"><span>2.43.1 → 2.47.2 no changes</span></li> <li> <a href="/docs/git-range-diff/2.43.0"><span class="version">2.43.0</span> <span class="diff"> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2023-11-20</em> </a> </li> <li class="no-change"><span>2.38.1 → 2.42.4 no changes</span></li> <li> <a href="/docs/git-range-diff/2.38.0"><span class="version">2.38.0</span> <span class="diff"> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2022-10-02</em> </a> </li> <li class="no-change"><span>2.31.1 → 2.37.7 no changes</span></li> <li> <a href="/docs/git-range-diff/2.31.0"><span class="version">2.31.0</span> <span class="diff"> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2021-03-15</em> </a> </li> <li class="no-change"><span>2.25.1 → 2.30.9 no changes</span></li> <li> <a href="/docs/git-range-diff/2.25.0"><span class="version">2.25.0</span> <span class="diff"> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2020-01-13</em> </a> </li> <li class="no-change"><span>2.20.1 → 2.24.4 no changes</span></li> <li> <a href="/docs/git-range-diff/2.20.0"><span class="version">2.20.0</span> <span class="diff"> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2018-12-09</em> </a> </li> <li class="no-change"><span>2.19.1 → 2.19.6 no changes</span></li> <li> <a href="/docs/git-range-diff/2.19.0"><span class="version">2.19.0</span> <span class="diff"> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/green-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2018-09-10</em> </a> </li> <li> </li> </ol> <footer> <p>Check your version of git by running</p> <code class="command">git --version</code> </footer> </div> </div> <div id="main" data-pagefind-filter="category:reference" data-pagefind-meta="category:Reference" data-pagefind-weight="0.05" data-pagefind-body> <div class="sect1"> <h2 id="_nome"><a class="anchor" href="#_nome"></a>NOME</h2> <div class="sectionbody"> <div class="paragraph"> <p>git-range-diff - Compara os dois intervalos de um commit (as duas versões de um ramo por exemplo)</p> </div> </div> </div> <div class="sect1"> <h2 id="_resumo"><a class="anchor" href="#_resumo"></a>RESUMO</h2> <div class="sectionbody"> <div class="verseblock"> <pre class="content"><em>git range-diff</em> [--color=[<when>]] [--no-color] [<diff-options>] [--no-dual-color] [--creation-factor=<factor>] [--left-only | --right-only] [--diff-merges=<format>] [--remerge-diff] ( <range1> <range2> | <rev1>…​<rev2> | <base> <rev1> <rev2> ) [[--] <path>…​]</pre> </div> </div> </div> <div class="sect1"> <h2 id="_descrição"><a class="anchor" href="#_descrição"></a>DESCRIÇÃO</h2> <div class="sectionbody"> <div class="paragraph"> <p>Este comando mostra as diferenças entre as duas versões de uma série de correções (patchs) ou de forma geral, dois intervalos entre os commits (ignorando as confirmações de mesclagem).</p> </div> <div class="paragraph"> <p>Na presença de argumentos <code><caminho></code>, estas faixas de commits são devidamente limitados.</p> </div> <div class="paragraph"> <p>Para esse fim, ele primeiro encontra os pares dos commits a partir de ambos os intervalos entre os commits onde um corresponda ao outro. Sabe-se que dois commits se correspondem quando a diferença entre os patchs das suas correções (ou seja, a informação do autor, a mensagem do commit e a diferença deste commit) seja razoavelmente pequena comparada ao tamanho dos patches de correções. Consulte ``Algoritmo`` abaixo para obter mais detalhes.</p> </div> <div class="paragraph"> <p>Finalmente, a lista de correspondência dos commits é mostrada na ordem do intervalo do segundo commit, com commits sem correspondência sendo inseridos logo depois que todos os seus ancestrais tenham sido mostrados.</p> </div> <div class="paragraph"> <p>Existem três maneiras de definir os intervalos do commit:</p> </div> <div class="ulist"> <ul> <li> <p><code><intervalo1> <intervalo2></code>: Qualquer intervalo do commit pode ter o formato <code><base>..<rev></code>, <code><rev>^!</code> ou <code><rev>^-<n></code>. Para mais detalhes consulte <code>ESPECIFICANDO OS INTERVALOS</code> em <a href='/docs/gitrevisions/pt_BR'>gitrevisions[7]</a>.</p> </li> <li> <p><code><rev1>...<rev2></code>. É equivalente a <code><rev2>..<rev1> <rev1>..<rev2></code>.</p> </li> <li> <p><code><base> <rev1> <rev2></code>: É equivalente a <code><base>..<rev1> <base>..<rev2></code>.</p> </li> </ul> </div> </div> </div> <div class="sect1"> <h2 id="_opções"><a class="anchor" href="#_opções"></a>OPÇÕES</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1" id="git-range-diff---no-dual-color"> <a class="anchor" href="#git-range-diff---no-dual-color"></a>--no-dual-color </dt> <dd> <p> Quando os diffs do commit diferirem, o comando <code>git range-diff</code> recria a coloração dos diffs originais e adiciona marcadores dos diffs externos -/+ com o <strong>fundo</strong> em vermelho/verde para facilitar a visualização, quando houve uma alteração nas linhas exatas que foram adicionadas por exemplo.</p> <div class="paragraph"> <p>Além disso, as linhas de diferenças de confirmação que estão presentes apenas no primeiro intervalo de confirmação são mostradas "esmaecidas" (isso pode ser alterado usando a configuração <code>color.diff.<slot></code> onde <code><slot></code> será <code>contextDimmed</code> , <code>oldDimmed</code> e <code>newDimmed</code>), as linhas das diferenças do commit que estão presentes apenas no segundo intervalo do commit são mostradas em negrito (podendo ser substituídas usando as configurações <code>color.diff.<slot></code> com <code><slot > `sendo `contextBold</code>, <code>oldBold</code> ou <code>newBold</code>).</p> </div> <div class="paragraph"> <p>Isso é conhecido por <code>range-diff</code> como "coloração dupla". Use a opção <code>--no-dual-color</code> para reverter a cor de todas as linhas de acordo com os marcações diff externos (e ignorar completamente o diff interno quando se tratar de cor).</p> </div> </dd> <dt class="hdlist1" id="git-range-diff---creation-factorltpercentualgt"> <a class="anchor" href="#git-range-diff---creation-factorltpercentualgt"></a>--creation-factor=<percentual> </dt> <dd> <p>Defina o fator de correção do custo de criação/exclusão como <code><por-cento></code>. A predefinição é 60. Tente um valor maior se o comando <code>git range-diff</code> considerar erroneamente uma grande alteração como uma reescrita total (exclusão de um commit e adição de outro) e um valor menor no caso inverso. Consulte a seção ``Algoritmo`` abaixo para obter uma explicação do por que isso é necessário.</p> </dd> <dt class="hdlist1" id="git-range-diff---left-only"> <a class="anchor" href="#git-range-diff---left-only"></a>--left-only </dt> <dd> <p>Suprime os commits que estão faltando no primeiro intervalo informado (ou o "intervalo esquerdo" ao usar o formato <code><rev1>...<rev2></code>).</p> </dd> <dt class="hdlist1" id="git-range-diff---right-only"> <a class="anchor" href="#git-range-diff---right-only"></a>--right-only </dt> <dd> <p>Suprime os commits que estão faltando no segundo intervalo informado (ou o "intervalo direito" ao usar o formato <code><rev1>...<rev2></code>).</p> </dd> <dt class="hdlist1" id="git-range-diff---diff-mergesltformatogt"> <a class="anchor" href="#git-range-diff---diff-mergesltformatogt"></a>--diff-merges=<formato> </dt> <dd> <p>Instead of ignoring merge commits, generate diffs for them using the corresponding <code>--diff-merges=<format></code> option of <a href='/docs/git-log/pt_BR'>git-log[1]</a>, and include them in the comparison.</p> <div class="paragraph"> <p>Note: In the common case, the <code>remerge</code> mode will be the most natural one to use, as it shows only the diff on top of what Git’s merge machinery would have produced. In other words, if a merge commit is the result of a non-conflicting <code>git merge</code>, the <code>remerge</code> mode will represent it with an empty diff.</p> </div> </dd> <dt class="hdlist1" id="git-range-diff---remerge-diff"> <a class="anchor" href="#git-range-diff---remerge-diff"></a>--remerge-diff </dt> <dd> <p>Convenience option, equivalent to <code>--diff-merges=remerge</code>.</p> </dd> <dt class="hdlist1" id="git-range-diff---no-notesltrefgt"> <a class="anchor" href="#git-range-diff---no-notesltrefgt"></a>--[no-]notes[=<ref>] </dt> <dd> <p>Esta opção é repassada para o comando <code>git apply</code> que aplica as correções (patch) (consulte <a href='/docs/git-log/pt_BR'>git-log[1]</a>).</p> </dd> <dt class="hdlist1" id="git-range-diff-ltintervalodareviso1gtltintervalodareviso2gt"> <a class="anchor" href="#git-range-diff-ltintervalodareviso1gtltintervalodareviso2gt"></a><intervalo da revisão1> <intervalo da revisão2> </dt> <dd> <p>Compare os commits através dos dois intervalos, onde <code><intervalo1></code> é considerado uma versão mais antiga de <code><intervalo1></code>.</p> </dd> <dt class="hdlist1" id="git-range-diff-ltrev1gt82308203ltrev2gt"> <a class="anchor" href="#git-range-diff-ltrev1gt82308203ltrev2gt"></a><rev1>…​<rev2> </dt> <dd> <p>É o mesmo que passar <code><rev2>..<rev1></code> e <code><rev1>..<rev2></code>.</p> </dd> <dt class="hdlist1" id="git-range-diff-ltbasegtltrev1gtltrev2gt"> <a class="anchor" href="#git-range-diff-ltbasegtltrev1gtltrev2gt"></a><base> <rev1> <rev2> </dt> <dd> <p>É o mesmo que passar <code><base>..<rev1></code> e <code><base>..<rev2></code>. Observe que <code><base></code> não precisa ser o ponto exato da ramificação das ramificações. Exemplo: após o rebase de uma ramificação <code>my-topic</code>, o comando <code>git range-diff my-topic@{u} my-topic@{1} my-topic</code> mostraria as diferenças introduzidas pelo rebase.</p> </dd> </dl> </div> <div class="paragraph"> <p>O comando <code>git range-diff</code> também aceita as opções normais do diff (consulte <a href='/docs/git-diff/pt_BR'>git-diff[1]</a>), mais notavelmente as opções <code>--color=[<quando>]</code> e <code>--no-color</code>. Estas opções são usadas ao criar a "diferença entre as correções", ou seja, para comparar o autor, a mensagem do commit e o diff correspondente dos commits antigos/novos. Atualmente não há meios de ajustar a maioria das opções do diff passadas para o <code>git log</code> ao gerar esses patches.</p> </div> </div> </div> <div class="sect1"> <h2 id="_estabilidade_da_saída"><a class="anchor" href="#_estabilidade_da_saída"></a>ESTABILIDADE DA SAÍDA</h2> <div class="sectionbody"> <div class="paragraph"> <p>A saída do comando <code>range-diff</code> está sujeita a alterações. Pretende-se que seja uma saída porcelana legível para as pessoas, não algo que possa ser usado nas versões do Git para obter um <code>range-diff</code> textualmente estável (em oposição a opção <code>--stable</code> com <a href='/docs/git-patch-id/pt_BR'>git-patch-id[1]</a>). Também não há um equivalente ao <a href='/docs/git-apply/pt_BR'>git-apply[1]</a> para o <code>range-diff</code>, a saída não se destina a ser legível para máquina.</p> </div> <div class="paragraph"> <p>Isso é particularmente verdadeiro ao passar opções diff. Atualmente, algumas opções como <code>--stat</code> podem, como um efeito emergente, produzir uma saída bastante inútil no contexto do comando <code>range-diff</code>. Versões futuras do comando <code>range-diff</code> podem aprender a interpretar tais opções de uma maneira específica (para <code>--stat</code> produzindo uma saída legível que resume como o diffstat mudou por exemplo).</p> </div> </div> </div> <div class="sect1"> <h2 id="_configuração"><a class="anchor" href="#_configuração"></a>CONFIGURAÇÃO</h2> <div class="sectionbody"> <div class="paragraph"> <p>Esse comando usa as configurações <code>diff.color.*</code> e <code>pager.range-diff</code> (a predefinição desta última é estar ativada). Consulte <a href='/docs/git-config/pt_BR'>git-config[1]</a>.</p> </div> </div> </div> <div class="sect1"> <h2 id="_exemplos"><a class="anchor" href="#_exemplos"></a>EXEMPLOS</h2> <div class="sectionbody"> <div class="paragraph"> <p>Quando um rebase requer que os conflitos da mesclagem sejam resolvidos, compare as alterações introduzidas através do rebase diretamente depois usando:</p> </div> <div class="listingblock"> <div class="content"> <pre>$ git range-diff @{u} @{1} @</pre> </div> </div> <div class="paragraph"> <p>Uma típica saída do comando <code>git range-diff</code> ficaria assim:</p> </div> <div class="listingblock"> <div class="content"> <pre>-: ------- > 1: 0ddba11 Se prepare para o inevitável! 1: c0debee = 2: cab005e Adicione uma mensagem de ajuda no início 2: f00dbal ! 3: decafe1 Descreva o problema @@ -1,3 +1,3 @@ Autor: A U Thor <author@example.com> -TODO: Descreva um problema +Descreva um problema @@ -324,5 +324,6 Já era esperado. -+O que é inesperado é que também irá travar. ++Inesperadamente, ele também trava. Este é um bug, e o júri é ++ainda está no ar a maneira de como melhor consertar. Consulte o tíquete #314 para obter mais detalhes. Contato 3: bedhead <-: ------- PARA DESFAZER</pre> </div> </div> <div class="paragraph"> <p>Neste exemplo, existem 3 commits antigos e 3 novos onde o desenvolvedor removeu o terceiro, adicionou um novo antes dos dois primeiros, e alterou a mensagem do commit do segundo commit, bem como o seu diff.</p> </div> <div class="paragraph"> <p>Quando a saída vai para um terminal, ela é codificada em cores , assim como a saída normal do comando <code>git diff</code>. Além disso, a primeira linha (adicionando um commit) é verde, a última linha (excluindo um commit) é vermelha, a segunda linha (com uma correspondência perfeita) é amarela como o cabeçalho do commit gerado pelo <code>git show</code>, a terceira linha colore o commit antigo de vermelho, o novo como verde e o resto como o cabeçalho do commit do comando <code>git show</code>.</p> </div> <div class="paragraph"> <p>Uma diferença ingênua dos diffs codificada por cores é na verdade um pouco difícil de ler, pois pinta todas as linhas de vermelho ou de verde. A linha que adicionou "O que é inesperado" ao commit antigo, por exemplo, é toda vermelha, mesmo se a intenção do commit antigo fosse adicionar algo.</p> </div> <div class="paragraph"> <p>Para auxiliar na questão, é predefinido que o <code>range</code> use o modo <code>--dual-color</code>. Neste modo, o diff das diffs irá reter as cores diff originais e prefixar as linhas com marcações -/+ que têm o seu <strong>fundo</strong> vermelho ou verde, para tornar mais óbvio que eles descrevem como o próprio diff mudou.</p> </div> </div> </div> <div class="sect1"> <h2 id="_algoritmo"><a class="anchor" href="#_algoritmo"></a>Algoritmo</h2> <div class="sectionbody"> <div class="paragraph"> <p>A ideia geral é esta: geramos uma matriz de custo entre os commits no intervalor de ambos os commits e em seguida, resolvemos a atribuição com o menor custo.</p> </div> <div class="paragraph"> <p>A matriz de custo é populada assim: para cada par de commits, ambos os diffs são gerados, o "diff dos diffs" é gerado com 3 linhas de contexto, então a quantidade das linhas naquele diff é usado como custo.</p> </div> <div class="paragraph"> <p>Para evitar falsos positivos (quando um patch foi removido e um patch não relacionado foi adicionado entre as duas iterações da mesma série de patches por exemplo), a matriz de custo é estendida para que isso seja permitido, adicionando as entradas de custo fixo para o que foi excluído/adicionado.</p> </div> <div class="paragraph"> <p>Exemplo: Deixe que os commits <code>1--2</code> sejam a primeira iteração de uma série de patches e <code>A--C</code> a segunda iteração. Vamos supor que <code>A</code> é uma escolha seletiva de <code>2,</code> e <code>C</code> é uma escolha seletiva de <code>1</code> porém com uma pequena modificação (digamos, um erro de digitação que foi corrigido). Visualize os commits como um gráfico bipartido:</p> </div> <div class="listingblock"> <div class="content"> <pre> 1 A 2 B C</pre> </div> </div> <div class="paragraph"> <p>Estamos procurando uma "melhor" explicação para a nova série em comparação com a antiga. Podemos representar uma "explicação" como uma borda no gráfico:</p> </div> <div class="listingblock"> <div class="content"> <pre> 1 A / 2 --------' B C</pre> </div> </div> <div class="paragraph"> <p>Essa explicação vem "de graça" porque não houve alteração. Da mesma forma, <code>C</code> pode ser explicado usando <code>1</code>, mas isso tem algum custo c>0 por causa da modificação:</p> </div> <div class="listingblock"> <div class="content"> <pre> 1 ----. A | / 2 ----+---' B | `----- C c>0</pre> </div> </div> <div class="paragraph"> <p>Em termos matemáticos, o que estamos procurando é algum tipo de correspondência bipartida com um custo mínimo; <code>1</code> coincidiu com <code>C</code> custando alguma coisa, etc. O gráfico subjacente é, na verdade, um gráfico bipartido completo; o custo que associamos com cada borda é o tamanho do diff entre os patches dos dois commits. Para também explicar os novos commits, introduzimos nós fictícios dos dois lados:</p> </div> <div class="listingblock"> <div class="content"> <pre> 1 ----. A | / 2 ----+---' B | o `----- C c>0 o o o o</pre> </div> </div> <div class="paragraph"> <p>O custo de uma borda <code>o--C</code> é o tamanho do diff em <code>C</code>, modificado por um fator de correção que deve ser menor que 100%. O custo de uma borda <code>o--o</code> é de graça. O fator de correção é necessário porque mesmo que <code>1</code> e <code>C</code> não tenham nada em comum, eles ainda podem compartilhar algumas linhas vazias, possivelmente tornando a atribuição <code>1--C</code>, <code>o--o</code> ligeiramente mais barata do que <code>1--o</code>, <code>o--C</code> ainda que <code>1</code> e <code>C</code> não tenham nada em comum. Com o fator de correção, exigimos uma parte comum muito maior para considerar os patches como correspondentes.</p> </div> <div class="paragraph"> <p>O tempo total necessário para calcular este algoritmo é o mesmo tempo necessário para calcular o diff de n+m commit e então os diffs de n*m patches, mais o tempo necessário para calcular a atribuição com o menor custo entre os diffs n e m. Git usa uma implementação do algoritmo de Jonker-Volgenant para resolver o problema da atribuição que tem complexidade de tempo de execução cúbica. A correspondência encontrada neste caso será semelhante a esta:</p> </div> <div class="listingblock"> <div class="content"> <pre> 1 ----. A | / 2 ----+---' B .--+-----' o -' `----- C c>0 o ---------- o o ---------- o</pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_veja_também"><a class="anchor" href="#_veja_também"></a>VEJA TAMBÉM</h2> <div class="sectionbody"> <div class="paragraph"> <p><a href='/docs/git-log/pt_BR'>git-log[1]</a></p> </div> </div> </div> <div class="sect1"> <h2 id="_git"><a class="anchor" href="#_git"></a>GIT</h2> <div class="sectionbody"> <div class="paragraph"> <p>Parte do conjunto <a href='/docs/git/pt_BR'>git[1]</a></p> </div> </div> </div> </div> </div> </div> <footer> <div class="site-source"> <a href="/site">About this site</a><br> Patches, suggestions, and comments are welcome. </div> <div class="sfc-member"> Git is a member of <a href="/sfc">Software Freedom Conservancy</a> </div> </footer> <a href="#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top"> <img src="/images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/> </a> <script src="/js/jquery-1.7.1.min.js"></script> <script src="/js/jquery-ui-1.8.18.custom.min.js"></script> <script src="/js/jquery.defaultvalue.js"></script> <script src="/js/session.min.js"></script> <script src="/js/modernizr.js"></script> <script src="/js/modernize.js"></script> <script src="/js/application.min.js"></script> </div> </body> </html>