{"componentChunkName":"component---src-templates-blog-post-index-js","path":"/git-bare-e-mirror-como-importar-repositorios-com-todo-seu-historico/","result":{"data":{"markdownRemark":{"fields":{"slug":"/git-bare-e-mirror-como-importar-repositorios-com-todo-seu-historico/"},"frontmatter":{"category":"Git","date":"29/07/2020","description":"O git é uma ferramenta poderosa. Veja como importar repositórios com todo o seu histórico de commits e afins.","featuredImage":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHKrFoQCv/EABkQAAIDAQAAAAAAAAAAAAAAAAACARARQf/aAAgBAQABBQKBly+H/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAGBABAAMBAAAAAAAAAAAAAAAAAQARIRD/2gAIAQEAAT8hEu7Wl5wYvH//2gAMAwEAAgADAAAAEK8P/8QAFhEBAQEAAAAAAAAAAAAAAAAAEQEQ/9oACAEDAQE/EGGf/8QAFhEAAwAAAAAAAAAAAAAAAAAAEBEh/9oACAECAQE/EKx//8QAGRABAQEBAQEAAAAAAAAAAAAAAQARITFx/9oACAEBAAE/ECXsoaSA1uDPsx5Lg+y9v//Z","aspectRatio":1.5384615384615385,"src":"/static/1a582f043397bacffc7f67e8336118b5/86e90/bg-git.jpg","srcSet":"/static/1a582f043397bacffc7f67e8336118b5/17b1e/bg-git.jpg 240w,\n/static/1a582f043397bacffc7f67e8336118b5/2d331/bg-git.jpg 480w,\n/static/1a582f043397bacffc7f67e8336118b5/86e90/bg-git.jpg 960w,\n/static/1a582f043397bacffc7f67e8336118b5/c9030/bg-git.jpg 1028w","srcWebp":"/static/1a582f043397bacffc7f67e8336118b5/c30ee/bg-git.webp","srcSetWebp":"/static/1a582f043397bacffc7f67e8336118b5/e8667/bg-git.webp 240w,\n/static/1a582f043397bacffc7f67e8336118b5/87b7f/bg-git.webp 480w,\n/static/1a582f043397bacffc7f67e8336118b5/c30ee/bg-git.webp 960w,\n/static/1a582f043397bacffc7f67e8336118b5/9d4f4/bg-git.webp 1028w","sizes":"(max-width: 960px) 100vw, 960px"}}},"photographer":null,"title":"Git bare e mirror, como importar repositórios com todo seu histórico"},"timeToRead":2,"html":"<p>E ae seus programador bunda rachada, tranquilidade? Nessa semana eu precisei fazer um fodasse rapidinho com o Git e pensei comigo \"<em>Mas por que não colocar isso no Blog?</em>\". E aqui estou eu. Mais um artigo sobre Git que pode ser útil pra você que precisa importar repositórios com todo seu histórico de outro local.</p>\n<h2>Mas por quê fazer isso?</h2>\n<p>Por vários motivos isso pode ocorrer. Seja porque sua empresa terceirizou um projeto e você precisa trazer de outro repositório, ou você quer mover um do Github/Bitbucket/Azure DevOps/Gitlab para outro cara dentro dessa lista.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 900px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 57.9591836734694%; position: relative; bottom: 0; left: 0; background-image: url('data:image/webp;base64,UklGRo4AAABXRUJQVlA4IIIAAAAwBACdASoUAAwAPtFWo0uoJKMhsAgBABoJQBjesX6ZvyRugXJ0IuqJoAAA/vP3JdvsCyfZgjteM+FQ+X36cKv3eTzu8A+7ZC2FIlhzo4uvX1pkYX/AEZQt1VVFij5B8RtgHc2BMK+u8ipPiqmZyqvlDRtUdxfL4eS2kT7l07/drQAA'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"Ilustração com três bonecos, um laptop e um monitor com a marca do git\"\n        title=\"Ilustração com três bonecos, um laptop e um monitor com a marca do git\"\n        data-src=\"/static/30f26c5d119ad5014a9acfb784c6b705/131f1/ilustracao-git.webp\"\n        data-srcset=\"/static/30f26c5d119ad5014a9acfb784c6b705/16b5b/ilustracao-git.webp 245w,\n/static/30f26c5d119ad5014a9acfb784c6b705/47e4b/ilustracao-git.webp 490w,\n/static/30f26c5d119ad5014a9acfb784c6b705/131f1/ilustracao-git.webp 900w\"\n        sizes=\"(max-width: 900px) 100vw, 900px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Claro, não é algo que você vá precisar fazer sempre, mas é bom saber o que e como fazer quando for necessário.</p>\n<h2>Beleza, DulSeven, mas como importar repositórios com todo seu histórico?</h2>\n<p>Simples, com apenas dois comandos que você já usou diversas vezes: <code class=\"language-text\">git clone</code> e <code class=\"language-text\">git push</code>.</p>\n<h3>Mas como assim?</h3>\n<p>Calma! Os comandos são esses, porém, você precisa de um complemento em cada um deles. A primeira parte é importar o repositório que você quer espelhar:</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">git</span> clone --bare URL_REPOSITORIO</code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 753px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 89.79591836734696%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAIAAADUsmlHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB2UlEQVQ4y32T23KcMAyGYQFjI8s6+QDZTXOVvv8jdsymSduh+S6E8Fj+JUseWBNJiomQVPK+QQy+szoXQneHb6glZoVSrLX9OI697W9vP/Z9f3k5Ho9HrSWehBAAujOO41cwsxExYkopIaKKMPO2gTAT0XPr+Ad/Kd/vd1OttR7H0WrbWzPTUmtr9fX1teTCzBHgP2m3xkzaMTPLuZTSA8yev7nUvgIRiAgRnzaE8y5UhSkxkarECGYmIqUUM8WTEIJzblmWGKP3KwAsy/KhHIljkhDJbxBZA+A8TfO8TN3OX/suKTmYbqpcaxPLiViE0wlzd2632+e1fdoP3Oq932LExblhvA3/3Of3lEpqRCJWWj0eJHq2DCFC/5z6iDheHlozcdoAQghhnm7TNC2/cZ1l9evq1+uESm251Ijog4cIAJDNAGDbtpRSCOH7tOuzsUxk2vuUs4mqirTaNAsdDvN8rYyIIhJjF+2lAvh1xXNW+zrzrZbZeHDuWvl+v59KfTbUuqOWVU/lvfmfjxG2wa0Xwarapxe7dkopYvcwJUpJ1VjxeJ8X95+azXKtlZhSSiJyjm5k7m8rW+Ys/C6+4rBePWxm/qz5VO5OPDPpHeYELzCs63A1p78AG/Qond+V7CIAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"Terminal mostrando comando git clone --bare como exemplo\"\n        title=\"Terminal mostrando comando git clone --bare como exemplo\"\n        data-src=\"/static/e5bf43639e7fe9f73cae3d8c4f914288/17a7a/tela-exemplo.png\"\n        data-srcset=\"/static/e5bf43639e7fe9f73cae3d8c4f914288/86a2e/tela-exemplo.png 245w,\n/static/e5bf43639e7fe9f73cae3d8c4f914288/41d3c/tela-exemplo.png 490w,\n/static/e5bf43639e7fe9f73cae3d8c4f914288/17a7a/tela-exemplo.png 753w\"\n        sizes=\"(max-width: 753px) 100vw, 753px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Na imagem acima eu mostro um exemplo do comando e depois listo os arquivos. Perceba que ele não fez um clone normal, você não consegue mexer no projeto como num outro qualquer.</p>\n<p>No comando de clone eu acabei nomeando a pasta como <code class=\"language-text\">fodasse</code>, mas caso eu não tivesse feito isso o nome seria o <code class=\"language-text\">nome_do_repositorio.git</code>, no caso da minha imagem seria <code class=\"language-text\">blog.git</code>.</p>\n<p>Esse complemento bare fica somente com o que tem na pasta <code class=\"language-text\">.git</code> dos repositórios, ele fica nu, como o termo diz, você não consegue trabalhar em cima dele.</p>\n<h3>Chegou a vez do segundo comando: git push --mirror</h3>\n<p>Lembra que o segundo comando era outro simples que usamos sempre, o push? Só que com o complemento <code class=\"language-text\">--mirror</code>. A primeira coisa é entrar na pasta onde está o repositório nu (ui ui ui delícia) e depois criar um repositório onde quiser, Github/Bitbucket/Azure DevOps/Gitlab da vida. Ele precisa estar limpo, sem nenhum arquivo dentro.</p>\n<p>Depois é só lançar o comando abaixo:</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">git</span> push --mirror URL_NOVO_REPOSITORIO</code></pre></div>\n<p>Depois disso é só analisar seu novo repositório. Agora ele não estará mais limpo, terá todos os arquivos com seu histórico, suas branches e afins.</p>\n<h2>Finalizando</h2>\n<p>Bom, a parte ruim que eu acho do <strong>git clone bare</strong> + <strong>git push mirror</strong> é que o histórico de Pull Requests se perde. Infelizmente você não terá isso na ferramenta onde você começar o novo repositório. Mas claro, todos os merges estarão no histórico, portanto, não é uma perda tão grande assim.</p>\n<p>E ae, o que achou? Conhecia? Faz de outra forma? Conte nos comentários ;)</p>\n<p>Aquele abraço.</p>"}},"pageContext":{"nextPost":{"fields":{"slug":"/vida-digital-alma-analogica/"},"frontmatter":{"title":"Vida Digital, Alma Analógica"}},"previousPost":{"fields":{"slug":"/como-resolver-erros-no-typescript-com-atributos-nos-componentes-em-react/"},"frontmatter":{"title":"Como resolver erros no typescript com atributos nos componentes em React"}},"slug":"/git-bare-e-mirror-como-importar-repositorios-com-todo-seu-historico/"}},"staticQueryHashes":["1271460761","2963127411","3623170217","764694655"]}