CINXE.COM
Git - git-push 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-push 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-push</strong> manual</header> <ol class='reference-previous-versions'> <li> <a href="/docs/git-push"><span class="version">English</span> </a> </li> <li> <a href="/docs/git-push/fr"><span class="version">Français</span> </a> </li> <li> <a href="/docs/git-push/pt_BR"><span class="version">Português (Brasil)</span> </a> </li> <li> <a href="/docs/git-push/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-push last updated in 2.48.0</span> <div class='dropdown-panel left' id='previous-versions-dropdown'> <header>Changes in the <strong>git-push</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-push/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/red-dot.png" /> <img src="/images/icons/red-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.45.1 → 2.47.2 no changes</span></li> <li> <a href="/docs/git-push/2.45.0"><span class="version">2.45.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/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">2024-04-29</em> </a> </li> <li class="no-change"><span>2.44.1 → 2.44.3 no changes</span></li> <li> <a href="/docs/git-push/2.44.0"><span class="version">2.44.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/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">2024-02-23</em> </a> </li> <li class="no-change"><span>2.43.1 → 2.43.6 no changes</span></li> <li> <a href="/docs/git-push/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/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/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">2023-11-20</em> </a> </li> <li class="no-change"><span>2.42.2 → 2.42.4 no changes</span></li> <li> <a href="/docs/git-push/2.42.1"><span class="version">2.42.1</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-02</em> </a> </li> <li> <a href="/docs/git-push/2.42.0"><span class="version">2.42.0</span> <span class="diff"> <img src="/images/icons/green-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" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2023-08-21</em> </a> </li> <li class="no-change"><span>2.41.1 → 2.41.3 no changes</span></li> <li> <a href="/docs/git-push/2.41.0"><span class="version">2.41.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/grey-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-06-01</em> </a> </li> <li class="no-change"><span>2.40.1 → 2.40.4 no changes</span></li> <li> <a href="/docs/git-push/2.40.0"><span class="version">2.40.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/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-03-12</em> </a> </li> <li class="no-change"><span>2.39.1 → 2.39.5 no changes</span></li> <li> <a href="/docs/git-push/2.39.0"><span class="version">2.39.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/red-dot.png" /> <img src="/images/icons/red-dot.png" /> <img src="/images/icons/red-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">2022-12-12</em> </a> </li> <li class="no-change"><span>2.38.1 → 2.38.5 no changes</span></li> <li> <a href="/docs/git-push/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/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">2022-10-02</em> </a> </li> <li class="no-change"><span>2.35.1 → 2.37.7 no changes</span></li> <li> <a href="/docs/git-push/2.35.0"><span class="version">2.35.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/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">2022-01-24</em> </a> </li> <li class="no-change"><span>2.33.1 → 2.34.8 no changes</span></li> <li> <a href="/docs/git-push/2.33.0"><span class="version">2.33.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">2021-08-16</em> </a> </li> <li class="no-change"><span>2.32.1 → 2.32.7 no changes</span></li> <li> <a href="/docs/git-push/2.32.0"><span class="version">2.32.0</span> <span class="diff"> <img src="/images/icons/green-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" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2021-06-06</em> </a> </li> <li class="no-change"><span>2.30.1 → 2.31.8 no changes</span></li> <li> <a href="/docs/git-push/2.30.0"><span class="version">2.30.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">2020-12-27</em> </a> </li> <li class="no-change"><span>2.25.1 → 2.29.3 no changes</span></li> <li> <a href="/docs/git-push/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/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" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2020-01-13</em> </a> </li> <li class="no-change"><span>2.23.1 → 2.24.4 no changes</span></li> <li> <a href="/docs/git-push/2.23.0"><span class="version">2.23.0</span> <span class="diff"> <img src="/images/icons/green-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" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2019-08-16</em> </a> </li> <li class="no-change"><span>2.22.1 → 2.22.5 no changes</span></li> <li> <a href="/docs/git-push/2.22.0"><span class="version">2.22.0</span> <span class="diff"> <img src="/images/icons/green-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" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2019-06-07</em> </a> </li> <li class="no-change"><span>2.21.1 → 2.21.4 no changes</span></li> <li> <a href="/docs/git-push/2.21.0"><span class="version">2.21.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">2019-02-24</em> </a> </li> <li class="no-change"><span>2.20.1 → 2.20.5 no changes</span></li> <li> <a href="/docs/git-push/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/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.18.1 → 2.19.6 no changes</span></li> <li> <a href="/docs/git-push/2.18.0"><span class="version">2.18.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/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-06-21</em> </a> </li> <li class="no-change"><span>2.17.0 → 2.17.6 no changes</span></li> <li> <a href="/docs/git-push/2.16.6"><span class="version">2.16.6</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">2019-12-06</em> </a> </li> <li> <a href="/docs/git-push/2.15.4"><span class="version">2.15.4</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">2019-12-06</em> </a> </li> <li class="no-change"><span>2.14.6 no changes</span></li> <li> <a href="/docs/git-push/2.13.7"><span class="version">2.13.7</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-05-22</em> </a> </li> <li> <a href="/docs/git-push/2.12.5"><span class="version">2.12.5</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/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">2017-09-22</em> </a> </li> <li> <a href="/docs/git-push/2.11.4"><span class="version">2.11.4</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">2017-09-22</em> </a> </li> <li> <a href="/docs/git-push/2.10.5"><span class="version">2.10.5</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/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2017-09-22</em> </a> </li> <li> <a href="/docs/git-push/2.9.5"><span class="version">2.9.5</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/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">2017-07-30</em> </a> </li> <li> <a href="/docs/git-push/2.8.6"><span class="version">2.8.6</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/red-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">2017-07-30</em> </a> </li> <li> <a href="/docs/git-push/2.7.6"><span class="version">2.7.6</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/red-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">2017-07-30</em> </a> </li> <li> <a href="/docs/git-push/2.6.7"><span class="version">2.6.7</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/red-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">2017-05-05</em> </a> </li> <li class="no-change"><span>2.5.6 no changes</span></li> <li> <a href="/docs/git-push/2.4.12"><span class="version">2.4.12</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">2017-05-05</em> </a> </li> <li> <a href="/docs/git-push/2.3.10"><span class="version">2.3.10</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/red-dot.png" /> <img src="/images/icons/red-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">2015-09-28</em> </a> </li> <li> <a href="/docs/git-push/2.2.3"><span class="version">2.2.3</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/red-dot.png" /> <img src="/images/icons/grey-dot.png" /> <img src="/images/icons/grey-dot.png" /> </span> <em class="date">2015-09-04</em> </a> </li> <li class="no-change"><span>2.1.4 no changes</span></li> <li> <a href="/docs/git-push/2.0.5"><span class="version">2.0.5</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">2014-12-17</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-push - Atualiza as refs remotas junto com os objetos associados a ela</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 push</em> [--all | --branches | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>] [--repo=<repositório>] [-f | --force] [-d | --delete] [--prune] [-q | --quiet] [-v | --verbose] [-u | --set-upstream] [-o <texto> | --push-option=<texto>] [--[no-]signed|--signed=(true|false|if-asked)] [--force-with-lease[=<refname>[:<expect>]] [--force-if-includes]] [--no-verify] [<repositório> [<refspec>…​]]</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>Atualiza as refs remotas utilizando as refs locais, enquanto envia os objetos necessários para que seja concluída as refs informadas.</p> </div> <div class="paragraph"> <p>É possível fazer com que coisas interessantes aconteçam num repositório toda vez que você fizer um "push" nele, ao configurar "ganchos" nele. Consulte a documentação para <a href='/docs/git-receive-pack/pt_BR'>git-receive-pack[1]</a>.</p> </div> <div class="paragraph"> <p>Quando a linha de comando não especifica onde fazer o <em>push</em> com o argumento <code><repositório></code>, a configuração <code>branch.*.remote</code> da ramificação atual é consultada para determinar onde fazer o <em>push</em>. Se a configuração estiver ausente, a predefinição será <em>origin</em>.</p> </div> <div class="paragraph"> <p>Quando a linha de comando não especifica o que impulsionar (push) com as opções <code><refspec>...</code> ou com as opções <code>--all</code>, <code>--mirror</code>, <code>--tags</code>, o comando encontra a predefinição <code><refspec></code> consultando a configuração <code>remote.*.push</code> e caso ainda não tenha sido encontrado, honra a configuração do <code>push.default</code> para decidir o que enviar (para saber o significado de <code>push.default</code> consulte<a href='/docs/git-config/pt_BR'>git-config[1]</a>.</p> </div> <div class="paragraph"> <p>Quando nem a linha de comando nem a configuração informam o que enviar, o comportamento predefinido é utilizado, que corresponde ao valor <code>simple</code> para <code>push.default</code>: o ramo atual é enviado ao ramo upstream correspondente, porém como uma medida segurança, o envio será cancelado caso o ramo upstream não esteja com o mesmo nome que o ramo local.</p> </div> </div> </div> <div class="sect1"> <h2 id="_opções"><a class="anchor" href="#_opções"></a>OPÇÕES<a id="OPTIONS"></a></h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1" id="git-push-ltrepositriogt"> <a class="anchor" href="#git-push-ltrepositriogt"></a><repositório> </dt> <dd> <p>O repositório "remote" que é o destino de uma operação <em>push</em>. Este parâmetro pode ser uma URL (consulte a seção <a href="#URLS">GIT URLS</a> abaixo) ou o nome de um controle remoto (consulte a seção <a href="#REMOTES">RAMOS REMOTOS</a> abaixo).</p> </dd> <dt class="hdlist1" id="git-push-ltrefspecgt82308203"> <a class="anchor" href="#git-push-ltrefspecgt82308203"></a><refspec>…​ </dt> <dd> <p>Especifique qual ref. de destino deve ser atualizada com qual origem do objeto. O formato de um parâmetro <refspec> é um sinal de adição opcional <code>+</code>, seguido pelo objeto de origem <src>, seguido por dois-pontos <code>:</code>, seguido pela referência de destino <dst>.</p> <div class="paragraph"> <p>Geralmente <code><src></code> é o nome do ramo que você deseja impulsionar, pode ser qualquer "expressão SHA-1" arbitrária, como <code>master~4</code> ou <code>HEAD</code> (consulte <a href='/docs/gitrevisions/pt_BR'>gitrevisions[7]</a>).</p> </div> <div class="paragraph"> <p>O <dst> informa qual referência no lado remoto é atualizado com este <em>push</em>. Aqui as expressões arbitrárias não podem ser usadas, uma referência real deve ser mencionada. Se o comando <code>git push [<repositório>]</code> sem nenhum argumento <code><refspec></code> for definido para atualizar alguma referência no destino com <code><src></code> com a variável de configuração <code>remote.<repositório>.push</code>, a parte <code>:<dst></code> pode ser omitida - este <em>push</em> atualizará uma referência que o <code><src></code> normalmente atualiza sem nenhum <code><refspec></code> na linha de comando. Caso contrário, a ausência de <code>:<dst></code> significa atualizar a mesma referência que o <code><src></code>.</p> </div> <div class="paragraph"> <p>Caso o <dst> não comece com <code>refs/</code> (como <code>refs/heads/master</code> por exemplo), tentaremos inferir onde em <code>refs/*</code> no <repositório> de destino, ele pertença com base no tipo da <src> sendo impulsionado e caso o <dst> seja ambíguo.</p> </div> <div class="openblock"> <div class="content"> <div class="ulist"> <ul> <li> <p>Caso o <dst> se refira inequivocamente a uma "ref" no <repositório> do ramo remoto, então faça um impulsionamento "push" nesta ref.</p> </li> <li> <p>Caso o <src> seja resolvido para uma "ref" começando com <code>refs/heads/</code> ou <code>refs/tags/</code>, coloque um prefixo no <dst>.</p> </li> <li> <p>Outras resoluções de ambiguidade podem ser adicionadas no futuro, mas, por enquanto, outros casos apresentarão um erro indicando o que tentamos e dependendo da configuração <code>advice.pushUnqualifiedRefname</code> (consulte <a href='/docs/git-config/pt_BR'>git-config[1]</a>), sugere qual <em>refs/ namespace</em> você possa querer impulsionar.</p> </li> </ul> </div> </div> </div> <div class="paragraph"> <p>O objeto referenciado por <src> é utilizado para atualizar a referência <dst> no lado remoto. Caso isso seja permitido, vai depender de onde em <code>refs/*</code> a referência <dst> vive como descrito com mais detalhes logo abaixo, nestas seções "update" indica que quaisquer modificações, exceto as exclusões, que serão descritos nas próximas seções, são tratadas de forma diferente.</p> </div> <div class="paragraph"> <p>O espaço de nomes <code>refs/heads/*</code> aceitarão apenas os objetos commit e será atualizado apenas caso eles possam avançar de forma rápida.</p> </div> <div class="paragraph"> <p>O espaço de nomes <code>refs/tags/*</code> aceitarão quaisquer tipos de objeto (como commits, árvores e bolhas que possam ser marcados) e quaisquer atualizações para eles serão rejeitadas.</p> </div> <div class="paragraph"> <p>É possível impulsionar qualquer tipo de objeto para qualquer espaço de nomes fora do <code>refs/{tags,heads}/*</code>. No caso das tags e dos commits, estes serão tratados como se fossem os commits dentro do <code>refs/heads/*</code> para os propósitos caso a atualização seja permitida.</p> </div> <div class="paragraph"> <p>Um avanço rápido dos commits e das tags fora do <code>refs/{tags,heads}/*</code> por exemplo, é permitido, mesmo nos casos onde o que está sendo acelerado não é um commit e sim um objeto da tag que aponte para um novo commit onde seja um avanço rápido do commit da última tag (ou commit) que está sendo substituindo. Também é permitida a reposição de uma tag por uma outra totalmente diferente, caso ela apontar para o mesmo commit, bem como ao impulsionar uma tag já descascada, ou seja, impulsionar o commit onde o objeto existente do tag aponte ou um novo objeto da tag onde o commit existente esteja apontando.</p> </div> <div class="paragraph"> <p>Os objetos da árvore e da bolha fora do <code>refs{tags,heads}/*</code> serão tratados da mesma maneira como se estivessem dentro do <code>refs/tags/*</code>, qualquer outra atualização deles será rejeitada.</p> </div> <div class="paragraph"> <p>Todas as regras descritas acima sobre o que não é permitido como uma atualização, podem ser substituídas adicionando um sinal opcional <code>+</code> inicial num "refspec" (ou utilizando a opção da linha de comando <code>--force</code>). A única exceção a isso é que nenhuma quantidade de imposição fará com que o espaço de nomes <code>refs/heads/*</code> aceite um objeto que não seja um commit. Os ganchos e configurações também podem substituir ou alterar estas regras, consulte, por exemplo, <code>receive.denyNonFastForwards</code> no <a href='/docs/git-config/pt_BR'>git-config[1]</a> e <code>pre-receive</code> e <code>update</code> no <a href='/docs/githooks/pt_BR'>githooks[5]</a>.</p> </div> <div class="paragraph"> <p>Fazer um impulsionamento "push" de um <src> vazio permite excluir o <dst> "ref" do repositório remoto. As exclusões sempre são aceitas sem um sinal <code>+</code> inicial no "refspec" (ou com a opção <code>--force</code>), exceto quando for proibido pela configuração ou pelos ganchos. Consulte <code>receive.denyDeletes</code> no <a href='/docs/git-config/pt_BR'>git-config[1]</a> e <code>pre-receive</code> e <code>update</code> no <a href='/docs/githooks/pt_BR'>githooks[5]</a>.</p> </div> <div class="paragraph"> <p>O refspec especial <code>:</code> (ou <code>+:</code> para permitir atualizações que não sejam de avanço rápido) direciona o Git a enviar ramificações "correspondentes": para cada ramificação que existe no lado local, o lado remoto é atualizado quando uma ramificação com o mesmo nome já existir no lado remoto.</p> </div> <div class="paragraph"> <p>A <code>tag <tag></code> significa o mesmo que <code>refs/tags/<tag>:refs/tags/<tag></code>.</p> </div> </dd> <dt class="hdlist1" id="git-push---all"> <a class="anchor" href="#git-push---all"></a>--all </dt> <dt class="hdlist1" id="git-push---branches"> <a class="anchor" href="#git-push---branches"></a>--branches </dt> <dd> <p>impulsione todos os ramos (ou seja, refs em <code>refs/heads/</code>); não pode ser utilizado com outro <refspec>.</p> </dd> <dt class="hdlist1" id="git-push---prune"> <a class="anchor" href="#git-push---prune"></a>--prune </dt> <dd> <p>Remova as ramificações remotas que não têm uma contraparte local. Por exemplo, uma ramificação remota <code>tmp</code> será removida se uma ramificação local com o mesmo nome não existir mais. Isso também respeita os refspecs, por exemplo, o comando <code>git push --prune remote refs/heads/*:refs/tmp/*</code> garantiria que o remote <code>refs/tmp/foo</code> seria removido se <code>refs/heads/foo</code> não existisse.</p> </dd> <dt class="hdlist1" id="git-push---mirror"> <a class="anchor" href="#git-push---mirror"></a>--mirror </dt> <dd> <p>Em vez de nomear cada referência que será enviada, especifica que todas as refs em <code>refs/</code> (que inclui, mas não se limita a <code>refs/heads/</code>, <code>refs/remotes/</code> e <code>refs/tags/</code>) sejam espelhadas no repositório remoto. As refs locais recém-criadas serão enviadas para a extremidade remota, as refs atualizadas localmente serão atualizadas à força na extremidade remota e as refs excluídas serão removidas da extremidade remota. Esse é o padrão se a opção de configuração <code>remote.<remoto>.mirror</code> estiver definida.</p> </dd> <dt class="hdlist1" id="git-push--n"> <a class="anchor" href="#git-push--n"></a>-n </dt> <dt class="hdlist1" id="git-push---dry-run"> <a class="anchor" href="#git-push---dry-run"></a>--dry-run </dt> <dd> <p>Faça tudo, exceto realmente enviar as atualizações.</p> </dd> <dt class="hdlist1" id="git-push---porcelain"> <a class="anchor" href="#git-push---porcelain"></a>--porcelain </dt> <dd> <p>Produz resultados legíveis para máquina. A linha de status de saída para cada ref será separada por tabulação e enviada para stdout em vez de stderr. Os nomes simbólicos completos dos refs serão fornecidos.</p> </dd> <dt class="hdlist1" id="git-push--d"> <a class="anchor" href="#git-push--d"></a>-d </dt> <dt class="hdlist1" id="git-push---delete"> <a class="anchor" href="#git-push---delete"></a>--delete </dt> <dd> <p>Todas as refs listadas são excluídas do repositório remoto. É o mesmo que prefixar todos as refs com dois pontos.</p> </dd> <dt class="hdlist1" id="git-push---tags"> <a class="anchor" href="#git-push---tags"></a>--tags </dt> <dd> <p>Todas as refs no <code>refs/tags</code> são impulsionadas, além das "refspecs" que forem explicitamente listados na linha de comando.</p> </dd> <dt class="hdlist1" id="git-push---follow-tags"> <a class="anchor" href="#git-push---follow-tags"></a>--follow-tags </dt> <dd> <p>Envie todas as refs que seriam enviadas sem essa opção e também envie as etiquetas anotadas em <code>refs/tags</code> que estão faltando no controle remoto, mas que estão apontando para os commits que são acessíveis a partir das refs que estão sendo enviadas. Isso também pode ser definido na variável de configuração <code>push.followTags</code>. Para mais informações consulte <code>push.followTags</code> do comando <a href='/docs/git-config/pt_BR'>git-config[1]</a>.</p> </dd> <dt class="hdlist1" id="git-push---no-signed"> <a class="anchor" href="#git-push---no-signed"></a>--[no-]signed </dt> <dt class="hdlist1" id="git-push---signedtruefalseif-asked"> <a class="anchor" href="#git-push---signedtruefalseif-asked"></a>--signed=(true|false|if-asked) </dt> <dd> <p>Assine com GPG a solicitação de envio para atualizar as referências no lado receptor, para permitir que ela seja verificada pelos ganchos ou para que seja registrada. Se for <code>false</code> ou <code>--no-signed</code>, não haverá tentativa de assinatura. Se for <code>true</code> ou <code>--signed</code>, o <em>push</em> falhará se o servidor não suportar envios assinados. Se for definido como <code>if-asked</code>, assine, funciona apenas se o servidor suportar envios assinados. O envio também falhará se a chamada real para a opção <code>gpg --sign</code> falhar. Para mais detalhes sobre o recebimento consulte <a href='/docs/git-receive-pack/pt_BR'>git-receive-pack[1]</a>.</p> </dd> <dt class="hdlist1" id="git-push---no-atomic"> <a class="anchor" href="#git-push---no-atomic"></a>--[no-]atomic </dt> <dd> <p>Use uma transação atômica no lado remoto, caso esteja disponível. Todas as refs são atualizadas ou, em caso de erro, nenhuma será. Se o servidor não for compatível com envios atômicos, o envio falhará.</p> </dd> <dt class="hdlist1" id="git-push--oltopogt"> <a class="anchor" href="#git-push--oltopogt"></a>-o <opção> </dt> <dt class="hdlist1" id="git-push---push-optionltopogt"> <a class="anchor" href="#git-push---push-optionltopogt"></a>--push-option=<opção> </dt> <dd> <p>Transmite a string fornecida para o servidor, que a passa para o gancho de pré-recepção e pós-recepção. A atring fornecida não deve conter um caractere NUL ou LF. Quando várias <code>--push-option=<opção></code> são usadas, todas elas são enviadas para o outro lado na ordem listada da linha de comando. Quando nenhuma <code>--push-option=<opção></code> é usada na linha de comando, os valores na variável de configuração <code>push.pushOption</code> são usados em seu lugar.</p> </dd> <dt class="hdlist1" id="git-push---receive-packltgit-receive-packgt"> <a class="anchor" href="#git-push---receive-packltgit-receive-packgt"></a>--receive-pack=<git-receive-pack> </dt> <dt class="hdlist1" id="git-push---execltgit-receive-packgt"> <a class="anchor" href="#git-push---execltgit-receive-packgt"></a>--exec=<git-receive-pack> </dt> <dd> <p>O caminho para o programa <em>git-receive-pack</em> no lado remoto. Às vezes, é útil durante um "push" ao enviar para um repositório remoto via ssh e você não tem o programa no diretório do $PATH predefinido.</p> </dd> <dt class="hdlist1" id="git-push---no-force-with-lease"> <a class="anchor" href="#git-push---no-force-with-lease"></a>--[no-]force-with-lease </dt> <dt class="hdlist1" id="git-push---force-with-leaseltrefnamegt"> <a class="anchor" href="#git-push---force-with-leaseltrefnamegt"></a>--force-with-lease=<refname> </dt> <dt class="hdlist1" id="git-push---force-with-leaseltrefnamegtltexpectgt"> <a class="anchor" href="#git-push---force-with-leaseltrefnamegtltexpectgt"></a>--force-with-lease=<refname>:<expect> </dt> <dd> <p>Normalmente, o comando "git push" se recusa a atualizar uma "ref" remota que não seja um ancestral da "ref" local utilizada para substituí-la.</p> <div class="paragraph"> <p>Esta opção substitui essa restrição se o valor atual da referência remota for o valor esperado. Caso contrário, o comando <em>git push</em> falhará.</p> </div> <div class="paragraph"> <p>Imagine que você tenha que fazer o rebase o que já foi publicado. Você terá que contornar a regra "fazer avanço rápido" para substituir o histórico originalmente publicado pelo histórico refeito. Se outra pessoa construiu em cima do seu histórico original enquanto você está fazendo o rebase, o cume do ramo remoto pode avançar com o commit dela, e o push cego feito com <code>--force</code> fará com que o trabalho dela seja perdido.</p> </div> <div class="paragraph"> <p>Esta opção permite que você diga que vai esperar que o histórico que está sendo atualizando seja o que você reconstruiu com o "rebase" e vai querer substituir. Casi uma "ref" remota ainda aponte para um commit específico, você pode ter certeza que outras pessoas não fizeram nada com a "ref". É como fazer uma "concessão" na ref sem bloqueá-la diretamente, a "ref" remota será atualizada apenas caso a "concessão" ainda seja válida.</p> </div> <div class="paragraph"> <p>Somente a opção <code>--force-with-lease</code>, sem qualquer outra definição, protegerá todos as refs remotas que serão atualizadas, exigindo que o seu valor atual seja o mesmo que o ramo monitorado remotamente que temos para eles.</p> </div> <div class="paragraph"> <p>A opção <code>--force-with-lease=<refname></code>, sem qualquer outro valor esperado, protegerá a "ref" que foi informado (sozinho), caso seja atualizado, exigindo que o seu valor atual seja o mesmo que o ramo monitorado remotamente que temos para isso.</p> </div> <div class="paragraph"> <p><code>--force-with-lease=<refname>:<expect></code> protegerá a ref mencionada (sozinha), se ela for atualizada, exigindo que o seu valor atual seja o mesmo que o valor especificado em <code><expect></code> (que pode ser diferente da ramificação rastreada remotamente que temos para referência de nome, ou nem mesmo precisamos ter essa ramificação rastreada remotamente quando esse formulário for usado). Se <code><expect></code> estiver vazio, então a referência mencionada ainda não deve existir.</p> </div> <div class="paragraph"> <p>Observe que todas as formas diferentes da opção <code>--force-with-lease=<refname>:<expect></code> que define o valor atual esperado para a "ref" de forma explicita, ainda são experimentais e sua semântica pode mudar à medida que adquiramos mais experiência com este recurso.</p> </div> <div class="paragraph"> <p>A opção <code>--no-force-with-lease</code> cancelará todos os <code>--force-with-lease</code> anteriores na linha de comando.</p> </div> <div class="paragraph"> <p>Uma observação geral sobre a segurança: utilizar esta opção sem um valor esperado, por exemplo, <code>--force-with-lease</code> ou <code>--force-with-lease=<refname></code> interage muito mal com qualquer coisa que execute de forma implícita o comando <code>git fetch</code> do ramo remoto que será encaminhado para um processo de segundo plano, como o comando <code>git fetch origin</code> no seu repositório para um trabalho agendado "cronjob" por exemplo.</p> </div> <div class="paragraph"> <p>A proteção oferecida contra a opção <code>--force</code> é garantir que as subsequentes alterações onde a base do seu trabalho não sejam prejudicadas, porém isso será derrotado trivialmente caso algum processo em segundo plano estiver atualizando as refs em segundo plano. Não temos nada além das informações de monitoramento remoto, como uma heurística para as refs que você deve ter visto e está disposto a adotar.</p> </div> <div class="paragraph"> <p>Caso o seu editor ou um outro sistema esteja executando o comando <code>git fetch</code> no segundo plano para você, uma maneira de atenuar isso é simplesmente configurar um outro ramo remoto:</p> </div> <div class="literalblock"> <div class="content"> <pre>git remote add origin-push $(git config remote.origin.url) git fetch origin-push</pre> </div> </div> <div class="paragraph"> <p>Agora, quando o processo em segundo plano executar o comando <code>git fetch origin</code>, as referências no <code>origin-push</code> não serão atualizadas e portanto, comandos como:</p> </div> <div class="literalblock"> <div class="content"> <pre>git push --force-with-lease origin-push</pre> </div> </div> <div class="paragraph"> <p>Irá falhar a menos que você execute manualmente o comando <code>git fetch origin-push</code>. É claro que esse método será totalmente derrotado por algo que execute o comando <code>git fetch --all</code>, neste caso, você precisa desativá-lo ou fazer algo mais tedioso como:</p> </div> <div class="literalblock"> <div class="content"> <pre>git fetch # atualiza o 'master' remotamente git tag base master # marca o ponto da nossa base git rebase -i master # reescreve alguns commits git push --force-with-lease=master:base master:master</pre> </div> </div> <div class="paragraph"> <p>Crie uma tag <code>base</code> para as versões do código upstream que você viu e está disposto a sobrescrever por exemplo, depois reescreva o histórico e finalmente, imponha um impulsionamento "push" com as alterações para <code>master</code> caso a versão remota ainda esteja na <code>base</code>, independentemente se os seus ramos <code>remotes/origin/master</code> locais foram atualizados em segundo plano ou não.</p> </div> <div class="paragraph"> <p>Alternativamente, ao usar a opção <code>--force-if-includes</code> como uma opção auxiliar em conjunto com <code>--force-with-lease[=<refname>]</code> (sem dizer qual o ref exato do commit remoto, ou quais os refs remotos que estão sendo protegidos por exemplo) no momento do "push", irá verificar se as atualizações a partir dos refs monitorados remotamente tenham sido atualizados de forma implicita em segundo plano e se estão sendo integrados localmente antes de permitir uma atualização forçada.</p> </div> </dd> <dt class="hdlist1" id="git-push--f"> <a class="anchor" href="#git-push--f"></a>-f </dt> <dt class="hdlist1" id="git-push---force"> <a class="anchor" href="#git-push---force"></a>--force </dt> <dd> <p>Normalmente, o comando se recusa a atualizar uma referência remota que não seja um ancestral com referência local usada para substituí-la. Além disso, quando a opção <code>--force-with-lease</code> é usada, o comando se recusa a atualizar uma referência remota cujo valor atual não corresponda ao esperado.</p> <div class="paragraph"> <p>Esta opção desativa estas verificações e pode causar a perda do commit no repositório remoto; utilize com cuidado.</p> </div> <div class="paragraph"> <p>Observe que a opção <code>--force</code> se aplica a todas as refs que forem enviadas, portanto, usá-lo com <code>push.default</code> definido como <code>matching</code> ou com vários destinos de envio configurados com <code>remote.*.push</code> pode substituir diferentes refs do ramo atual (incluindo as refs locais que estão estritamente atrás de sua contraparte remota). Para forçar um envio para apenas um ramo, use um <code>+</code> na frente do refspec que será enviado (<code>git push origin +master</code> para forçar um envio para o ramo <code>master</code> por exemplo). Para mais detalhes consulte a seção <code><refspec>...</code> acima.</p> </div> </dd> <dt class="hdlist1" id="git-push---no-force-if-includes"> <a class="anchor" href="#git-push---no-force-if-includes"></a>--[no-]force-if-includes </dt> <dd> <p>Impõem uma atualização apenas se o topo da ref monitorada remotamente estiver integrada localmente.</p> <div class="paragraph"> <p>Esta opção permite uma checagem que verifica se o topo da referência monitorada remotamente é alcançável a partir de uma das entradas "reflog" do ramo local e feita com base nela para uma reescrita. A verificação assegura que quaisquer atualizações do ramo remoto foram incorporadas localmente, rejeitando a atualização forçada se não for esse o caso.</p> </div> <div class="paragraph"> <p>Nenhuma operação será feita caso a opção seja usada sem definir <code>--force-with-lease</code> ou se definir junto com <code>--force-with-lease=<refname>:<expect></code>.</p> </div> <div class="paragraph"> <p>Usando a opção <code>--no-force-if-includes</code> desativa este comportamento.</p> </div> </dd> <dt class="hdlist1" id="git-push---repoltrepositriogt"> <a class="anchor" href="#git-push---repoltrepositriogt"></a>--repo=<repositório> </dt> <dd> <p>Esta opção é equivalente ao argumento <repositório>. Caso ambos sejam utilizados, o argumento da linha de comandos terá a prioridade.</p> </dd> <dt class="hdlist1" id="git-push--u"> <a class="anchor" href="#git-push--u"></a>-u </dt> <dt class="hdlist1" id="git-push---set-upstream"> <a class="anchor" href="#git-push---set-upstream"></a>--set-upstream </dt> <dd> <p>Para cada ramo atualizado ou impulsionada com êxito, adicione uma referência "upstream" (monitorado), utilizada sem argumento pelo <a href='/docs/git-pull/pt_BR'>git-pull[1]</a> e os outros comandos. Para mais informações, consulte <code>branch.<nome>.merge</code> no <a href='/docs/git-config/pt_BR'>git-config[1]</a>.</p> </dd> <dt class="hdlist1" id="git-push---no-thin"> <a class="anchor" href="#git-push---no-thin"></a>--[no-]thin </dt> <dd> <p>Estas opções são passadas para o <a href='/docs/git-send-pack/pt_BR'>git-send-pack[1]</a>. Uma pequena transferência "thin" reduz significativamente a quantidade dos dados enviados quando o remetente e o destinatário compartilham muito dos mesmos objetos em comum. A predefinição é <code>--thin</code>.</p> </dd> <dt class="hdlist1" id="git-push--q"> <a class="anchor" href="#git-push--q"></a>-q </dt> <dt class="hdlist1" id="git-push---quiet"> <a class="anchor" href="#git-push---quiet"></a>--quiet </dt> <dd> <p>Suprima tudo o que for gerado, incluindo a listagem das atualizações das refs, a menos que um erro aconteça. O progresso não é relatado para o fluxo de erro predefinido.</p> </dd> <dt class="hdlist1" id="git-push--v"> <a class="anchor" href="#git-push--v"></a>-v </dt> <dt class="hdlist1" id="git-push---verbose"> <a class="anchor" href="#git-push---verbose"></a>--verbose </dt> <dd> <p>Rode de forma loquaz.</p> </dd> <dt class="hdlist1" id="git-push---progress"> <a class="anchor" href="#git-push---progress"></a>--progress </dt> <dd> <p>É predefinido que a condição geral do progresso seja relatada no fluxo de erros quando estiver conectado num terminal, a menos que <code>-q</code> seja utilizado. Esta opção impõem a condição geral do progresso, mesmo que o fluxo de erro predefinido não seja direcionado para um terminal.</p> </dd> <dt class="hdlist1" id="git-push---no-recurse-submodules"> <a class="anchor" href="#git-push---no-recurse-submodules"></a>--no-recurse-submodules </dt> <dt class="hdlist1" id="git-push---recurse-submodulescheckon-demandonlyno"> <a class="anchor" href="#git-push---recurse-submodulescheckon-demandonlyno"></a>--recurse-submodules=check|on-demand|only|no </dt> <dd> <p>Pode ser usado para garantir que todos os commits dos submódulos usados pelas revisões que serão enviadas estejam disponíveis numa ramificação rastreada remotamente. Se <em>check</em> for usado, o Git verificará se todos os commits do submódulo que foram alterados nas revisões que serão enviadas, se já estão disponíveis em pelo menos um submódulo do ramo remoto. Se algum commit estiver faltando, o <em>push</em> será abortado e encerrará com uma condição diferente de zero. Elas serão enviadas se <em>on-demand</em> for usado, todos os submódulos que foram alterados nas revisões que serão enviadas. Se o <em>on-demand</em> não conseguir fazer o <em>push</em> de todas as revisões necessárias, ele também será abortado e encerrará com uma condição diferente de zero. Se <em>only</em> for usado, todos os submódulos serão enviados, menos o superprojeto. Um valor de <em>no</em> ou o uso da opção <code>--no-recurse-submodules</code> pode ser usado para substituir a variável de configuração <code>push.recurseSubmodules</code> quando não for necessário a recursão dos submódulos.</p> <div class="paragraph"> <p>Ao usar <em>on-demand</em> ou <em>only</em>, caso um submódulo tenha uma configuração "push.recurseSubmodules={on-demand,only}" ou "submodule.recurse", haverá uma recursão adicional. Nesse caso, "only" é tratado como "on-demand"(sob demanda).</p> </div> </dd> <dt class="hdlist1" id="git-push---no-verify"> <a class="anchor" href="#git-push---no-verify"></a>--[no-]verify </dt> <dd> <p>Ative o gancho prévio do <em>push</em> (para mais detalhes consulte <a href='/docs/githooks/pt_BR'>githooks[5]</a>). A predefinição é <code>--verify</code>, dando ao hook a chance de impedir o <em>push</em>. Com a opção <code>--no-verify</code>, o hook é completamente ignorado.</p> </dd> <dt class="hdlist1" id="git-push--4"> <a class="anchor" href="#git-push--4"></a>-4 </dt> <dt class="hdlist1" id="git-push---ipv4"> <a class="anchor" href="#git-push---ipv4"></a>--ipv4 </dt> <dd> <p>Utilize apenas os endereços IPv4, ignorando os endereços IPv6.</p> </dd> <dt class="hdlist1" id="git-push--6"> <a class="anchor" href="#git-push--6"></a>-6 </dt> <dt class="hdlist1" id="git-push---ipv6"> <a class="anchor" href="#git-push---ipv6"></a>--ipv6 </dt> <dd> <p>Utilize apenas os endereços IPv6, ignorando os endereços IPv4.</p> </dd> </dl> </div> <div class="admonitionblock warning"> <table> <tr> <td class="icon"> <div class="title">Warning</div> </td> <td class="content"> <div class="paragraph"> <p>Missing <code>pt_BR/urls.adoc</code></p> </div> <div class="paragraph"> <p>See original version for this content.</p> </div> </td> </tr> </table> </div> </div> </div> <div class="sect1"> <h2 id="_remotos"><a class="anchor" href="#_remotos"></a>REMOTOS<a id="REMOTES"></a></h2> <div class="sectionbody"> <div class="paragraph"> <p>O nome de um dos seguintes pode ser usado em vez de uma URL como argumento do <code><repositório></code>:</p> </div> <div class="ulist"> <ul> <li> <p>um ramo remoto no arquivo de configuração do Git: <code>$GIT_DIR/config</code>,</p> </li> <li> <p>um arquivo no diretório <code>$GIT_DIR/remotes</code> ou</p> </li> <li> <p>um arquivo no diretório <code>$GIT_DIR/branches</code>.</p> </li> </ul> </div> <div class="paragraph"> <p>Tudo isso também permite seja omitido o refspec da linha de comando, pois cada um contém um refspec que o git utilizará de maneira predefinida.</p> </div> <div class="sect2"> <h3 id="_ramo_remoto_nomeado_no_arquivo_de_configuração"><a class="anchor" href="#_ramo_remoto_nomeado_no_arquivo_de_configuração"></a>Ramo remoto nomeado no arquivo de configuração</h3> <div class="paragraph"> <p>Você pode optar por mencionar o nome de um ramo remoto que você configurou anteriormente usando o comando <a href='/docs/git-remote/pt_BR'>git-remote[1]</a>, <a href='/docs/git-config/pt_BR'>git-config[1]</a> ou até mesmo por uma edição manual no arquivo <code>$GIT_DIR/config</code>. A URL deste ramo remoto será usada para acessar o repositório. O "refspec" deste ramo remoto será usado por padrão quando você não fornecer um "refspec" na linha de comando. A entrada no arquivo de configuração teria a seguinte aparência:</p> </div> <div class="listingblock"> <div class="content"> <pre> [remote "<nome>"] url = <URL> pushurl = <pushurl> push = <refspec> fetch = <refspec></pre> </div> </div> <div class="paragraph"> <p>O <code><pushurl></code> é usado somente para envios. É opcional e o padrão é <code><URL></code>. O envio para um controle remoto afeta todos os pushurls definidos ou todos as urls definidas se não houver pushurls definidos. No entanto, o Fetch só buscará a primeira url definida caso haja várias urls definidas.</p> </div> </div> <div class="sect2"> <h3 id="_arquivo_nomeado_no_git_dirremotes"><a class="anchor" href="#_arquivo_nomeado_no_git_dirremotes"></a>Arquivo nomeado no <code>$GIT_DIR/remotes</code></h3> <div class="paragraph"> <p>Você pode optar por fornecer o nome de um arquivo em <code>$GIT_DIR/remotes</code>. A URL nesse arquivo será usado para acessar o repositório. O "refspec" neste arquivo será usado como padrão quando você não fornecer um "refspec" na linha de comando. Este arquivo deve ter os seguintes formatos:</p> </div> <div class="listingblock"> <div class="content"> <pre> URL: um dos formatos da URL acima Push: <refspec> Pull: <refspec></pre> </div> </div> <div class="paragraph"> <p>As linhas <code>Push:</code> são usadas pelo comando <em>git push</em> e as linhas <code>Pull:</code> são usadas pelo comando <em>git pull</em> e pelo comando <em>git fetch</em>. Várias linhas <code>Push:</code> e <code>Pull:</code> podem ser especificadas para fazer os mapeamentos das ramificações adicionais.</p> </div> </div> <div class="sect2"> <h3 id="_arquivo_informado_em_git_dirbranches"><a class="anchor" href="#_arquivo_informado_em_git_dirbranches"></a>Arquivo informado em <code>$GIT_DIR/branches</code></h3> <div class="paragraph"> <p>Você pode optar por fornecer o nome de um arquivo em <code>$GIT_DIR/branches</code>. A URL nesse arquivo será usado para acessar o repositório. Este arquivo deve ter os seguintes formatos:</p> </div> <div class="listingblock"> <div class="content"> <pre> <URL>#<head></pre> </div> </div> <div class="paragraph"> <p>A <code><URL></code> é necessária; <code>#<head></code> é opcional.</p> </div> <div class="paragraph"> <p>Dependendo da operação, o git usará um dos seguintes "refspecs", caso você não forneça um na linha de comando. O <code><ramo></code> é o nome desse arquivo em <code>$GIT_DIR/branches</code> e <code><cabeçalho></code> tem como <code>master</code> como predefinição.</p> </div> <div class="paragraph"> <p>O git fetch usa:</p> </div> <div class="listingblock"> <div class="content"> <pre> refs/heads/<head>:refs/heads/<ramo></pre> </div> </div> <div class="paragraph"> <p>O comando <code>git push</code> usa:</p> </div> <div class="listingblock"> <div class="content"> <pre> HEAD:refs/heads/<head></pre> </div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_saída"><a class="anchor" href="#_saída"></a>SAÍDA</h2> <div class="sectionbody"> <div class="paragraph"> <p>O que é gerado através do "git push" depende do método de transporte utilizado; Esta seção descreve a saída gerada durante o impulsionamento através do protocolo Git (localmente ou através do ssh).</p> </div> <div class="paragraph"> <p>Durante um "push" a condição é que seja gerado em formato de tabela, com cada linha representando a condição de um único "ref". Cada linha é uma forma de:</p> </div> <div class="listingblock"> <div class="content"> <pre> <flag> <resumo> <from> -> <to> (<reason>)</pre> </div> </div> <div class="paragraph"> <p>Caso a opção <code>--porcelain</code> seja utilizado, cada linha da saída terá o formato:</p> </div> <div class="listingblock"> <div class="content"> <pre> <flag> \t <from>:<to> \t <summary> (<reason>)</pre> </div> </div> <div class="paragraph"> <p>A condição das referências atualizadas é exibido apenas caso a opção <code>--porcelain</code> ou <code>--verbose</code> seja utilizada.</p> </div> <div class="dlist"> <dl> <dt class="hdlist1" id="git-push-sinalizarsinalizaoindicaomarcaomarcador"> <a class="anchor" href="#git-push-sinalizarsinalizaoindicaomarcaomarcador"></a>sinalizar, sinalização, indicação, marcação, marcador </dt> <dd> <p>Um único caractere indicando a condição da referência:</p> <div class="dlist"> <dl> <dt class="hdlist1" id="git-push-space"> <a class="anchor" href="#git-push-space"></a>(space) </dt> <dd> <p>para um push com avanço rápido bem sucedido;</p> </dd> <dt class="hdlist1" id="git-push-codecode"> <a class="anchor" href="#git-push-codecode"></a><code>+</code> </dt> <dd> <p>para uma imposição de atualização bem sucedida;</p> </dd> <dt class="hdlist1" id="git-push-code-code"> <a class="anchor" href="#git-push-code-code"></a><code>-</code> </dt> <dd> <p>para uma "ref" que foi excluída com sucesso;</p> </dd> <dt class="hdlist1" id="git-push-codecode-1"> <a class="anchor" href="#git-push-codecode-1"></a><code>*</code> </dt> <dd> <p>para uma nova "ref" enviada com sucesso;</p> </dd> <dt class="hdlist1" id="git-push-codecode-1-1"> <a class="anchor" href="#git-push-codecode-1-1"></a><code>!</code> </dt> <dd> <p>para uma "ref"que foi rejeitado ou não conseguiu realizar o impulsionamento "push"; e</p> </dd> <dt class="hdlist1" id="git-push-codecode-1-1-1"> <a class="anchor" href="#git-push-codecode-1-1-1"></a><code>=</code> </dt> <dd> <p>para uma "ref" que estava atualizada e não precisava do impulsionamento "push".</p> </dd> </dl> </div> </dd> <dt class="hdlist1" id="git-push-resumo"> <a class="anchor" href="#git-push-resumo"></a>resumo </dt> <dd> <p>Para uma "ref" impulsionada com sucesso, o resumo mostra os valores antigos e os novos da "ref" num formato adequado para a utilização como argumento para o comando <code>git log</code> (isso é <code><antigo>..<novo></code> na maioria dos casos, e <code><antigo>...<novo></code> para as atualizações impostas pelo avanço rápido).</p> <div class="paragraph"> <p>Para uma atualização que falhou, mais detalhes serão dados:</p> </div> <div class="openblock"> <div class="content"> <div class="dlist"> <dl> <dt class="hdlist1" id="git-push-rejeitado"> <a class="anchor" href="#git-push-rejeitado"></a>rejeitado </dt> <dd> <p>O Git não tenta encaminhar a "ref" de forma alguma, geralmente porque não é um avanço rápido e você não impôs a atualização.</p> </dd> <dt class="hdlist1" id="git-push-rejeitadoremotamente"> <a class="anchor" href="#git-push-rejeitadoremotamente"></a>rejeitado remotamente </dt> <dd> <p>O lado remoto recusou a atualização. Normalmente, isso é causado por um gancho no lado remoto ou porque o repositório remoto tem uma das seguintes opções de segurança em vigor: <code>receive.denyCurrentBranch</code> (no caso de um <em>push</em> para o ramo verificado), <code>receive.denyNonFastForwards</code> (para atualizações impostas sem <em>fast-forward</em>), <code>receive.denyDeletes</code> ou <code>receive.denyDeleteCurrent</code>. Consulte <a href='/docs/git-config/pt_BR'>git-config[1]</a>.</p> </dd> <dt class="hdlist1" id="git-push-falharemota"> <a class="anchor" href="#git-push-falharemota"></a>falha remota </dt> <dd> <p>O lado remoto não relatou a atualização bem-sucedida da "ref", talvez por causa de um erro temporário, uma interrupção na conexão da rede ou um outro erro transitório.</p> </dd> </dl> </div> </div> </div> </dd> <dt class="hdlist1" id="git-push-de"> <a class="anchor" href="#git-push-de"></a>de </dt> <dd> <p>O nome do "ref" local que está sendo impulsionado, menos o seu prefixo <code>refs/<tipo>/</code>. No caso de exclusão, o nome do "ref" local é omitido.</p> </dd> <dt class="hdlist1" id="git-push-para"> <a class="anchor" href="#git-push-para"></a>para </dt> <dd> <p>O nome ref remoto sendo atualizado, menos o seu prefixo <code>refs/<tipo>/</code>.</p> </dd> <dt class="hdlist1" id="git-push-motivo"> <a class="anchor" href="#git-push-motivo"></a>motivo </dt> <dd> <p>Uma explicação legível para pessoas. No caso dos refs que forem enviados com sucesso, nenhuma explicação é necessária. Para um "ref" que falhou, o motivo do fracasso então é descrito.</p> </dd> </dl> </div> </div> </div> <div class="sect1"> <h2 id="_nota_sobre_avanços_rápidos"><a class="anchor" href="#_nota_sobre_avanços_rápidos"></a>NOTA SOBRE AVANÇOS RÁPIDOS</h2> <div class="sectionbody"> <div class="paragraph"> <p>Quando uma atualização altera um ramo (ou geralmente uma "ref") que costumava apontar para o commit <em>A</em> que aponta para outro commit <em>B</em>, é chamado de atualização de avanço rápido apenas e somente se <em>B</em> for descendente de <em>A</em>.</p> </div> <div class="paragraph"> <p>Numa atualização rápida de A para B, o conjunto de commits onde o commit original A foi construído é um subconjunto dos commits onde o novo commit B foi construído. Portanto, nenhum histórico é perdido.</p> </div> <div class="paragraph"> <p>Por outro lado, uma atualização sem avanço rápido (fast-forward) perderá o histórico. Por exemplo, imagine que você e outra pessoa começaram no mesmo commit X e você construiu um histórico que leva ao commit B, enquanto a outra pessoa construiu um histórico que leva ao commit A. O histórico ficará assim:</p> </div> <div class="listingblock"> <div class="content"> <pre> B / ---X---A</pre> </div> </div> <div class="paragraph"> <p>Além disso, suponha que a outra pessoa já tenha enviado as alterações que levam "A" de volta ao repositório original, a partir do qual vocês dois obtiveram o commit "X" original.</p> </div> <div class="paragraph"> <p>O <em>push</em> feito pela outra pessoa atualizou o ramo que apontava para o commit X para apontar para o commit A. É um avanço rápido (fast-forward).</p> </div> <div class="paragraph"> <p>Mas se você tentar fazer o <em>push</em>, você tentará atualizar a ramificação (que agora aponta para A) com o commit B. Isso não é um avanço rápido. Se fizer isso, as alterações introduzidas pelo commit A serão perdidas, pois todos começarão a construir em cima de B.</p> </div> <div class="paragraph"> <p>É predefinido que o comando não permita uma atualização que não seja um avanço rápido para impedir esta perda do histórico.</p> </div> <div class="paragraph"> <p>Caso não queira perder o seu trabalho (histórico <em>X</em> para <em>B</em>) ou o trabalho da outra pessoa (histórico de <em>X</em> para <em>A</em>), é necessário primeiro buscar o histórico no repositório, criar um histórico que contenha as alterações feitas por ambas as partes e que impulsione o resultado de volta.</p> </div> <div class="paragraph"> <p>Você pode executar o "git pull", resolver possíveis conflitos e fazer um "git push" do resultado. Um "git pull" criará uma mesclagem do commit C entre os commits A e B.</p> </div> <div class="listingblock"> <div class="content"> <pre> B---C / / ---X---A</pre> </div> </div> <div class="paragraph"> <p>A atualização de "A" com a consolidação resultante da mesclagem, avançará rapidamente e o seu envio será aceito.</p> </div> <div class="paragraph"> <p>Como alternativa, você pode fazer o rebase da alteração entre X e B em cima de A, com <code>git pull --rebase</code>, e enviar de volta o resultado com um <em>push</em>. O rebase criará um novo commit D que constrói a alteração entre X e B em cima de A.</p> </div> <div class="listingblock"> <div class="content"> <pre> B D / / ---X---A</pre> </div> </div> <div class="paragraph"> <p>Novamente, a atualização de <em>A</em> com este commit avançará rapidamente e o seu envio será aceito.</p> </div> <div class="paragraph"> <p>Há uma outra situação comum onde é possível encontrar uma rejeição sem avanço rápido ao tentar enviar através do "push", e é possível mesmo quando você está impulsionando para um repositório que ninguém mais faz impulsionamentos. Depois de enviar o commit <em>A</em> (na primeira foto desta seção), substitua-o pelo comando "git commit --amend" para produzir o commit <em>B</em> e tente realizar o "push", porque foi esquecido que já foi feito um push para <em>A</em>. Neste caso e somente caso tenha certeza que ninguém fez a busca pelo seu commit <em>A</em> anterior (e começou a construir em cima ele), execute o comando "git push --force" para substituí-lo. Em outras palavras, o comando "git push --force" é um método reservado para o caso onde você queira perder o histórico.</p> </div> </div> </div> <div class="sect1"> <h2 id="_exemplos"><a class="anchor" href="#_exemplos"></a>EXEMPLOS</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1" id="git-push-codegitpushcode"> <a class="anchor" href="#git-push-codegitpushcode"></a><code>git push</code> </dt> <dd> <p>Funciona como <code>git push <remoto></code>, onde <remoto> é o ramo remoto da ramificação atual (ou <code>origin</code> (origem), caso nenhum ramo remoto estiver configurado para a ramificação atual).</p> </dd> <dt class="hdlist1" id="git-push-codegitpushorigincode"> <a class="anchor" href="#git-push-codegitpushorigincode"></a><code>git push origin</code> </dt> <dd> <p>Sem uma configuração adicional, envia a ramificação atual para a upstream configurada (a variável de configuração <code>branch.<name>.merge</code>) caso ela tenha o mesmo nome que o ramo atual e os erros ocorrerem sem qualquer outro impulsionamento.</p> <div class="paragraph"> <p>O comportamento predefinido deste comando quando nenhum <refspec> for informado, pode ser configurado definindo a opção <code>push</code> do ramo remoto ou a variável de configuração <code>push.default</code>.</p> </div> <div class="paragraph"> <p>Por exemplo, para fazer o envio predefinido apenas do ramo atual para <code>origin</code>, use o comando <code>git config remote.origin.push HEAD</code>. Qualquer <refspec> válido (como os dos exemplos abaixo) pode ser configurado como o predefinido para o comando <code>git push origin</code>.</p> </div> </dd> <dt class="hdlist1" id="git-push-codegitpushorigincode-1"> <a class="anchor" href="#git-push-codegitpushorigincode-1"></a><code>git push origin :</code> </dt> <dd> <p>Impulsiona (push) as ramificações "que coincidam" para <code>origin</code>. Consulte o <refspec> na seção <a href="#OPTIONS">OPTIONS</a> acima para obter uma descrição dos ramos "coincidentes".</p> </dd> <dt class="hdlist1" id="git-push-codegitpushoriginmastercode"> <a class="anchor" href="#git-push-codegitpushoriginmastercode"></a><code>git push origin master</code> </dt> <dd> <p>Encontre uma referência que corresponda a <code>master</code> no repositório de origem (provavelmente, ele encontrará <code>refs/heads/master</code>) e atualize a mesma referência (<code>refs/heads/master</code> por exemplo) no repositório <code>origin</code> com ela. Se <code>master</code> não existir remotamente, ele seria criado.</p> </dd> <dt class="hdlist1" id="git-push-codegitpushoriginHEADcode"> <a class="anchor" href="#git-push-codegitpushoriginHEADcode"></a><code>git push origin HEAD</code> </dt> <dd> <p>Uma maneira prática de enviar a ramificação atual com o mesmo nome no ramo remoto.</p> </dd> <dt class="hdlist1" id="git-push-codegitpushmothershipmastersatellitemasterdevsatellitedevcode"> <a class="anchor" href="#git-push-codegitpushmothershipmastersatellitemasterdevsatellitedevcode"></a><code>git push mothership master:satellite/master dev:satellite/dev</code> </dt> <dd> <p>Use a referência da origem que corresponde ao <code>master</code> (<code>refs/heads/master</code> por exemplo) para atualizar a referência que corresponde ao <code>satellite/master</code> (provavelmente <code>refs/remotes/satellite/master</code>) no repositório <code>mothership</code>; faça o mesmo para <code>dev</code> e também para <code>satellite/dev</code>.</p> <div class="paragraph"> <p>Consulte a seção que descreve <code><refspec> ...</code> acima para uma discussão sobre a combinação semântica.</p> </div> <div class="paragraph"> <p>Isto serve para emular o comando <code>git fetch</code> executado na <code>mothership</code> utilizando o <code>git push</code> que é executado na direção oposta para integrar o trabalho realizado no <code>satellite</code> e geralmente é necessário quando só é possível fazer a conexão num sentido (ou seja, o satélite pode fazer uma conexão ssh com a nave mãe "mothership" mas a nave mãe não pode iniciar a conexão com o satélite porque este está atrás de um firewall ou não está executando o sshd (servidor ssh)).</p> </div> <div class="paragraph"> <p>Depois de executar o comando <code>git push</code> na máquina do <code>satellite</code>, você entraria na <code>mothership</code> e executaria o comando <code>git merge</code> lá para concluir a emulação do comando <code>git pull</code> executada na <code>mothership</code> para obter as alterações feitas no "satellite".</p> </div> </dd> <dt class="hdlist1" id="git-push-codegitpushoriginHEADmastercode"> <a class="anchor" href="#git-push-codegitpushoriginHEADmastercode"></a><code>git push origin HEAD: master</code> </dt> <dd> <p>Envie o ramo atual para a referência remota que coincida com <code>master</code> no repositório <code>origin</code>. Este formulário é conveniente para impulsionar o ramo atual sem pensar no nome local.</p> </dd> <dt class="hdlist1" id="git-push-codegitpushoriginmasterrefsheadsexperimentalcode"> <a class="anchor" href="#git-push-codegitpushoriginmasterrefsheadsexperimentalcode"></a><code>git push origin master:refs/heads/experimental</code> </dt> <dd> <p>Crie o ramo <code>experimental</code> no repositório <code>origin</code> copiando o ramo <code>master</code> atual. Esse formulário só é necessário para criar uma nova ramificação ou etiqueta no repositório remoto quando o nome local e o nome remoto forem diferentes; caso contrário, o nome da referência por si só funcionará.</p> </dd> <dt class="hdlist1" id="git-push-codegitpushoriginexperimentalcode"> <a class="anchor" href="#git-push-codegitpushoriginexperimentalcode"></a><code>git push origin :experimental</code> </dt> <dd> <p>Encontre uma "ref" que coincida com <code>experimental</code> no repositório <code>origin</code> (<code>refs/heads/experimental</code> por exemplo) e exclua-a.</p> </dd> <dt class="hdlist1" id="git-push-codegitpushorigindevmastercode"> <a class="anchor" href="#git-push-codegitpushorigindevmastercode"></a><code>git push origin +dev:master</code> </dt> <dd> <p>Atualiza a ramificação principal do repositório de origem com a ramificação de desenvolvimento, permitindo atualizações sem avanço rápido. <strong>Isso pode deixar os commits não referenciados pendurados no repositório de origem.</strong> Considere a seguinte situação, onde não é possível avançar rapidamente:</p> <div class="listingblock"> <div class="content"> <pre> o---o---o---A---B origin/master \ X---Y---Z dev</pre> </div> </div> <div class="paragraph"> <p>O comando acima alteraria o repositório de origem para</p> </div> <div class="listingblock"> <div class="content"> <pre> A---B (ramo sem nome) / o---o---o---X---Y---Z master</pre> </div> </div> <div class="paragraph"> <p>Os commits A e B não pertenceriam mais a uma ramificação com um nome simbólico e, portanto, seriam inacessíveis. Dessa maneira, estes commits seriam removidos por um comando <code>git gc</code> no repositório de origem.</p> </div> </dd> </dl> </div> </div> </div> <div class="sect1"> <h2 id="_segurança"><a class="anchor" href="#_segurança"></a>SEGURANÇA</h2> <div class="sectionbody"> <div class="paragraph"> <p>Os protocolos de busca e envio não foram projetados para impedir que um lado roube os dados do outro repositório que não deveriam ser compartilhado. Caso tenha dados particulares que precisam ser protegidos de um par malicioso, a sua melhor opção é armazená-los em um outro repositório. Isso se aplica aos clientes e aos servidores. Em particular, os espaço de nomes em um servidor não são eficazes para o controle de acesso de leitura; você só deve conceder acesso de leitura a um espaço de nomes para os clientes que você confiaria o acesso de leitura para todo o repositório.</p> </div> <div class="paragraph"> <p>Os vetores de ataque informados são os seguintes:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>A vítima envia as linhas "have" anunciando as IDs dos objetos que possui, que não são explicitamente planejados para serem compartilhados, porém podem ser usados para otimizar a transferência caso o par também os tenha. O atacante escolhe um ID do objeto <em>X</em> para roubar e envia uma "ref" para <em>X</em>, porém não é necessário enviar o conteúdo do <em>X</em> porque a vítima já o possui. Agora a vítima acredita que o atacante tem o <em>X</em> e depois envia seu conteúdo de volta ao atacante. (Esse ataque é mais simples para um cliente executar em um servidor, criando uma "ref" para <em>X</em> no espaço de nomes onde o cliente tem acesso e em seguida, buscando-o. A maneira mais provável de um servidor executá-lo em um cliente é "mesclar" <em>X</em> em um ramo público e esperar que o usuário faça um trabalho adicional neste ramo, enviá-lo de volta ao servidor sem perceber a mesclagem.)</p> </li> <li> <p>Como no item 1, o invasor escolhe a ID do objeto X para roubar. A vítima envia um objeto Y que o invasor já possui, e o invasor alega falsamente que possui X e não Y, então a vítima envia Y como um delta contra X. O delta revela ao invasor regiões de X que são semelhantes a Y.</p> </li> </ol> </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>Tudo abaixo desta linha nesta seção, está seletivamente incluído na documentação <a href='/docs/git-config/pt_BR'>git-config[1]</a>. O conteúdo é o mesmo que é encontrado ali:</p> </div> <div class="admonitionblock warning"> <table> <tr> <td class="icon"> <div class="title">Warning</div> </td> <td class="content"> <div class="paragraph"> <p>Missing <code>pt_BR/config/push.adoc</code></p> </div> <div class="paragraph"> <p>See original version for this content.</p> </div> </td> </tr> </table> </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>