{"title":"Trabalhando com Git e GitHub","version":"2.2","locale":"pt-br","docname":"internals/contributing/writing-code/working-with-git","url":"/pt-br/2.2/internals/contributing/writing-code/working-with-git/","canonical":"https://djangodocs.dev/pt-br/2.2/internals/contributing/writing-code/working-with-git/","summary":"This section explains how the community can contribute code to Django via pull requests.","html":"<h1>Trabalhando com Git e GitHub<a class=\"heading-anchor\" href=\"#working-with-git-and-github\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>This section explains how the community can contribute code to Django via pull\nrequests. If you’re interested in how committers handle them, see\n<a class=\"reference internal\" href=\"/pt-br/2.2/internals/contributing/committing-code/\"><span class=\"doc\">Enviando código</span></a>.</p>\n<p>Abaixo, iremos mostrar como criar um “pull request” no GitHub, contendo as mudanças para o ticket #xxxxx do Trac. Criando um “pull request” totalmente pronto, você tornará mais fácil o trabalho dos revisores, o que quer dizer que seu trabalho está mais próximo de ser “mergeado” no Django.</p>\n<p>Você também poderia fazer upload de um patch tradicional no Trac, mas isso é menos prático para os revisores.</p>\n<section id=\"installing-git\">\n<h2>Instalando Git<a class=\"heading-anchor\" href=\"#installing-git\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django uses <a class=\"reference external\" href=\"https://git-scm.com/\">Git</a> for its source control. You can <a class=\"reference external\" href=\"https://git-scm.com/download\">download</a> Git, but it’s often easier to install with\nyour operating system’s package manager.</p>\n<p>O repositório do Django é hospedado no <a class=\"reference external\" href=\"https://github.com/\">GitHub</a>, e é recomendado que você também trabalhe usando o GitHub.</p>\n<p>Depois de instalar o Git, a primeira coisa a se fazer  é definir seu nome e email:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>$ git config --global user.name &quot;Your Real Name&quot;\n$ git config --global user.email &quot;you@email.com&quot;\n</code></pre></div>\n<p>Note que <code class=\"docutils literal notranslate\">user.name</code> deve ser o seu nome real, e não o seu nick no GitHub. O GitHub deve saber o email que você usa pelo campo <code class=\"docutils literal notranslate\">user.email</code>, já que ele será usado para associar os seus commits com a sua conta no GitHub.</p>\n</section>\n<section id=\"setting-up-local-repository\">\n<h2>Configurando o repositório local<a class=\"heading-anchor\" href=\"#setting-up-local-repository\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uma vez que você tenha criado a sua conta no GitHub, com o nick “GitHub_nick”, e realizado o <a class=\"reference external\" href=\"https://github.com/django/django/fork\">fork do repositório do Django</a>, crie uma cópia local do seu fork:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git clone https<span class=\"p\">:</span><span class=\"o\">//</span>github<span class=\"o\">.</span>com<span class=\"o\">/</span>GitHub_nick<span class=\"o\">/</span>django<span class=\"o\">.</span>git\n</code></pre></div>\n<p>Isso irá criar um novo diretório “django”, contendo um “clone” do seu repositório do GitHub. O resto dos comandos git nesta página precisam ser executados dentro do diretório do seu “clone”,   então vá para lá agora:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>cd django\n</code></pre></div>\n<p>O seu repositório GitHub será chamado de “origin” no Git.</p>\n<p>Você deve também definir o <code class=\"docutils literal notranslate\">django/django</code> como um “upstream” remoto (isto é, informar ao git que o repositório Django de referência é a fonte do seu “fork”):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git remote add upstream git<span class=\"nd\">@github</span><span class=\"o\">.</span>com<span class=\"p\">:</span>django<span class=\"o\">/</span>django<span class=\"o\">.</span>git\ngit fetch upstream\n</code></pre></div>\n<p>Você pode adicionar outros “upstreams” remotos de modo similar, por exemplo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git remote add akaariai git<span class=\"nd\">@github</span><span class=\"o\">.</span>com<span class=\"p\">:</span>akaariai<span class=\"o\">/</span>django<span class=\"o\">.</span>git\n</code></pre></div>\n</section>\n<section id=\"working-on-a-ticket\">\n<h2>Trabalhando em um ticket<a class=\"heading-anchor\" href=\"#working-on-a-ticket\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Quando estiver trabalhando no seu ticket, crie um “branch” nova para o trabalho, e baseie este trabalho no “upstream/master”</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git checkout <span class=\"o\">-</span>b ticket_xxxxx upstream<span class=\"o\">/</span>master\n</code></pre></div>\n<p>A flag -b cria uma nova branch para você localmente. Não hesite em criar novas branches mesmo para as coisas mais simples - esse é o motivo delas existirem.</p>\n<p>Se ao invés disso você estiver trabalhando em uma correção na branch 1.4, você poderia fazer:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git checkout <span class=\"o\">-</span>b ticket_xxxxx_1_4 upstream<span class=\"o\">/</span>stable<span class=\"o\">/</span><span class=\"mf\">1.4</span><span class=\"o\">.</span>x\n</code></pre></div>\n<p>Assuma que o trabalho está sendo feito no “branch” chamado ticket_xxxxx. Faça algumas mudanças e então faça o commit:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git commit\n</code></pre></div>\n<p>Quando estiver escrevendo uma mensagem de commit, siga as <a class=\"reference internal\" href=\"/pt-br/2.2/internals/contributing/committing-code/#committing-guidelines\"><span class=\"std std-ref\">orientações para mensagens de commit</span></a> para facilitar o trabalho do committer. Se você estiver desconfortável em usar inglês, tente pelo menos descrever precisamente o que o commit faz.</p>\n<p>Se você precisar fazer trabalho adicional na sua branch, faça commit com tanta frequência quanto for necessário.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git commit <span class=\"o\">-</span>m <span class=\"s1\">&#39;Added two more tests for edge cases&#39;</span>\n</code></pre></div>\n<section id=\"publishing-work\">\n<h3>Publicando trabalho<a class=\"heading-anchor\" href=\"#publishing-work\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Você pode publicar o seu trabalho no GitHub fazendo o seguinte:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git push origin ticket_xxxxx\n</code></pre></div>\n<p>Quando acessar sua página no GitHub, irá perceber que um novo “branch” foi criado.</p>\n<p>Se você está trabalhando em um ticket do Trac, você deve mencionar no ticket que o seu trabalho está disponível através da branch ticket_xxxxx do seu repositório no GitHub. Inclua um link para a sua branch.</p>\n<p>Tenha em mente que a branch acima é chamada de “topic branch” no linguajar do Git. Você é livre para reescrever o histórico dessa branch, através do uso do <code class=\"docutils literal notranslate\">git rebase</code> por exemplo. Outras pessoas não deveriam basear o seu trabalho em uma branch como essa, porque os clones dela serão corrompidos quando você editar os seus commits.</p>\n<p>Também existem “branches”públicos. Estes são “branches” que supostamente foram feitos por outras pessoas, portanto o histórico destes outros branches não devem ser alterados. Um bom exmplo de “branches”públicos são os branches <code class=\"docutils literal notranslate\">master</code> e <code class=\"docutils literal notranslate\">stable/A.B.x</code> do repositório no <code class=\"docutils literal notranslate\">django/django</code>.</p>\n<p>Quando você achar que o seu trabalho está pronto para ser enviado para o Django, você deve criar um pull request no GitHub. Um bom pull request significa:</p>\n<ul class=\"simple\">\n<li><p>Commits com uma mudança lógica, seguindo o <a class=\"reference internal\" href=\"/pt-br/2.2/internals/contributing/writing-code/coding-style/\"><span class=\"doc\">estilo de código</span></a>,</p></li>\n<li><p>Mensagens bem formatadas para cada commit: uma linha de sumário e então parágrafos embutidos em até 72 caracteres depois dela – veja as <a class=\"reference internal\" href=\"/pt-br/2.2/internals/contributing/committing-code/#committing-guidelines\"><span class=\"std std-ref\">regras de commit</span></a> para mais detalhes.</p></li>\n<li><p>Documentação e testes, quando necessário – na verdade testes são sempre necessários, exceto para mudanças na documentação.</p></li>\n</ul>\n<p>A suíte de testes deve passar e a documentação deve ser gerada sem quaisquer warnings.</p>\n<p>Uma vez que tenha criado seu pull request, você deve adicionar um comentário no ticket do Trac relacionado explicando o que você fez. Em particular, você deve mencionar o ambiente no qual você rodou os testes, por exemplo: “all tests pass under SQLite and MySQL”.</p>\n<p>Pull Requests no GitHub só possuem dois estados: aberto e fechado. O committer que for lidar com o seu pull request só tem duas opções: fazer merge dele ou fechá-lo. Por esta razão, não é útil fazer um pull request enquanto o código não estiver pronto para o merging – ou suficientemente concluído a ponto de o próprio committer finalizá-lo ele mesmo.</p>\n</section>\n<section id=\"rebasing-branches\">\n<h3>Fazendo rebase de branches<a class=\"heading-anchor\" href=\"#rebasing-branches\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>No exemplo acima, você criou dois commits, o “Fixed ticket_xxxxx” e o “Added two more tests”.</p>\n<p>Nós não queremos ter o histórico inteiro do seu processo de trabalho no seu repositório. O seu commit “Added two more tests” seria poluído e pouco amigável. Ao invés disso, nós preferimos ter apenas um commit contendo todo o seu trabalho.</p>\n<p>Para retrabalhar o histórico da sua branch você pode esmagar os commits tornando todos eles uma coisa só através do uso interativo do rebase:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git rebase <span class=\"o\">-</span>i HEAD<span class=\"o\">~</span><span class=\"mi\">2</span>\n</code></pre></div>\n<p>O HEAD~2 acima é um atalho para os dois últimos commits. O comando acima irá abrir um editor mostrando os dois commits, prefixados com a palavra “pick”.</p>\n<p>Mude “pick” na segunda linha para “squash”. Isso manterá o primeiro commit, e esmagará o segundo commit dentro do primeiro. Salve e feche o editor. Uma segunda janela do editor deverá abrir, de modo que você possa reescrever a mensagem de commit agora que ele está incluindo os seus dois passos.</p>\n<p>Você também pode usar a opção “edit” no rebase. Desta forma você pode mudar um único commit, por exemplo para corrigir um erro de ortografia em uma docstring:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git rebase <span class=\"o\">-</span>i HEAD<span class=\"o\">~</span><span class=\"mi\">3</span>\n<span class=\"c1\"># Choose edit, pick, pick for the commits</span>\n<span class=\"c1\"># Now you are able to rework the commit (use git add normally to add changes)</span>\n<span class=\"c1\"># When finished, commit work with &quot;--amend&quot; and continue</span>\ngit commit <span class=\"o\">--</span>amend\n<span class=\"c1\"># Reword the commit message if needed</span>\ngit rebase <span class=\"o\">--</span><span class=\"k\">continue</span>\n<span class=\"c1\"># The second and third commits should be applied.</span>\n</code></pre></div>\n<p>Se seu “branch” já está publicado no GitHyb, por exemplo se você está fazendo alterações pequenas para considerar uma revisão, você precisa forçar o “push” com as alterações:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git push <span class=\"o\">-</span>f origin ticket_xxxxx\n</code></pre></div>\n<p>Note que isso irá reescrever o histórico do ticket_xxxxx - Se você verificar o “hash” do commit antes e depois da operação no GitHub você irá perceber que o “hash” do commit não é mais o mesmo. Isso é aceitável, já que o “branch” é meramente um “topic branch”, e ninguém deve basear seu trabalho nele.</p>\n</section>\n<section id=\"after-upstream-has-changed\">\n<h3>Depois que o upstream foi modificado<a class=\"heading-anchor\" href=\"#after-upstream-has-changed\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Quando o “upstream” (“django/django”) for alterado, você deve fazer um “rebase” no seu trabalho. Para isso, use o:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git fetch upstream\ngit rebase\n</code></pre></div>\n<p>O “rebase” é aplicado automaticamente no seu trabalho usando o “branch” que você “forcou”, neste caso de exemplo usando o <code class=\"docutils literal notranslate\">upstream/master</code></p>\n<p>O comando rebase remove todos os seus commits locais temporariamente, aplica os commits do upstream, e então aplica os seus commits locais novamente.</p>\n<p>Se houver conflitos nos “merges”, precisamos resolvê-los e então usar o <code class=\"docutils literal notranslate\">get rebase --continue</code>. Em qualquer momento você pode usar o <code class=\"docutils literal notranslate\">get rebase --abort</code> para retornar ao estado original.</p>\n<p>Note que você quer fazer <em>rebase</em> no upstream, e não <em>merge</em> do upstream.</p>\n<p>A razão para isso é que ao fazer o rebase, os seus commits sempre ficarão <em>no topo</em> do trabalho realizado no upstream e não <em>misturado com</em> as mudanças do upstream. Desta forma a sua topic branch irá conter somente commits relacionados a ela, o que faz com que o  processo de esmagar os seus commits fique mais simples.</p>\n</section>\n<section id=\"after-review\">\n<h3>Depois de revisar<a class=\"heading-anchor\" href=\"#after-review\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>É muito incomum receber qualquer porção de código não trivial incluída no core do Django sem quaisquer alterações sendo solicitadas pelos revisores. Neste caso, costuma ser uma boa ideia adicionar as mudanças na forma de um commit incremental para o seu trabalho. Isso permite que os revisores possam checar facilmente quais mudanças você fez.</p>\n<p>Neste caso, faça as mudanças solicitadas pelo revisor. Faça commit tão frequentemente quanto necessário. Antes de publicar as mudanças, faça o rebase do seu trabalho. Se você adicionou mais dois commits, você pode rodar o seguinte comando:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git rebase <span class=\"o\">-</span>i HEAD<span class=\"o\">~</span><span class=\"mi\">2</span>\n</code></pre></div>\n<p>Esmague o segundo commit dentro do primeiro. Escreva uma mensagem de commit junto das linhas de:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Made changes asked <span class=\"ow\">in</span> review by <span class=\"o\">&lt;</span>reviewer<span class=\"o\">&gt;</span>\n\n<span class=\"o\">-</span> Fixed whitespace errors <span class=\"ow\">in</span> foobar\n<span class=\"o\">-</span> Reworded the docstring of bar<span class=\"p\">()</span>\n</code></pre></div>\n<p>Finalmente, faça o “push” do seu trabalho de volta para o seu respotitório do GitHub. Uma vez que não tenha tocado nos “commits” públicos durante o “rebase”, você não vai precisar forçar um “push” (force-push):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git push origin ticket_xxxxx\n</code></pre></div>\n<p>O seu pull request deve agora conter um novo commit também.</p>\n<p>Note que o committer provavelmente irá esmagar o commit revisado dentro de outros commits prévios quando estiver fazendo a submissão do código.</p>\n</section>\n</section>\n<section id=\"working-on-a-patch\">\n<h2>Trabalhando em um patch<a class=\"heading-anchor\" href=\"#working-on-a-patch\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uma das formas que os desenvolvedores podem contribuir com o Django é revisando patches. Esses patches tipicamente existirão na forma de pull requests no GitHub e poderão ser facilmente integrados dentro do seu repositório local:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>git checkout <span class=\"o\">-</span>b pull_xxxxx upstream<span class=\"o\">/</span>master\ncurl https<span class=\"p\">:</span><span class=\"o\">//</span>github<span class=\"o\">.</span>com<span class=\"o\">/</span>django<span class=\"o\">/</span>django<span class=\"o\">/</span>pull<span class=\"o\">/</span>xxxxx<span class=\"o\">.</span>patch <span class=\"o\">|</span> git am\n</code></pre></div>\n<p>Isso irá criar uma nova branch e então aplicar as mudanças do pull request nela. Neste momento você pode rodar os testes ou fazer qualquer coisa que você precise para investigar a qualidade do patch.</p>\n<p>Para mais detalhes sobre como trabalhar com pull requests veja as <a class=\"reference internal\" href=\"/pt-br/2.2/internals/contributing/committing-code/#handling-pull-requests\"><span class=\"std std-ref\">orientações para committers</span></a>.</p>\n</section>\n<section id=\"summary\">\n<h2>Resumo<a class=\"heading-anchor\" href=\"#summary\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul class=\"simple\">\n<li><p>Trabalhe no GitHub se você puder.</p></li>\n<li><p>Anuncie o seu trabalho no ticket do Trac adicionando um link para a sua branch no GitHub.</p></li>\n<li><p>Quando você tiver algo pronto, faça um pull request.</p></li>\n<li><p>Faça os melhores pull requests que você puder fazer.</p></li>\n<li><p>Quando estiver fazendo correçṍes no seu trabalho, use <code class=\"docutils literal notranslate\">git rebase -i</code> para esmagar os commits.</p></li>\n<li><p>Quando o upstream tiver sido alterado, faça <code class=\"docutils literal notranslate\">git fetch upstream; git rebase</code>.</p></li>\n</ul>\n</section>","rootId":"working-with-git-and-github","toc":[{"title":"Instalando Git","anchor":"installing-git","children":[]},{"title":"Configurando o repositório local","anchor":"setting-up-local-repository","children":[]},{"title":"Trabalhando em um ticket","anchor":"working-on-a-ticket","children":[{"title":"Publicando trabalho","anchor":"publishing-work","children":[]},{"title":"Fazendo rebase de branches","anchor":"rebasing-branches","children":[]},{"title":"Depois que o upstream foi modificado","anchor":"after-upstream-has-changed","children":[]},{"title":"Depois de revisar","anchor":"after-review","children":[]}]},{"title":"Trabalhando em um patch","anchor":"working-on-a-patch","children":[]},{"title":"Resumo","anchor":"summary","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Funcionamento interno do Projeto Django","url":"/pt-br/2.2/internals/"},{"docname":"internals/contributing/index","title":"Contribuindo com o Django","url":"/pt-br/2.2/internals/contributing/"},{"docname":"internals/contributing/writing-code/index","title":"Escrevendo código","url":"/pt-br/2.2/internals/contributing/writing-code/"}],"prev":{"docname":"internals/contributing/writing-code/submitting-patches","title":"Enviando patches","url":"/pt-br/2.2/internals/contributing/writing-code/submitting-patches/"},"next":{"docname":"internals/contributing/writing-code/javascript","title":"JavaScript","url":"/pt-br/2.2/internals/contributing/writing-code/javascript/"},"formats":{"html":"/pt-br/2.2/internals/contributing/writing-code/working-with-git/","markdown":"/pt-br/2.2/internals/contributing/writing-code/working-with-git.md","json":"/pt-br/2.2/internals/contributing/writing-code/working-with-git.json"},"source":"https://github.com/django/django/blob/stable/2.2.x/docs/internals/contributing/writing-code/working-with-git.txt","official":"https://docs.djangoproject.com/pt-br/2.2/internals/contributing/writing-code/working-with-git/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}