{"id":117,"date":"2017-04-13T10:54:00","date_gmt":"2017-04-13T13:54:00","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2017\/04\/git-simples-e-rapido\/"},"modified":"2026-09-08T01:56:22","modified_gmt":"2026-09-08T04:56:22","slug":"git-simples-e-rapido","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2017\/04\/git-simples-e-rapido\/","title":{"rendered":"Git simple y r\u00e1pido"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro diante de um quadro com o diagrama de branch e merge do Git, ao lado do losango do projeto\" src=\"\/wp-content\/uploads\/2026\/09\/git-v5.webp\" width=\"1052\" height=\"652\" \/><\/p>\n<div style=\"background:#fff8e1;border-left:4px solid #8b1a1a;padding:.8em 1em;margin:1em 0\"><strong>Nota (2026):<\/strong> el flujo de abajo sigue siendo el del d\u00eda a d\u00eda. El paquete ahora es <code data-no-translation=\"\">git<\/code> (no <code data-no-translation=\"\">git-core<\/code>), la rama por defecto suele ser <code data-no-translation=\"\">main<\/code> y la clave SSH moderna es Ed25519. La historia \u2014 BitKeeper, los diez d\u00edas de 2005, Junio Hamano, Git 2.55 \u2014 est\u00e1 en <a href=\"\/es\/2026\/09\/a-historia-do-git\/\">La historia de Git<\/a>.<\/div>\n<p>Chuleta corta: instalar, configurar, clonar, hacer commit, enviar. Sin teor\u00eda de objetos. Si nunca has usado Git, estos son los comandos que resuelven el 90% de los casos.<\/p>\n<p><!-- more --><\/p>\n<h2>Instalar<\/h2>\n<p>Debian\/Ubuntu y derivados:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo apt update\nsudo apt install git\ngit --version<\/code><\/pre>\n<p>En 2026 el paquete es <code data-no-translation=\"\">git<\/code>. El nombre antiguo <code data-no-translation=\"\">git-core<\/code> era un metapaquete; no lo busques.<\/p>\n<h2>Nombre, correo y rama por defecto<\/h2>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">git config --global user.name \"Seu Nome\"\ngit config --global user.email seu@email.com\ngit config --global init.defaultBranch main\ngit config --global pull.rebase false<\/code><\/pre>\n<p><code data-no-translation=\"\">user.name<\/code> e <code data-no-translation=\"\">user.email<\/code> entran en cada commit. Sin esto Git se queja. El nombre de rama por defecto en la industria dej\u00f3 de ser <code data-no-translation=\"\">master<\/code> alrededor de 2020; <code data-no-translation=\"\">main<\/code> es lo que GitHub, GitLab y el propio Git usan en un repositorio nuevo.<\/p>\n<h2>Clave SSH<\/h2>\n<p>Ed25519, no RSA 4096 \u2014 m\u00e1s peque\u00f1o y el predeterminado actual. Detalle del flujo sin contrase\u00f1a: <a href=\"\/es\/2017\/04\/ssh-sem-senha\/\">SSH sin contrase\u00f1a<\/a>.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">ssh-keygen -t ed25519 -C \"seu@email.com\"\neval \"$(ssh-agent -s)\"\nssh-add ~\/.ssh\/id_ed25519\ncat ~\/.ssh\/id_ed25519.pub<\/code><\/pre>\n<p>Pega la clave p\u00fablica en GitHub\/GitLab \u2192 Settings \u2192 SSH keys. Prueba:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">ssh -T git@github.com<\/code><\/pre>\n<h2>Repositorio nuevo o clonar<\/h2>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">mkdir projeto && cd projeto\ngit init\n# ou, o caso comum:\ngit clone git@github.com:usuario\/projeto.git\ncd projeto<\/code><\/pre>\n<h2>Add, commit, status<\/h2>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">git status\ngit add arquivo.txt          # ou: git add -A\ngit commit -m \"mensagem curta no imperativo\"\ngit log --oneline -5<\/code><\/pre>\n<p class=\"translation-block\">El commit queda en el repositorio <em>local<\/em>. Todav\u00eda no est\u00e1 en GitHub.<\/p>\n<h2>Branch: switch, no solo checkout<\/h2>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">git switch -c feature\/login    # cria e entra\ngit switch main                # volta\ngit merge feature\/login\ngit branch -d feature\/login<\/code><\/pre>\n<p><code data-no-translation=\"\">git switch<\/code> e <code data-no-translation=\"\">git restore<\/code> (deshacer archivo) existen desde Git 2.23 (2019) y separan lo que el <code data-no-translation=\"\">checkout<\/code> hac\u00eda demasiado. <code data-no-translation=\"\">checkout<\/code> sigue funcionando; para c\u00f3digo nuevo, usa los dos nuevos.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">git restore arquivo.txt           # descarta mudan\u00e7a no working tree\ngit restore --staged arquivo.txt  # tira do index, mant\u00e9m o arquivo<\/code><\/pre>\n<h2>Remoto y push<\/h2>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">git remote add origin git@github.com:usuario\/projeto.git\ngit push -u origin main<\/code><\/pre>\n<p>Las pr\u00f3ximas veces: <code data-no-translation=\"\">git push<\/code> e <code data-no-translation=\"\">git pull<\/code>. El <code data-no-translation=\"\">-u<\/code> graba el upstream. Si el remoto a\u00fan usa <code data-no-translation=\"\">master<\/code>, cambia el nombre de la rama \u2014 no inventes <code data-no-translation=\"\">main<\/code> en un remoto que no lo tiene.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">git branch -M main    # s\u00f3 se voc\u00ea est\u00e1 migrando um repo antigo<\/code><\/pre>\n<h2>El flujo de un d\u00eda<\/h2>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">git pull\ngit switch -c fix\/typo\n# edita\ngit add -A\ngit commit -m \"Corrige typo no README\"\ngit push -u origin fix\/typo\n# abre o pull request no GitHub\/GitLab\ngit switch main<\/code><\/pre>\n<h2>V\u00eddeo: Descomplicando o Git (LinuxTips)<\/h2>\n<p class=\"translation-block\">El <a href=\"https:\/\/www.youtube.com\/channel\/UCJnKVGmXRXrH49Tvrx5X0Sw\">LinuxTips<\/a> de Jeferson Fernando grab\u00f3 \u201cDescomplicando o GIT\u201d, todav\u00eda el mejor recorrido en portugu\u00e9s por el flujo. La historia (BitKeeper, los diez d\u00edas, el Git 2.55) qued\u00f3 en el nuevo post.<\/p>\n<div style=\"position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin:1.5em 0\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/_aj3hsEh9iw\" title=\"Descomplicando el GIT \u2014 LinuxTips\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen style=\"position:absolute;top:0;left:0;width:100%;height:100%;border:0\"><\/iframe>\n<\/div>\n<h2>M\u00e1s<\/h2>\n<ul>\n<li><a href=\"\/es\/2026\/09\/a-historia-do-git\/\">La historia de Git<\/a> \u2014 BitKeeper, Linus, Junio, 2.55<\/li>\n<li><a href=\"\/es\/2026\/09\/a-historia-de-linus-torvalds\/\">La historia de Linus Torvalds<\/a><\/li>\n<li><a href=\"https:\/\/git-scm.com\/book\/pt-br\/v2\">Pro Git (libro oficial, v2 en portugu\u00e9s)<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=sCr_gb8rdEI\">Two decades of Git \u2014 entrevista con Linus (2025)<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Cheatsheet curto: instalar, configurar, clonar, commitar, enviar. Sem teoria de objeto. Se voc\u00ea nunca usou Git, estes s\u00e3o os comandos que resolvem 90% dos casos. Instalar Debian\/Ubuntu e derivados: sudo apt update sudo apt install git git &#8211;version Em 2026 &#8230; <a title=\"Git simple y r\u00e1pido\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/es\/2017\/04\/git-simples-e-rapido\/\" aria-label=\"Leer m\u00e1s sobre Git simples e r\u00e1pido\">Leer m\u00e1s<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45,46,2],"tags":[50,47,48,49,4,51],"class_list":["post-117","post","type-post","status-publish","format-standard","hentry","category-desenv","category-devops","category-linux","tag-desenv","tag-devops","tag-git","tag-github","tag-linux","tag-win"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=117"}],"version-history":[{"count":8,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/117\/revisions"}],"predecessor-version":[{"id":1061,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/117\/revisions\/1061"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}