pages/archivos-gendoc/16_magit.html

6879 lines
510 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="generator" content="gendoc 1.0.0: https://gitlab.com/bztsrc/gendoc">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>magit</title>
<style rel="logic">*{box-sizing:border-box;font-family:inherit;}body {background:rgba(0,0,0,0.05);font-weight:400;font-size:16px;}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:26px 0;padding:0;border-top:1px solid;}br:after,br:before{display:table;content:""}br{clear:both;}h1,h2,h3,h4,h5,h6{clear:both;margin:0px 0px 20px 0px;padding-top:4px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}p{margin:0 0 24px}a{cursor:pointer;}h1{font-size:175%}h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}pre,samp,code,var,kbd{font-family:Monaco,Consolas,Liberation Mono,Courier,monospace;}pre,code{display:block;overflow:auto;white-space:pre;font-size:14px;line-height:16px!important;}pre{padding:12px;margin:0px;}code{padding:0 0 12px 0;margin:12px 12px 0px 2px;background:url(data:type/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAgCAYAAADT5RIaAAAAFklEQVQI12NgYGDgZWJgYGCgDkFtAAAWnAAsyj4TxgAAAABJRU5ErkJggg==) 0 0 repeat;}.lineno{display:block;padding:0px 4px 0px 4px;margin:12px 0px 0px 0px;opacity:.4;text-align:right;float:left;white-space:pre;font-size:12px;line-height:16px!important;}pre .hl_b,samp .hl_b,code .hl_b{display:block;}blockquote{margin:0px;padding:12px;}blockquote>span:first-child::before{content:url(data:type/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAYAAABU1PscAAABRElEQVRYw+3WTytEURjH8c/4l1JTpKxsyEbYWFkpG+UVKOWFeAts7eytbJSysLLVxIKNFAslwhSlUQabUdM0xm0e967Ot+7inPN8z+13z73nXBKJRCIRoJSxbggrmMMInlHBIWoF+KEAQ9jAaJuxe2zhJUe/Iz0ZahZ/uTmMYT1nPxxg/I/xWQzn6IcD1IIha//wkEIBKhlq+nP0wwHOsYuvDjWvOfod6c1Yd9O4ZjDQZvwAbzn6oRVofpKbqLf0P+GxAD8cAO7w0NJ3WqAfDlBCuan9gaMC/XCA+cbJ+sMRqgX6oQCTWGtqX2O/QL8tfRlqyljGUlPgW2y3+SDz8Lv6mRvEQmPbm25ZqQvs/LHtRf3wCkxgtaWvij2cZJg36ocD/Pw91nGJY5zhM+O8UT/8Ck01TswrvHcxb9RPJBKJRDF8AyNbWk4WFTIzAAAAAElFTkSuQmCC);float:left;vertical-align:top;}.ui1,.ui2,.ui3,.ui4,.ui5,.ui6{display:inline-block;height:24px!important;line-height:24px!important;padding:0px 4px;margin:-2px 0px -2px;}kbd{display:inline-block;font-weight:700;border:1px solid #888;height:24px!important;padding:0px 4px;margin:-2px 0px -2px;border-radius:4px;background-image:linear-gradient(#ddd 0%,#eee 10%,#bbb 10%,#ccc 30%,#fff 85%,#eee 85%,#888 100%);}.mouseleft,.mouseright,.mousewheel{display:inline-block;min-width:16px;height:24px!important;padding:0px;margin:-2px 0px 0px 0px;vertical-align:middle;}.mouseleft::before{content:url(data:type/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAMAAADEfo0+AAAAe1BMVEUAAACoqKj9/f2zs7O1tbWRkZGlpaWsrKybm5u2traNjY2Wlpanp6empqaYmJiPj4+3t7f5+fmjo6P19fXu7u6ZmZnx8fHi4uLm5ube3t7q6uqwsLC0tLS7u7u4uLi/v7/W1tbDw8PLy8vPz8/T09Pa2trHx8eIiIhERkShhqFGAAAAAXRSTlMAQObYZgAAAI5JREFUGNNV0EcCwjAMRFEB6R2DKSGQUBLp/idEjsG23m7+cgAMIsJWwR8Z235pumDTnkUbv+lg7CIfTqvSbTquxsGFfjWXLlwsdOFs+XC1EHAWOEwCh4/A4S1weAkcFoHDU0CI8zGQx1Cpe0BVAO0j0PIfiR4cnZjLdHP7abQ9VRVZnaZ1VvjfO42o7edfH3EoHZS6XE4AAAAASUVORK5CYII=);}.mouseright::before{content:url(data:type/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAMAAADEfo0+AAAAe1BMVEUAAACoqKj9/f2zs7O1tbWRkZGlpaWsrKybm5u2traNjY2Wlpanp6empqaYmJiPj4+3t7f5+fmjo6P19fXu7u6ZmZnx8fHi4uLm5ube3t7q6uqwsLC0tLS7u7u4uLi/v7/W1tbDw8PLy8vPz8/T09Pa2trHx8eIiIhERkShhqFGAAAAAXRSTlMAQObYZgAAAI9JREFUGNNV0NkWgjAMRdGozFOxWgdEcYLk/7/Q0EpL9tNd5/ECzLRCIoJF20zdlsinTbRn5Eu0O8zIl/Jk+dAPR4uWUo6d5QNenBDOTghXJ4RRQMCnwOErcPgIHN4Ch0ng8BIQ4nxYyWOo9H1FVwDqsaL4j8T0nknmy0xz+2uMO1UXWZ2mdVbo8LtBNK2dP/2+KB2shyfVAAAAAElFTkSuQmCC);}.mousewheel::before{content:url(data:type/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAMAAADEfo0+AAAAe1BMVEUAAACzs7OoqKisrKyRkZGlpaX9/f22trabm5uNjY2mpqanp6ePj4+1tbWYmJi3t7eWlpajo6OZmZmwsLD5+fnu7u7x8fHi4uLW1tbm5ube3t7T09Pq6ur19fW4uLi7u7u0tLTa2trPz8+/v7/Dw8PLy8vHx8eIiIhERkS4354xAAAAAXRSTlMAQObYZgAAAKdJREFUGNNV0NkagiAUhdHjPAECzWWlWdL7P2Fno/nJumHzXx4iMMI5YeivVVOX592k2vkfy/1CxvjL6L6KJAd9ZF+GVxP144Eh4B170kPHEPAOmtwFEPxw5E6A4AeHKyD4wWEABD84nAHBDw43QPCDwyvA4RPgMAU4vAOO0mLcKFJqzHPDNETisSH4HpntVzbDyazaLZSdj2qqsk6Suqw2d7fO2fnmP7kAJW9a/HbiAAAAAElFTkSuQmCC);}footer{width:100%;padding:0 3.236em;}footer p{opacity:0.6;}footer small{opacity:0.5;}footer a{text-decoration:none;color:inherit;}footer a:hover{text-decoration:underline;}dl{margin:0 0 24px 0;padding:0px;}dt{font-weight:700;margin-bottom:12px;}dd{margin:0 0 12px 24px;}.table table{margin:0px;border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid;width:100%;}th{font-weight:700;padding:8px 16px;overflow:visible;vertical-align:middle;white-space:nowrap;border:1px solid;}th.wide{width:100%;}td{padding:8px 16px;overflow:visible;vertical-align:middle;font-size:90%;border:1px solid;}td.right{text-align:right;}table.grid{margin:0px;padding:0px;border:none!important;background:none!important;border-spacing:0;border:0px!important;empty-cells:show;width:100%;}table.grid tr, table.grid td{margin:0px;padding:0px;overflow:hidden;vertical-align:top;background:none!important;border:0px!important;font-size:90%;}div.frame{position:absolute;width:100%;min-height:100%;margin:0px;padding:0px;max-width:1100px;top:0px;left:0px;}#_m{margin-left:300px;min-height:100%;}div.title{display:block;width:300px;padding-top:.809em;padding-bottom:.809em;margin-bottom:.809em;text-align:center;font-weight:700;}div.title>a{padding:4px 6px;margin-bottom:.809em;font-size:150%;}div.title>a:hover{background:transparent;}div.title>a>img{max-width:280px;border:0px;padding:0px;margin:0px;}div.title input{display:none;width:270px;border-radius:50px;padding:6px 12px;font-size:80%;box-shadow:inset 0 1px 3px #ddd;transition:border .3s linear;}div.title input:required:invalid{background:#fcfcfc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAASFBMVEUAAAC6urq7u7y7vLy8vL3Dw8TLzM67urq8vL29vr69vr/AwMK5ubm5ubm4uLi5t7fAwMC/vr/FxMXBwsPExcW+u7vDw8S4uLiryZHFAAAAF3RSTlMA9vGttk4lfbWnpJQG0MpzYEIglFRCGzMa+EsAAAB0SURBVBjTbY5bCsMwDAQl2U6cR5s0fcz9b1oLpWBC52dhENqVRsmG5SIn60wwryEm0LQkbUacAveh5XGDh4uKfsQZlOqpJAkS5gHPUyzgYdeLjB6/H7lvGbzlssP2WDoRGGzxrVRD82sHRukZ/xhv7tns/QXrhgcaFdOKBwAAAABJRU5ErkJggg==) no-repeat 10px 50%;}div.title input:focus{background:#fcfcfc!important;}div.version{margin-top:.4045em;margin-bottom:.809em;font-size:90%;}nav.side {display:block;position:fixed;top:0;bottom:0;left:0;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;font-weight:400;}nav.mobile {display:none;font-weight:bold;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1;}nav a{color:inherit;text-decoration:none;display:block;}nav.side>div{position:relative;overflow-x:hidden;overflow-y:scroll;width:320px;height:100%;padding-bottom:64px;}div.nav p{height:32px;line-height:32px;padding:0 1.618em;margin:12px 0px 0px 0px;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap;-webkit-font-smoothing:antialiased}div.nav li>.current,div.nav li>ul{display:none;}div.nav li>a,div.nav li>label{display:block;}div.nav a,div.nav ul>li>label,div.nav ul>li>.current{width:300px;line-height:18px;padding:0.4045em 1.618em;}div.nav a,div.nav ul>li>label{cursor:pointer;}div.nav .current{font-weight:700;border-top:1px solid;border-bottom:1px solid #c9c9c9;}div.nav ul>li>ul>li>a{border-right:solid 1px #c9c9c9;font-size:90%;}div.nav ul>li>ul>li.h2>a{padding:0.4045em 2.427em;}div.nav ul>li>ul>li.h3>a{padding:.4045em 1.618em .4045em 4.045em;}div.nav ul>li>ul>li.h4>a{padding:.4045em 1.618em .4045em 5.663em;}div.nav ul>li>ul>li.h5>a{padding:.4045em 1.618em .4045em 7.281em;}div.nav ul>li>ul>li.h6>a{padding:.4045em 1.618em .4045em 8.899em;}div.nav ul,div.nav li,.breadcrumbs{margin:0px!important;padding:0px;list-style:none;}ul.breadcrumbs,.breadcrumbs li{display:inline-block;}.home{display:inline-block;max-width:16px;max-height:16px;line-height:16px;margin:0 5px 0 0;cursor:pointer;}.home::before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAS1BMVEUAAAD8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyxWsjVAAAAGHRSTlMAx6oLLRnYiXFEvPbey518NQbsj11QKhQ+J0ktAAAAbElEQVQY053ISQ7DMAwEwRYpavHurPz/SwMoMpD46L4MpvBTB0zTP+R9z55Ebh0yQL5DaDA+0WVR3h3Gikp9iPKF9MIkQhSDwUlGHCLQxhLGJkpLZcNYS/tdyorP/DQ7HgBqKRUgHBDcw2X4AFsJCSXB/5UVAAAAAElFTkSuQmCC);}h1>a,h2>a,h3>a,h4>a,h5>a,h6>a{display:none;max-width:16px;max-height:24px;margin:-8px 0 0 5px;vertical-align:middle;}h1:hover>a,h2:hover>a,h3:hover>a,h4:hover>a,h5:hover>a,h6:hover>a{display:inline-block;text-decoration:none!important;}h1>a::before,h2>a::before,h3>a::before,h4>a::before,h5>a::before,h6>a::before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAiBAMAAACkb0T0AAAAMFBMVEUAAAD8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PzS+N+gAAAAD3RSTlMABab5cVY73o4k2cJTPb1Q83MyAAAAh0lEQVQY02P4DwWkM7YxsNiDGJ8EGBgmgxiKDDkCLAwgAQn7hQxARiGj8v8/IIYDi2a9GZChHiAnMLmBjeGTaIBUAMcFaYaNvA2sC1kD9RkSOCwZF7IW/WdgSP4+yYHlP5Bx/r+RgDiIIfW5kVEfyHBgPMYgBLLdkoEBKABkfHZgyIa7h04MAOVty/RC/PhoAAAAAElFTkSuQmCC);}h1>a:hover::after,h2>a:hover::after,h3>a:hover::after,h4>a:hover::after,h5>a:hover::after,h6>a:hover::after{content:"Ir a";display:block;padding:12px;position:absolute;margin:-8px 8px;font-weight:400;font-size:14px;background:rgba(0,0,0,.8);color:#fff;border-radius:4px;}input[type=radio]{display:none;}input[type=radio]:checked ~ ul{display:block;}.fig{margin-top:-12px;padding-bottom:12px;display:block;text-align:center;font-style:italic;}div.page{width:100%;padding:1.618em 3.236em;margin:auto;line-height:24px;}div.page ol{margin:0 0 24px 12px;padding-left:0px;}div.page ul{margin:0 0 24px 24px;list-style:disc outside;padding-left:0px;}div.page ol{list-style-type:none;counter-reset:list;}div.page ol li:before{counter-increment:list;content:counters(list,".") ". ";}div.pre{overflow-x:auto;margin:1px 0px 24px;}div.table{overflow-x:auto;margin:0px 0px 24px;}div.info,div.hint,div.warn{padding:12px;line-height:24px;margin-bottom:24px;}div.info>p,div.hint>p,div.warn>p{margin:0px;}div.info>p:first-child,div.hint>p:first-child,div.warn>p:first-child{display:block;font-weight:700;padding:2px 8px 2px;margin:-12px -12px 8px -12px;vertical-align:middle;}div.info>p:first-child>span,div.hint>p:first-child>span,div.warn>p:first-child>span{display:block;max-height:20px;margin:0px;vertical-align:middle;}div.info>p:first-child>span::before,div.hint>p:first-child>span::before,div.warn>p:first-child>span::before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAApUlEQVQ4y82TwQnDMAxFpVJyLPiSbbJETr13Fo+RZZxLRghkgnSEEni9ONS0sg1tDv3wwfjbX7Iki/wVAAd4IPBCiHuudrkHVvJYgb50eaOO7cMkpv0eeQGukYuRiUsNvBFpSvTJ0P2un0Sk+6Le3WEG58yBFrjt61r7Qqbij0gLIX3CaPgOqtqoaiMig6GPtTbOwCVyLraxMEj3yPIgHTLKv3ymJySzt16bW/sWAAAAAElFTkSuQmCC);}p>div:last-child,dd>*:last-child,td>*:last-child,li>ol,li>ul{margin-bottom:0px!important;}img{border:0px;}img.imgt{display:inline-block;max-height:22px!important;padding:0px;margin:-4px 0px 0px 0px;vertical-align:middle;}img.imgl{float:left;margin:0px 12px 12px 0px;}img.imgr{float:right;margin:0px 0px 12px 12px;}div.imgc{text-align:center;padding:0px;margin:0 0 12px 0;clear:both;}img.imgc{max-width:100%;}img.imgw{width:100%;margin-bottom:12px;clear:both;}.btn{border-radius:2px;line-height:normal;white-space:nowrap;color:inherit;text-align:center;cursor:pointer;font-size:100%;padding:4px 12px 8px;border:1px solid rgba(0,0,0,.1);text-decoration:none;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);vertical-align:middle;*zoom:1;user-select:none;transition:all .1s linear}.prev{float:left;}.prev::before{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAANlBMVEUAAABAQEBAQEBAQEBAQEBAQEBAQEBBQUFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAWW5SEAAAAEnRSTlMA/fC9r2kXAjMN34F3ZlUu6B40Y5wGAAAAVElEQVQY08XPSw6AIAwEUIbS8lFE739Zq6luGtbM8iXTTMOCZGECiCX/MhIQTyCNz+SRrUc1MWKVvR5KYCN6pUFDRtqq4Sql9IYJ+aI/70f4qdOHblOhAuUcC5KnAAAAAElFTkSuQmCC);}.next{float:right;}.next::after{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASBAMAAACk4JNkAAAAJFBMVEUAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEC4lvDfAAAAC3RSTlMAx711ZjlFPh3zLASjkrYAAABDSURBVAjXY6AUsGhvcgAzOKR3797YAGIx7t5mvVsAxPLevZ159xYQS3v3zgLrTSDW7tTQBcy7ESyELEIHwhSEyQjbAAH1HsMY8tCHAAAAAElFTkSuQmCC);}@media screen and (max-width:991.98px){nav.mobile{display:block;}nav.side{display:none;}#_m{margin-left:0px;}}#_introduccion:checked ~ nav div ul li[rel=introduccion]>.toc,#_instalacion:checked ~ nav div ul li[rel=instalacion]>.toc,#_comenzando:checked ~ nav div ul li[rel=comenzando]>.toc,#_modos_y_buferes:checked ~ nav div ul li[rel=modos_y_buferes]>.toc,#_secciones:checked ~ nav div ul li[rel=secciones]>.toc,#_comandos_transitorios:checked ~ nav div ul li[rel=comandos_transitorios]>.toc,#_argumentos_transitorios_y_variables_buffer:checked ~ nav div ul li[rel=argumentos_transitorios_y_variables_buffer]>.toc,#_finalizacion_confirmacion_y_seleccion:checked ~ nav div ul li[rel=finalizacion_confirmacion_y_seleccion]>.toc,#_el_minibuffer:checked ~ nav div ul li[rel=el_minibuffer]>.toc,#_soporte_para_el_raton:checked ~ nav div ul li[rel=soporte_para_el_raton]>.toc,#_ejecucion_de_git:checked ~ nav div ul li[rel=ejecucion_de_git]>.toc,#_inspeccion:checked ~ nav div ul li[rel=inspeccion]>.toc,#_manipulacion:checked ~ nav div ul li[rel=manipulacion]>.toc,#_transferencia:checked ~ nav div ul li[rel=transferencia]>.toc,#_otros:checked ~ nav div ul li[rel=otros]>.toc,#_personalizacion:checked ~ nav div ul li[rel=personalizacion]>.toc,#_plumbing:checked ~ nav div ul li[rel=plumbing]>.toc,#_apendice_y_preguntas_frecuentes:checked ~ nav div ul li[rel=apendice_y_preguntas_frecuentes]>.toc,div.page{display:none;}#_introduccion:checked ~ nav div ul li[rel=introduccion]>ul,#_introduccion:checked ~ nav div ul li[rel=introduccion]>.current,#_introduccion:checked ~ div div[rel=introduccion],#_instalacion:checked ~ nav div ul li[rel=instalacion]>ul,#_instalacion:checked ~ nav div ul li[rel=instalacion]>.current,#_instalacion:checked ~ div div[rel=instalacion],#_comenzando:checked ~ nav div ul li[rel=comenzando]>ul,#_comenzando:checked ~ nav div ul li[rel=comenzando]>.current,#_comenzando:checked ~ div div[rel=comenzando],#_modos_y_buferes:checked ~ nav div ul li[rel=modos_y_buferes]>ul,#_modos_y_buferes:checked ~ nav div ul li[rel=modos_y_buferes]>.current,#_modos_y_buferes:checked ~ div div[rel=modos_y_buferes],#_secciones:checked ~ nav div ul li[rel=secciones]>ul,#_secciones:checked ~ nav div ul li[rel=secciones]>.current,#_secciones:checked ~ div div[rel=secciones],#_comandos_transitorios:checked ~ nav div ul li[rel=comandos_transitorios]>ul,#_comandos_transitorios:checked ~ nav div ul li[rel=comandos_transitorios]>.current,#_comandos_transitorios:checked ~ div div[rel=comandos_transitorios],#_argumentos_transitorios_y_variables_buffer:checked ~ nav div ul li[rel=argumentos_transitorios_y_variables_buffer]>ul,#_argumentos_transitorios_y_variables_buffer:checked ~ nav div ul li[rel=argumentos_transitorios_y_variables_buffer]>.current,#_argumentos_transitorios_y_variables_buffer:checked ~ div div[rel=argumentos_transitorios_y_variables_buffer],#_finalizacion_confirmacion_y_seleccion:checked ~ nav div ul li[rel=finalizacion_confirmacion_y_seleccion]>ul,#_finalizacion_confirmacion_y_seleccion:checked ~ nav div ul li[rel=finalizacion_confirmacion_y_seleccion]>.current,#_finalizacion_confirmacion_y_seleccion:checked ~ div div[rel=finalizacion_confirmacion_y_seleccion],#_el_minibuffer:checked ~ nav div ul li[rel=el_minibuffer]>ul,#_el_minibuffer:checked ~ nav div ul li[rel=el_minibuffer]>.current,#_el_minibuffer:checked ~ div div[rel=el_minibuffer],#_soporte_para_el_raton:checked ~ nav div ul li[rel=soporte_para_el_raton]>ul,#_soporte_para_el_raton:checked ~ nav div ul li[rel=soporte_para_el_raton]>.current,#_soporte_para_el_raton:checked ~ div div[rel=soporte_para_el_raton],#_ejecucion_de_git:checked ~ nav div ul li[rel=ejecucion_de_git]>ul,#_ejecucion_de_git:checked ~ nav div ul li[rel=ejecucion_de_git]>.current,#_ejecucion_de_git:checked ~ div div[rel=ejecucion_de_git],#_inspeccion:checked ~ nav div ul li[rel=inspeccion]>ul,#_inspeccion:checked ~ nav div ul li[rel=inspeccion]>.current,#_inspeccion:checked ~ div div[rel=inspeccion],#_manipulacion:checked ~ nav div ul li[rel=manipulacion]>ul,#_manipulacion:checked ~ nav div ul li[rel=manipulacion]>.current,#_manipulacion:checked ~ div div[rel=manipulacion],#_transferencia:checked ~ nav div ul li[rel=transferencia]>ul,#_transferencia:checked ~ nav div ul li[rel=transferencia]>.current,#_transferencia:checked ~ div div[rel=transferencia],#_otros:checked ~ nav div ul li[rel=otros]>ul,#_otros:checked ~ nav div ul li[rel=otros]>.current,#_otros:checked ~ div div[rel=otros],#_personalizacion:checked ~ nav div ul li[rel=personalizacion]>ul,#_personalizacion:checked ~ nav div ul li[rel=personalizacion]>.current,#_personalizacion:checked ~ div div[rel=personalizacion],#_plumbing:checked ~ nav div ul li[rel=plumbing]>ul,#_plumbing:checked ~ nav div ul li[rel=plumbing]>.current,#_plumbing:checked ~ div div[rel=plumbing],#_apendice_y_preguntas_frecuentes:checked ~ nav div ul li[rel=apendice_y_preguntas_frecuentes]>ul,#_apendice_y_preguntas_frecuentes:checked ~ nav div ul li[rel=apendice_y_preguntas_frecuentes]>.current,#_apendice_y_preguntas_frecuentes:checked ~ div div[rel=apendice_y_preguntas_frecuentes],#_:checked ~ div div[rel=_]{display:block;}</style>
<style rel="theme">hr,table,th,td{border-color:#e1e4e5;}th{background:#d6d6d6;}tr:nth-child(odd){background:#f3f6f6;}a{text-decoration:none;color:#2980B9;}samp{background:rgba(0,0,0,.05);color:#408040;font-size:14.7px}.content{background:#fcfcfc;color:#404040;font-family:Lato,Helvetica,Neue,Arial,Deja Vu,sans-serif;}.title,.home,h1>a,h2>a,h3>a,h4>a,h5>a,h6>a{background:#2980B9;color:#fcfcfc;}.version{color:rgba(255,255,255,0.3);}.search{border:1px solid #2472a4;background:#fcfcfc;}.nav{background:#343131;color:#d9d9d9;}.nav p{color:#55a5d9;}.nav label:hover,.nav a:hover{background:#4e4a4a;}.nav .current{background:#fcfcfc;color:#404040;}.nav li>ul>li{background:#e3e3e3;}.nav li>ul>li>a{color:#404040;}.nav li>ul>li>a:hover{background:#d6d6d6;}.pre {border:1px solid #e1e4e5;background:#f8f8f8;}.info{background:#e7f2fa;}.info>p:first-child{background:#6ab0de;color:#fff;}.hint{background:#dbfaf4;}.hint>p:first-child{background:#1abc9c;color:#fff;}.warn{background:#ffedcc;}.warn>p:first-child{background:#f0b37e;color:#fff;}.btn{background:#f3f6f6;}.btn:hover{background:#e5ebeb;}.ui1{font-family:Serif;font-size:12px;border:1px solid #555;border-radius:3px;background-image:linear-gradient(#fff 0%,#fff 1%,#f2f2f2 1%,#ebebeb 50%,#ddd 50%,#cfcfcf 99%,#fff 99%,#fff 100%);}.hl_h{background-color:#ccffcc;}.hl_c{color:#808080;font-style:italic;}.hl_p{color:#1f7199;}.hl_o{color:#404040;}.hl_n{color:#0164eb;}.hl_s{color:#986801;}.hl_t{color:#60A050;}.hl_k{color:#a626a4;}.hl_f{color:#2a9292;}.hl_v{color:#e95649;}</style>
</head>
<body>
<div class="frame content">
<input type="radio" name="page" id="_" checked><input type="radio" name="page" id="_introduccion"><input type="radio" name="page" id="_instalacion"><input type="radio" name="page" id="_comenzando"><input type="radio" name="page" id="_modos_y_buferes"><input type="radio" name="page" id="_secciones"><input type="radio" name="page" id="_comandos_transitorios"><input type="radio" name="page" id="_argumentos_transitorios_y_variables_buffer"><input type="radio" name="page" id="_finalizacion_confirmacion_y_seleccion"><input type="radio" name="page" id="_el_minibuffer"><input type="radio" name="page" id="_soporte_para_el_raton"><input type="radio" name="page" id="_ejecucion_de_git"><input type="radio" name="page" id="_inspeccion"><input type="radio" name="page" id="_manipulacion"><input type="radio" name="page" id="_transferencia"><input type="radio" name="page" id="_otros"><input type="radio" name="page" id="_personalizacion"><input type="radio" name="page" id="_plumbing"><input type="radio" name="page" id="_apendice_y_preguntas_frecuentes">
<nav class="side nav"><div>
<div class="title"><a href="./16_magit.html"><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAABJCAYAAACaRLDfAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAEC5JREFUeJztnHl01FWWxz/3V5Wq7ASBBIEALkEUWgFDWMWFINqNmgIXRDyNytA6+ofO9EyrSM+cabS12+7TPd3O8bTLabtdGm391YgCotAIOBECJCgwQilGlgSSQAKBbFW/350/fkllq0qKrMyZ+Z5T56Teu++++755y33v3VeSl5fH+QCzZtssDLkXYQLgRuUgYr9HWenbvsy8YH/bJ/1NlFnv96LDfo9wP4gRQWQb9XULfKnXHO1z41ogkmF9BrPKHw/D/4rI0igkAUzBG7/RrC8Y0afGtUG/EWXG+T0kDP8zMC8G8THABtPaPrKXzYqKfiHKrPd7OTPsL8Dt4cQ5d8KV0zsqNoaQbDTrPh/dy+ZFRJ8TZVb549Fhq0B84cSbF8Ot98OiR2HKjR0VvwRxbTBr8i/qdUPboE+JMo/vSCBh2DuI3NYqo3AzHNgNuz6FwO7O1FyMy7XRrN1xaa8ZGgF9tuqZx3ckMMB+D5GbIgqMGgs1p6G8JFaVhwg15PqSZgR6zMgO0Cc9yqzJTyLN9kclCeC7r6KTlJEJwy9xPvGJTakjcXs2mDXbx/a4wRHQ60SZNflJGC4/SIeTDwAiMG8JXHNL6/TblsIP/9n5jMxqmZOJSz4xz2y7vCdtjmhabw49s3xrCqleP3BDTAUSkmDJE1C0BbyJsMmMtaoSbOtGX8LUvV21tTP0Wo8y6zenkupdTSwkjb3a6U21Z8H/svO9rgZuWBBrdcMwjE/Muh1XdsfmjtArRJn1m1PR+A+BazsUFIELR8Fjz8Pwi8FwQWkxrHsTxk+Bs6dh9h0x1ipDwf7YrC24qpvmR0SPE2VWbUqD+DWIzOxU2O2BB1bABRlw35OQPMBJLy2GdW/AxFmw4EFn3ooFIukYut6s3T6pq/ZHg2vs2J5bNMyKvw0kKXktSIcudhi2BZvfhzET4OcPQt3Z5rzTlVDyHdy0CGbdCmdOw/7CGJRKEiILFjYc2bgqbkRp11rSHj1GlFldMIgEz1qEKZ0Kz1sC//TvkJkFBRtgy2pQG37yAix5HKqroPgrqK6EbZ/A1Bth1i3OHPbVzljMSURkwcLg4U2r4kb0yKlDjww9s2r7YDy6DiEnpgKpA505ac6dkJTipA0dCTPnOelNQxCcYfjEXVB2FJY+BfMfjM0oYRCGa61ZXzD1nBoTBd0myqzalEa8rAfJPqeCFaUQ54EZP3C+594J9bXOBN4Wxw/BE3dC6SF4YDnc8UistVwArDVrtl19TrZFQLeH3kKj7Pcg3+9QaMhwmHMXzF8GicmQmALuOGfeGZkFG9+DR38Fn38Eg4fBvh1gWfDwM5A22PHYK0og/yPIyYVr5oFtw55tsZgYj8i1C8+Uv7wqfmioq+3sVo8yT28ZjsriDoVuWAAvb4Ef/StMv9mZZwBU4aO34IrJMHcRDBkGH7zWXK7uLEyaBQ/+G7z6XzD3big/6gzDIwfh3h/Don8ApHNDhcuIb/B1Lhgd3Rt6Xu9MwNuhTPpwp/cANNTByTJn2J2tdla8YD383U9h73b4dp/jaFZXOj2viVSPB0Y37lIqSmD5Qjj8NdzzGCz+x9hsFa7vWiMbi3dnC2PWFzwE/EengldfB7l3wPipcMEQOH7UOU45fhiSUpu9civkbIAvGQ8XjoST5Q6Bm/ywbb3TC5swMB2e+QuMGgOrfgd/+kXr/HZQv8+b0+Ve5e5qQadu+3j0o+4W2LnJ+bjccP18qCyDlIGQkub4Sx6v09vq6+DgPtjwLiSnwqf/6ZAXCZVl8ORCWPkm3PmIc+T+2rMdkCXHuthKoLtE2fZWXEYNkNipLDiNvmWJQ87Z03A4ABXHINQAngQYPNSZl743DXZvhY3vdqyvsgyevAuefgvufBjcbnhlZRSy9KNzbV5LdIsoX+K0MrO+4A/AozEXSkh2JuTffOA4kdGQmBKbvlMnYPndsPIN8C2Dulp4/fnWMqq7KC/5kMyYrWyH7jucVfIk8GlMsmI4/3XbAm9Cx7IJybHbcOoEPHk3fJEPhw60zT2CZSzs7iVqt4nyZWTXQu2toJs7FXY3dmDb6lxxrD2qCdWVjlO6+f3mNOUwqrm+pOxuHxf3yBbG5511mtrgD4CNHQo2uQmW3bnShCQwumXed6jc4IvP2d8dJU3osWMWX9qMM9Q23AZsiCrk9jgedSw9Kj6x60SpFkNwti8h++uuKWiPHj2P8qXNOIMVug2NssIkpjQ7kdKJRx2fAOLqihnfYFs3+LzTv+lK4Wjo8YM7X+K0s5wyfKiua5eZmOxsTUTAE9+xIpe78wm/Pb5B7Nm+xGnfnmvBztArR8G+jOxaThnzgQ9aZVSUQigEU+d2PqwONm5nYoVqMVZojs8z5btzt7hz9O4tTFVRPPENqxC5NZyYkAzX58Gka2HkGMdDb/LMq07Ad/udw7ytHzieeixQ/RaXleuLm3awl5rS+zfFjfFPbyESeZ9luJzeFesk3x7foFauL35qcXfs7Ay9fgHq8+bVIyV3A3+NKGBbEAp2laQAYs/ubZKgj67Ufd68esqOLkJ5uwfVHsDS2b01J7VFn0Wz+DLzgpQfXQz6Zg+o+29gti8x53AP6IoJfRr248vMC1JWsgTlz11WorqXUH2uzzv5SA+a1in6PJDMl5kXpO7o/ai+1rl0O3xJXTDXlzQz5tignkK/hCb60vJC1JUsRfSVmAspu2kIzvGlzejWAVxX0W/Brr60vBBrSpaBvhSDeCFxmutLmX681w2Lgn4Nn/bl5dkklzwEPI3S/rxIUZQ1NDDH58qp6HsLm9HvAflNMGu2j8Ul9wITUeIQDaDyri9+cvTTiD7EeUPU+Y5+HXr/m/D/RMWI7l1XdRFmwO9hxIiRhBqqI61kZv3mVOzEdCqOfHc+vKyC/upRI4deiqEB4uJ+CWCe3jbKrCt41wzmXwyAeh/G0L2kDU/tF/sioF96VEuYNflJeNw/Q5iP5S407e0fIpKD6kZfSs4J8+y2bFzMQRCQHawt+diXl9fR3XmvoN+JwjAeR7gXAOFnYKRg2/mIbDEbCsbgNrYCB1AqEJ0PfAL83yPKFz9lhVm3fSgiS7HsbF/ilHDsoVn7eQ6GywNaiqHLOV6625eXF8NdV8/j/Fr1RFr3lI+OFSD2cpDJqGwjY/irpt8fQ0BUz+P8Isqlhlnlb+7ltwwbxHH5LafrR4F8iLKYuYOH9odp5wdRIs7TDNtYR/yI5eF0S24nXY6Q6vkUmAW6l4qKVns+v9/vKjpQ/mJhoPybokDZrsIDx27uDRMjzlF79uzxhrwZLwKtLtZC2E9lZ2W0un3dtr9slNeQ59rqKN772aK8qPNJwxEk4S4k5BzjJh/9HWeGfQMyCIvPwmKn6t9ggPcISjpqV1IX+ritXzV8XM54YJmAgCDiWgGsjaHtFO49drl4XP/S9N1WKieNGfJQJNmIRNUMGODy1LEAaBUp4bKNncAvW6Z5DJ0Hcld7LXfcQ4QDAWiMVaD5/NwXzLPwsrqd3JCZ1bS8G4xwZ+q2vWVqWLWCNMZoaXHL/KKi4jQSk15TUUNh9aSs9D80FyYBCNsuolFvl89p1RPRebQhStSYF0u8aW9h4mWDSncFTkwG6zpUTgWr6ls/yUpKug+4VRBEtdW9n4VWux1Xw2mBcipaPefmHghTC74qGTR57LATAJv3lKamet0zOivmDwQ8ozRltohxrSJZoANQUdBDtsGqqy9NX9+2TFGgbIKq3CPCeEXjQE4DJQINTTJBS1501VDuSrYfUBFBwDPQGwf8EWD71yczPdAyKP2aokD5rwEs0Rfchl3dkicRiRDk7iBGovQ4SAaIx+3yzAXeBEiON2ah4eF5DIi4Io0m7VmEx2g2qfEPwbB1SVGg7PkJWek/aZIvDJT9vSC/ESHOkYrcZV3CGncKdbbyKI0LkyLvAX8sChy/KU7ldUQGhQuITAQmArgw3m+otLd70tAWFUQlKrZVT8lv/mKHf6fA0HAgvqJs6UDBnxQsR5CzwLGmQEsRMVT58e5AxVUA+V+WpYvKr8EhSWGr2vZSlPADIEeHPheyaoui12nMlZYkRUBOTmYNQjiaVpXqqNo6UhSGkq+qNoAguf49e7x+v19QbnYq0JMg+6IVn5CVXiTKCtu25gQr69KL9342QpGVTfkiYtjoNQDxHiYjzbHrivWLiZdlvKLoW2F5MM7iWZlzRWb042HL+q2NLmvTjnfU0ulq6fTTdcFdju3N5HR76CmcQWQXkA0MvigufYp1RcYJhNGNlv8NtTXaKwK/3y8XjZu2wRDjOk9a/IJRA6cniZLVUtxQZ00TQ62WesQWt1NFs60KcaHaahekRbV5wtihxYVfle2hVYiVlk4cm57fMqWRnMaeZ3ePKBHcYK8BIxsQ25B5oBXhBqmuBYkYc1tUVJw2etyMt1U1l8YJV8JzVAScrf2cpKRqGl0TMYyfFgXKslRkcVMRgcLKgztPc2U3wnyb0UyOStRVL3bP3DZaOnHfF+QWAFW1rRBRY7glMXEFMAcJh9gVqa1PCRrxxcOECaOrbPR+VJsaMAHkOXFeSoFyTNX+UV5PHbVY8qiityt6e0jsd6KJxUxUsVG1C2dlA9XLUZ0OICJfZl+REfXxoIpcE/4bQgZy28TL0p9Wu4PJX7QOEQtQVT4BVgOvKfYjIbHHTRyTEctT0EiKw3Ofv2lzXef+XGw5KkHd23bX0RIxE5WXldWg6gSyiogh0vi2w44QgtgSSngbI6jLEvvewgPl92DIM9GKiBovAgOdLxJQeF9hq6jUGML07fsOD47FZnFR2ybp7qIDZa8WBcrXjB43beGOHccTSGrYhUE+cca+wkD5imi6zmlTrEQgxWV0SJQKLeLPRURlpQivK2RCu4Y4UsoX4QLoQwIvCbyEyKuGGqs9cfEHCw+U39OZvaFTuh8ob1ZMKiL3ATerGIkyQMaDXB7OVY16d3dORNW7WU+LDZyiJ0NVVoevCy3sZ0ELWqYpnBHVZYr+qq283384zkbXgTa0zWuBFBF9oaioqsOI2ezsjFpVHlO0VTCoQkhtqqW6+mtVwi6GIAXttTiIuOqV7NxZN+ryqdfZhuECcNdahwCmXZxetjtQMTmE7XEUu85mZw+qBbAseQm3rmnSkZcXtACyszJO+gOBmaNl4HTUHm1jnKivs7dN+156Wf7Bg0keK/l9AJcEDwOMGud9U5DbGxu0D9iIoKLqBpkBNP4IhKSKNzjqIFXfZhppU1AVp4xWtmzLxDFD3ijcf2IjhKYgMlBETjRIQ2FO1vDDMIQvAhVXh7BvAk56GspWw5CIRJ1XN8W7vy7NsNV9VHC8Hwkx9qrLh4RfHuzaXz7HMFgPoGAFg3VDO3Q6exD9fmbeEkE1gm4I0UiU7ea9wkD5h4LaqIwVg9wmWVH9oK9Igh7+gYjuYtig5NpjJ2oSQWciIgJDBGaAzEQYK+BBVRVZqy7jhxdekBhjfHX3cV4RBTB0UNKGkorazxCCAvWgVUApyBeqmCrG44f2ffbc9dMnRVwxewv/A2HI9F49w43gAAAAAElFTkSuQmCC"> magit</a><div class="version">Traducción: Revisión 0.98</div><input id="_q" class="search" type="text" required="required" onkeyup="s(this.value);"></div> <div id="_s" class="nav"></div>
<div id="_t" class="nav">
<p>Conceptos Básicos</p>
<ul>
<li rel="introduccion"><label class="toc" for="_introduccion">Introducción</label><div class="current">Introducción</div><ul>
</ul></li>
<li rel="instalacion"><label class="toc" for="_instalacion">Instalación</label><div class="current">Instalación</div><ul>
<li class="h2"><a href="#instalacion_desde_melpa">Instalación desde Melpa</a></li>
<li class="h2"><a href="#instalando_desde_repositorio_git">Instalando desde repositorio Git</a></li>
<li class="h2"><a href="#tareas_posteriores_a_la_instalacion">Tareas Posteriores a la Instalación</a></li>
</ul></li>
</ul>
<p>Importante</p>
<ul>
<li rel="comenzando"><label class="toc" for="_comenzando">Comenzando</label><div class="current">Comenzando</div><ul>
<li class="h2"><a href="#primeros_pasos">Primeros Pasos</a></li>
</ul></li>
</ul>
<p>Concepto de Interface</p>
<ul>
<li rel="modos_y_buferes"><label class="toc" for="_modos_y_buferes">Modos y Búferes</label><div class="current">Modos y Búferes</div><ul>
<li class="h2"><a href="#buferes_de_conmutacion">Búferes de Conmutación</a></li>
<li class="h2"><a href="#nombrar_buferes">Nombrar Búferes</a></li>
<li class="h2"><a href="#cerrar_ventanas">Cerrar Ventanas</a></li>
<li class="h2"><a href="#actualizacion_automatica_de_las_memorias_intermedias_magit">Actualización Automática de las Memorias Intermedias Magit</a></li>
<li class="h2"><a href="#almacenamiento_automatico_de_las_memorias_intermedias_que_visitan_archivos">Almacenamiento Automático de las Memorias Intermedias que Visitan Archivos</a></li>
<li class="h2"><a href="#reversion_automatica_de_las_buferes_que_visitan_archivos">Reversión Automática de las Búferes que Visitan Archivos</a></li>
<li class="h3"><a href="#riesgo_de_reversion_automatica">Riesgo de Reversión Automática</a></li>
</ul></li>
<li rel="secciones"><label class="toc" for="_secciones">Secciones</label><div class="current">Secciones</div><ul>
<li class="h2"><a href="#desplazamiento_por_secciones">Desplazamiento por Secciones</a></li>
<li class="h2"><a href="#visibilidad_de_las_secciones">Visibilidad de las Secciones</a></li>
<li class="h2"><a href="#seccion_ganchos_hooks">Sección Ganchos (Hooks)</a></li>
<li class="h2"><a href="#tipos_y_valores_de_seccion">Tipos y Valores de Sección</a></li>
<li class="h2"><a href="#opciones_de_seccion">Opciones de sección</a></li>
</ul></li>
<li rel="comandos_transitorios"><label class="toc" for="_comandos_transitorios">Comandos Transitorios</label><div class="current">Comandos Transitorios</div><ul>
</ul></li>
<li rel="argumentos_transitorios_y_variables_buffer"><label class="toc" for="_argumentos_transitorios_y_variables_buffer">Argumentos transitorios y variables buffer</label><div class="current">Argumentos transitorios y variables buffer</div><ul>
</ul></li>
<li rel="finalizacion_confirmacion_y_seleccion"><label class="toc" for="_finalizacion_confirmacion_y_seleccion">Finalización, Confirmación y Selección</label><div class="current">Finalización, Confirmación y Selección</div><ul>
<li class="h2"><a href="#confirmacion_de_acciones">Confirmación de acciones</a></li>
<li class="h2"><a href="#finalizacion_y_confirmacion">Finalización y confirmación</a></li>
<li class="h2"><a href="#la_seleccion">La Selección</a></li>
<li class="h2"><a href="#la_region_de_una_parte_interna">La Región de una Parte Interna</a></li>
</ul></li>
<li rel="el_minibuffer"><label class="toc" for="_el_minibuffer">El Minibuffer</label><div class="current">El Minibuffer</div><ul>
<li class="h2"><a href="#soporte_para_marcos_de_autocompletado">Soporte para Marcos de Autocompletado</a></li>
<li class="h2"><a href="#opciones_adicionales_de_autocompletado">Opciones Adicionales de Autocompletado</a></li>
</ul></li>
<li rel="soporte_para_el_raton"><label class="toc" for="_soporte_para_el_raton">Soporte para el Ratón</label><div class="current">Soporte para el Ratón</div><ul>
</ul></li>
<li rel="ejecucion_de_git"><label class="toc" for="_ejecucion_de_git">Ejecución de Git</label><div class="current">Ejecución de Git</div><ul>
<li class="h2"><a href="#visualizacion_de_la_salida_de_git">Visualización de la salida de Git</a></li>
<li class="h2"><a href="#estado_del_proceso_git">Estado del proceso Git</a></li>
<li class="h2"><a href="#ejecutando_git_manualmente">Ejecutando Git manualmente</a></li>
<li class="h2"><a href="#ejecutable_de_git">Ejecutable de Git</a></li>
<li class="h2"><a href="#argumentos_gobales_de_git">Argumentos Gobales de Git</a></li>
</ul></li>
</ul>
<p>Cap. Inspección</p>
<ul>
<li rel="inspeccion"><label class="toc" for="_inspeccion">Inspección</label><div class="current">Inspección</div><ul>
<li class="h2"><a href="#bufer_de_estado">Búfer de estado</a></li>
<li class="h3"><a href="#secciones_de_estado">Secciones de estado</a></li>
<li class="h3"><a href="#secciones_cabeceras_de_estado">Secciones: Cabeceras de Estado</a></li>
<li class="h3"><a href="#secciones_del_modulo_de_estado">Secciones del módulo de estado</a></li>
<li class="h3"><a href="#opciones_de_estado">Opciones de Estado</a></li>
<li class="h2"><a href="#lista_de_repositorios">Lista de repositorios</a></li>
<li class="h2"><a href="#registros">Registros</a></li>
<li class="h3"><a href="#actualizacion_de_registros">Actualización de Registros</a></li>
<li class="h3"><a href="#bufer_de_registro">Búfer de registro</a></li>
<li class="h3"><a href="#margen_de_registro">Margen de Registro</a></li>
<li class="h3"><a href="#seleccionar_desde_el_registro">Seleccionar desde el registro</a></li>
<li class="h3"><a href="#reflog">Reflog</a></li>
<li class="h3"><a href="#cherries">Cherries</a></li>
<li class="h2"><a href="#difusion">Difusión</a></li>
<li class="h3"><a href="#refrescar_diffs">Refrescar diffs</a></li>
<li class="h3"><a href="#comandos_disponibles_en_los_diffs">Comandos disponibles en los diffs</a></li>
<li class="h3"><a href="#opciones_diff">Opciones Diff</a></li>
<li class="h3"><a href="#bufer_de_revision">Búfer de Revisión</a></li>
<li class="h2"><a href="#ediff">Ediff</a></li>
<li class="h2"><a href="#bufer_de_referencias">Búfer de Referencias</a></li>
<li class="h2"><a href="#bisecting">Bisecting</a></li>
<li class="h2"><a href="#visitar_archivos_y_blobs">Visitar archivos y blobs</a></li>
<li class="h3"><a href="#comandos_de_visita_de_proposito_general">Comandos de Visita de Propósito General</a></li>
<li class="h3"><a href="#visitar_archivos_y_blobs_desde_un_diff">Visitar archivos y Blobs desde un Diff</a></li>
<li class="h2"><a href="#blaming">Blaming</a></li>
</ul></li>
</ul>
<p>Cap. Manipulación</p>
<ul>
<li rel="manipulacion"><label class="toc" for="_manipulacion">Manipulación</label><div class="current">Manipulación</div><ul>
<li class="h2"><a href="#creando_repositorios">Creando Repositorios</a></li>
<li class="h2"><a href="#clonando_un_repositorio">Clonando un Repositorio</a></li>
<li class="h2"><a href="#cambios_preparados_y_no_preparados_tt_staged_tt_tt_unstaged_tt">Cambios Preparados y No Preparados (<tt>staged</tt>/<tt>unstaged</tt>)</a></li>
<li class="h3"><a href="#area_de_preparacion_staging_area_desde_archivo_visitado_en_el_buffer">Área de preparación (staging area) desde archivo visitado en el buffer</a></li>
<li class="h2"><a href="#aplicacion">Aplicación</a></li>
<li class="h2"><a href="#confirmando">Confirmando</a></li>
<li class="h3"><a href="#iniciando_una_confirmacion">Iniciando una Confirmación</a></li>
<li class="h3"><a href="#edicion_de_los_mensajes_de_confirmacion">Edición de los Mensajes de Confirmación</a></li>
<li class="h4"><a href="#uso_de_la_pila_de_revision">Uso de la pila de revisión</a></li>
<li class="h4"><a href="#pseudo_cabeceras_de_la_confirmacion">Pseudo Cabeceras de la Confirmación</a></li>
<li class="h4"><a href="#modo_confirmacion_y_ganchos">Modo Confirmación y Ganchos</a></li>
<li class="h4"><a href="#convenciones_para_mensajes_de_confirmacion">Convenciones para mensajes de confirmación</a></li>
<li class="h2"><a href="#modelo_de_ramificacion_branching">Modelo de Ramificación (Branching)</a></li>
<li class="h3"><a href="#dos_ramas_remotas">Dos ramas remotas</a></li>
<li class="h3"><a href="#comandos_de_rama">Comandos de Rama</a></li>
<li class="h3"><a href="#variables_de_ramas_git">Variables de Ramas Git</a></li>
<li class="h3"><a href="#comandos_auxiliares_de_rama">Comandos auxiliares de rama</a></li>
<li class="h2"><a href="#fusion_merging">Fusión (merging)</a></li>
<li class="h2"><a href="#resolucion_de_conflictos">Resolución de Conflictos</a></li>
<li class="h2"><a href="#reordenamiento_rebase">Reordenamiento (rebase)</a></li>
<li class="h3"><a href="#secuencias_de_edicion_de_reordenamiento">Secuencias de Edición de Reordenamiento</a></li>
<li class="h3"><a href="#informacion_acerca_de_reordenamiento_en_progreso">Información acerca de Reordenamiento en progreso</a></li>
<li class="h2"><a href="#cherry_picking">Cherry Picking</a></li>
<li class="h3"><a href="#revertir">Revertir</a></li>
<li class="h2"><a href="#reinicio">Reinicio</a></li>
<li class="h2"><a href="#stashing">Stashing</a></li>
</ul></li>
<li rel="transferencia"><label class="toc" for="_transferencia">Transferencia</label><div class="current">Transferencia</div><ul>
<li class="h2"><a href="#remotos">Remotos</a></li>
<li class="h3"><a href="#comandos_remotos">Comandos Remotos</a></li>
<li class="h3"><a href="#variables_git_remotas">Variables Git remotas</a></li>
<li class="h2"><a href="#fetching">Fetching</a></li>
<li class="h2"><a href="#pulling">Pulling</a></li>
<li class="h2"><a href="#pushing">Pushing</a></li>
<li class="h2"><a href="#parches_planos">Parches Planos</a></li>
<li class="h2"><a href="#parches_de_maildir">Parches de Maildir</a></li>
</ul></li>
<li rel="otros"><label class="toc" for="_otros">Otros</label><div class="current">Otros</div><ul>
<li class="h2"><a href="#etiquetado">Etiquetado</a></li>
<li class="h2"><a href="#notas">Notas</a></li>
<li class="h2"><a href="#submodulos">Submodulos</a></li>
<li class="h3"><a href="#listado_de_submodulos">Listado de submódulos</a></li>
<li class="h2"><a href="#submodulo_transitorio">Submódulo Transitorio</a></li>
<li class="h2"><a href="#subarbol">Subárbol</a></li>
<li class="h2"><a href="#arbol_de_trabajo">Árbol de Trabajo</a></li>
<li class="h2"><a href="#comprobacion_de_arbol_de_trabajo_dispersa_sparse_checkout">Comprobación de árbol de trabajo dispersa (sparse checkout)</a></li>
<li class="h2"><a href="#bundle_paquete">Bundle (paquete)</a></li>
<li class="h2"><a href="#comandos_comunes">Comandos comunes</a></li>
<li class="h2"><a href="#modos_de_limpieza">Modos de limpieza</a></li>
<li class="h3"><a href="#grafico_de_barrido">Gráfico de barrido</a></li>
<li class="h3"><a href="#modos_de_limpieza_heredados">Modos de limpieza heredados</a></li>
<li class="h2"><a href="#comandos_para_buferes_que_visitan_archivos">Comandos para búferes que visitan archivos</a></li>
<li class="h2"><a href="#modo_menor_para_buferes_que_visitan_blobs">Modo menor para búferes que visitan blobs</a></li>
</ul></li>
<li rel="personalizacion"><label class="toc" for="_personalizacion">Personalización</label><div class="current">Personalización</div><ul>
<li class="h2"><a href="#configuracion_por_repositorio">Configuración por repositorio</a></li>
<li class="h2"><a href="#configuraciones_esenciales">Configuraciones Esenciales</a></li>
<li class="h3"><a href="#seguridad">Seguridad</a></li>
<li class="h3"><a href="#rendimiento">Rendimiento</a></li>
<li class="h4"><a href="#rendimiento_de_los_registros">Rendimiento de los registros</a></li>
<li class="h4"><a href="#rendimiento_de_los_diff">Rendimiento de los Diff</a></li>
<li class="h4"><a href="#rendimiento_del_bufer_de_referencia_refs">Rendimiento del búfer de referencia (Refs)</a></li>
<li class="h4"><a href="#rendimiento_de_las_confirmaciones">Rendimiento de las confirmaciones</a></li>
<li class="h5"><a href="#rendimiento_de_microsoft_window">Rendimiento de Microsoft Window</a></li>
<li class="h5"><a href="#rendimiento_macos">Rendimiento MacOS</a></li>
<li class="h3"><a href="#atajos_de_teclado_globales">Atajos de teclado Globales</a></li>
</ul></li>
<li rel="plumbing"><label class="toc" for="_plumbing">Plumbing</label><div class="current">Plumbing</div><ul>
<li class="h2"><a href="#llamar_a_git">Llamar a Git</a></li>
<li class="h3"><a href="#obtener_un_valor_de_git">Obtener un valor de Git</a></li>
<li class="h3"><a href="#llamar_a_git_para_que_surta_efecto">Llamar a Git para que surta efecto</a></li>
<li class="h2"><a href="#seccion_plumbing">Sección Plumbing</a></li>
<li class="h3"><a href="#creacion_de_secciones">Creación de Secciones</a></li>
<li class="h3"><a href="#seleccion_de_seccion">Selección de Sección</a></li>
<li class="h3"><a href="#secciones_coincidentes">Secciones Coincidentes</a></li>
<li class="h2"><a href="#actualizacion_de_buferes">Actualización de Búferes</a></li>
<li class="h2"><a href="#convenciones">Convenciones</a></li>
<li class="h3"><a href="#tematizacion_de_caras">Tematización de Caras</a></li>
</ul></li>
<li rel="apendice_y_preguntas_frecuentes"><label class="toc" for="_apendice_y_preguntas_frecuentes">Apéndice y Preguntas Frecuentes</label><div class="current">Apéndice y Preguntas Frecuentes</div><ul>
<li class="h2"><a href="#como_hacer">Cómo hacer</a></li>
<li class="h3"><a href="#como_se_pronuncia_magit">Cómo se pronuncia Magit</a></li>
<li class="h3"><a href="#errores_y_problemas">Errores y Problemas</a></li>
<li class="h4"><a href="#magit_esta_lento">Magit está lento</a></li>
<li class="h4"><a href="#he_cambiado_varios_miles_de_archivos_a_la_vez_y_ahora_magit_es_inutilizable">He cambiado varios miles de archivos a la vez y ahora Magit es inutilizable</a></li>
<li class="h4"><a href="#tengo_problemas_para_hacer_confirmaciones">Tengo problemas para hacer confirmaciones</a></li>
</ul></li>
</ul>
</div>
</div></nav>
<div id="_m">
<nav class="mobile title">magit</nav>
<div class="page" rel="_">
<h1>Manual de usuario de Magit</h1>
<p>
Magit es una interfaz para el sistema de control de versiones Git, implementado como un paquete Emacs. Magit aspira a ser una porcelana completa de Git. Aunque no podemos afirmar
(todavía) que Magit envuelva y mejore todos y cada uno de los comandos de Git, es lo suficientemente completo como para permitir incluso a los usuarios experimentados de Git
realizar casi todas sus tareas diarias de control de versiones directamente desde Emacs. Aunque existen muchos buenos clientes Git, sólo Magit y el propio Git merecen ser llamados
porcelanas.
</p>
<p>
Este <a href="https://magit.vc/manual/magit/" target="new">manual</a> es para la versión 3.3.0.50-git de Magit.
</p>
<blockquote class="pre"><span></span>
<p>
Copyright (C) 2015-2023 Jonas Bernoulli <jonas@bernoul.li>
</p>
<p>
Puede redistribuir este documento y/o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la
Licencia, o (a su elección) cualquier versión posterior.
</p>
<p>
Este documento se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO
PARTICULAR. Para más detalles, consulte la Licencia Pública General GNU.
</p>
</blockquote><br style="clear:both;"><label class="btn next" accesskey="n" for="_introduccion" title="Introducción">Siguiente</label></div>
<div class="page" rel="introduccion"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Introducción</li></ul><hr></div>
<h1 id="introduccion">Introducción<a href="#introduccion"></a></h1>
<p>
Magit es una interfaz para el sistema de control de versiones Git, implementada como un paquete de Emacs. Magit aspira a ser una porcelana completa de Git. Aunque no podemos afirmar
(todavía) que Magit envuelva y mejore todos y cada uno de los comandos de Git, es lo suficientemente completo como para permitir incluso a los usuarios experimentados de Git llevar a
cabo casi todas sus tareas diarias de control de versiones directamente desde Emacs. Aunque existen muchos buenos clientes Git, sólo Magit y el propio Git merecen ser llamados
porcelanas.
</p>
<p>
El staging (área de preparación) y la aplicación de cambios es una de las características más importantes en una porcelana Git y aquí Magit eclipsa a cualquier otra cosa, incluyendo al
propio Git. La propia interfaz de puesta en escena de Git (<samp>git add --patch</samp>) es tan engorrosa que muchos usuarios sólo la usan en casos excepcionales. En Magit, poner en
staging un hunk o incluso sólo parte de un hunk<sup>1</sup> es tan trivial como poner en en el área de preparación (staging) todos los cambios realizados en un archivo.
</p>
<p>
La parte más visible de la interfaz de Magit es el buffer de estado, que muestra información sobre el repositorio actual. Su contenido se crea ejecutando varios comandos Git y haciendo
que su salida sea procesable. Entre otras cosas, muestra información sobre la rama actual, enumera los cambios no extraídos ni empujados (unpulled y unpushed) y contiene secciones que
muestran los cambios incorporados o no al área de preparación. Puede sonar ruidoso, pero como las secciones son plegables, no lo es.
</p>
<div class="info"><p><span>Nota</span></p><p>
<sup>1</sup> Un <i>hunk</i> es una parte de un archivo.
</p></div>
<p>
El cambio puede ser un fichero, una parte de él, o cuando la región está activa (es decir, cuando hay una selección) varios ficheros o partes de ficheros, o incluso sólo parte de un
trozo. El cambio o cambios sobre los que actuarían estos comandos -y muchos otros- aparecen resaltados.
</p>
<p>
Magit también implementa otras "variantes de aplicación" además de incluir o no en el area de preparación. Uno puede descartar o revertir un cambio, o aplicarlo al árbol de trabajo. La
propia porcelana de Git sólo soporta esto para la puesta en escena y la desagrupación, y tendría que hacer algo como <samp>git diff ... | ??? | git apply ...</samp> para descartar,
revertir o aplicar una única parte en la línea de comandos. De hecho, eso es exactamente lo que Magit hace internamente (que es lo que llevó al término "aplicar variantes").
</p>
<p>
Magit no es sólo para expertos en Git, pero asume cierta experiencia previa con Git así como con Emacs. Dicho esto, muchos usuarios han informado de que usar Magit fue lo que
finalmente les enseñó de lo que Git es capaz y cómo usarlo al máximo. Otros usuarios desearían haberse pasado antes a Emacs para haber tenido antes a Magit en sus manos.
</p>
<p>
Aunque hay que conocer las características básicas de Emacs para poder utilizar Magit plenamente, adquirir los conocimientos suficientes sobre el Editor no lleva mucho tiempo y merece
la pena, incluso para los usuarios que prefieren otros editores. Se recomienda a los usuarios de Vim que prueben <a href="https://github.com/emacs-evil/evil" target="new">Evil</a>, la "Extensible VI Layer
for Emacs", y <a href="https://github.com/syl20bnr/spacemacs" target="new">Spacemacs</a>, un "Conjunto de Herramientas para iniciar Emacs (starter-kit) centrado en Evil".
</p>
<p>
Magit proporciona una porcelana Git consistente y eficiente. Tras un breve periodo de aprendizaje, será capaz de hacer la mayor parte de sus tareas diarias de control de versiones más
rápido de lo que lo haría en la línea de comandos. También es probable que empiece a usar funciones que antes le parecían demasiado desalentadoras.
</p>
<p>
Magit adopta plenamente Git. Expone muchas características avanzadas usando una interfaz simple pero flexible en lugar de envolver sólo las triviales como hacen muchos clientes GUI.
Por supuesto, Magit soporta inicio de sesion (logging), clonación (<samp>clone</samp>), envío (<samp>push</samp>) y otros comandos que normalmente no fallan de forma espectacular; pero también
soporta tareas que a menudo no pueden completarse en un solo paso. Magit soporta completamente tareas como fusionar (<samp>merge</samp>), rebasar (<samp>rebase</samp>), entresacar (llevar
trabajo de una rama a otra, cherry-picking), revertir y blaming<sup>2</sup> no sólo proporcionando un comando para iniciar estas tareas sino también mostrando información sensible al
contexto a lo largo del camino y proporcionando comandos que son útiles para resolver conflictos y reanudar la secuencia después de hacerlo.
</p>
<div class="info"><p><span>Nota</span></p><p>
<sup>2</sup> El comando <samp>git blame</samp> toma nota de las líneas de cualquier archivo con cual commit fue el último en introducir un cambio en cada línea del archivo y qué persona
fue autor de ese commit. Esto es muy útil con el fin de encontrar a la persona para pedir más información sobre una sección específica de su código.
</p></div>
<p>
Magit es la interface y en muchos casos mejora al menos los siguientes comandos de porcelana Git: <samp>add</samp>, <samp>am</samp>, <samp>bisect</samp>, <samp>blame</samp>, <samp>branch</samp>,
<samp>checkout</samp>, <samp>cherry</samp>, <samp>cherry-pick</samp>, <samp>clean</samp>, <samp>clone</samp>, <samp>commit</samp>, <samp>config</samp>, <samp>describe</samp>, <samp>diff</samp>, <samp>fetch</samp>,
<samp>format-patch</samp>, <samp>init</samp>, <samp>log</samp>, <samp>merge</samp>, <samp>merge-tree</samp>, <samp>mv</samp>, <samp>notes</samp>, <samp>pull</samp>, <samp>rebase</samp>, <samp>reflog</samp>, <samp>remote</samp>,
<samp>request-pull</samp>, , , <samp>rm</samp>, <samp>show</samp>, <samp>stash</samp>, <samp>submodule</samp>, <samp>subtree</samp>, <samp>tag</samp> y . Muchos más comandos de
porcelana Magit se implementan sobre comandos de fontanería Git.
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_">Anterior</label><label class="btn next" accesskey="n" for="_instalacion" title="Instalación">Siguiente</label></div>
<div class="page" rel="instalacion"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Instalación</li></ul><hr></div>
<h1 id="instalacion">Instalación<a href="#instalacion"></a></h1>
<p>
Magit puede instalarse mediante el gestor de paquetes de Emacs o manualmente desde su repositorio de desarrollo.
</p>
<h2 id="instalacion_desde_melpa">Instalación desde Melpa<a href="#instalacion_desde_melpa"></a></h2>
<p>
Magit está disponible desde Melpa y Melpa-Stable. Si no ha usado antes el gestor de paquetes de Emacs, es hora de que se familiarice con él leyendo la documentación en el manual de
Emacs, vea <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html#Packages" target="new">(emacs)Packages</a>. Después añade uno de los archivos a package-archives:
</p>
<ul>
<li>
Para usar Melpa
<div class="pre"><pre>
(require 'package)
(add-to-list 'package-archives
'(&quot;melpa&quot; . &quot;https://melpa.org/packages/&quot;) t)
</pre></div>
</li>
<li>
Para usar Melpa-Estable:
<div class="pre"><pre>
(require 'package)
(add-to-list 'package-archives
'(&quot;melpa-stable&quot; . &quot;https://stable.melpa.org/packages/&quot;) t)
</pre></div>
</li>
</ul>
<p>Una vez que haya añadido el archivo que prefiera, debe actualizar la lista de paquetes local con el comando:</p>
<div class="pre"><pre>
M-x package-refresh-contents RET
</pre></div>
<p>Una vez hecho esto, puede instalar Magit y sus dependencias usando:</p>
<div class="pre"><pre>
M-x package-install RET magit RET
</pre></div>
<h2 id="instalando_desde_repositorio_git">Instalando desde repositorio Git<a href="#instalando_desde_repositorio_git"></a></h2>
<p>
Magit depende de las bibliotecas <samp>compat</samp>, <samp>dash</samp>, <samp>transient</samp> y <samp>with-editor</samp> que están disponibles en Melpa y Melpa-Stable. Instálelas usando
<kbd>Alt</kbd>-<kbd>x</kbd> <samp>package-install</samp> <kbd>RET</kbd> <samp>&lt;paquete&gt;</samp> <kbd>RET</kbd> (<samp>M-x package-install RET &lt;paquete&gt; RET</samp>). Por supuesto, también
puede instalarlas manualmente desde su repositorio.
</p>
<p>Clone el repositorio Magit:</p>
<div class="pre"><pre>
$ git clone https://github.com/magit/magit.git ~/.config/emacs/lisp/magit
$ cd ~/.config/emacs/lisp/magit
</pre></div>
<p>
A continuación, compile las bibliotecas y genere los manuales informativos:
</p>
<div class="pre"><pre>
$ make
</pre></div>
<p>
Si no ha instalado <samp>compat</samp>, <samp>dash</samp>, <samp>transient</samp> y <samp>with-editor</samp> desde Melpa o en <samp>/ruta/a/magit/../&lt;paquete&gt;</samp>, entonces tiene que decirle a make
donde encontrarlos. Para ello cree el archivo <samp>/ruta/a/magit/config.mk</samp> con el siguiente contenido antes de ejecutar <samp>make</samp>:
</p>
<div class="pre"><pre>
LOAD_PATH = -L ~/.config/emacs/lisp/magit/lisp
LOAD_PATH += -L ~/.config/emacs/lisp/dash
LOAD_PATH += -L ~/.config/emacs/lisp/transient/lisp
LOAD_PATH += -L ~/.config/emacs/lisp/with-editor/lisp
LOAD_PATH += -L ~/.config/emacs/lisp/compat
</pre></div>
<p>Finalmente escriba lo siguiente en el archivo init:</p>
<div class="pre"><pre>
(add-to-list 'load-path &quot;~/.config/emacs/lisp/magit/lisp&quot;)
(require 'magit)
(with-eval-after-load 'info
(info-initialize)
(add-to-list 'Info-directory-list
&quot;~/.config/emacs/lisp/magit/Documentación/&quot;))
</pre></div>
<p>
Por supuesto, si instaló las dependencias manualmente, tiene que decírselo a Emacs también, anteponiendo a lo anterior:
</p>
<div class="pre"><pre>
(add-to-list 'load-path &quot;~/.config/emacs/lisp/dash&quot;)
(add-to-list 'load-path &quot;~/.config/emacs/lisp/transient/lisp&quot;)
(add-to-list 'load-path &quot;~/.config/emacs/lisp/with-editor&quot;)
</pre></div>
<p>
Tenga en cuenta que tiene que añadir el subdirectorio <samp>lisp</samp> a la ruta de carga (<samp>load-path</samp>), no al nivel superior del repositorio, y que los elementos de la ruta de
carga no deben terminar con una barra, mientras que los de <samp>Info-directory-list</samp> sí.
</p>
<p>
En lugar de requerir la característica <samp>magit</samp>, podría cargar sólo las definiciones de autoload, cargando el archivo <samp>magit-autoloads.el</samp>.
</p>
<div class="pre"><pre>
(load &quot;/ruta/a/magit/lisp/magit-autoloads&quot;)
</pre></div>
<p>
En lugar de ejecutar Magit directamente desde el repositorio añadiéndolo a la ruta de carga (<samp>load-path</samp>), es posible que desee instalarlo en algún otro directorio usando
<samp>sudo make install</samp> y estableciendo la ruta de carga en consecuencia.
</p>
<p>Para actualizar <samp>magit</samp> use:</p>
<div class="pre"><pre>
$ git pull
$ make
</pre></div>
<p>A veces puede ser necesario ejecutar make clean all en su lugar.</p>
<p>Para ver todas las opciones disponibles use make help.</p>
<h2 id="tareas_posteriores_a_la_instalacion">Tareas Posteriores a la Instalación<a href="#tareas_posteriores_a_la_instalacion"></a></h2>
<p>
Después de instalar Magit debería verificar que realmente está usando las versiones de Magit, Git y Emacs que cree estar usando. Es mejor reiniciar Emacs antes de hacerlo, para
asegurarse de que no está usando un valor obsoleto para <samp>load-path</samp>.
</p>
<div class="pre"><pre>
M-x magit-version RET
</pre></div>
<p>debería mostrar algo parecido a:</p>
<div class="pre"><pre>
Magit 2.8.0, Git 2.10.2, Emacs 25.1.1, gnu/linux
</pre></div>
<p>
Luego, quizá quiera leer sobre las opciones que probablemente muchos usuarios quieran personalizar. Ver <a href="#@GENDOC:configuracion_esencial@" onclick="c('@GENDOC:configuracion_esencial@')">Configuración esencial</a>.
</p>
<p>
Para poder seguir las referencias cruzadas a las páginas de manual de Git que se encuentran en este manual, puede que también tenga que instalar manualmente la guía de información
de gitman, o las recomendaciones de Info-follow-nearest-node para abrir la página de manual real. Consulte <a href="#@GENDOC:como_instalar_el_manual_de_informacion_de_gitman@" onclick="c('@GENDOC:como_instalar_el_manual_de_informacion_de_gitman@')">Cómo instalar el manual de información de gitman</a>.
</p>
<p>
Si Ud. es completamente nuevo en Magit, consulta <a href="#@GENDOC:como_empezar@" onclick="c('@GENDOC:como_empezar@')">Cómo empezar</a>.
</p>
<p>
Si tiene problemas, consulte las FAQ. Mire también <a href="#@GENDOC:herramientas_de_depuracion@" onclick="c('@GENDOC:herramientas_de_depuracion@')">Herramientas de depuración</a>.
</p>
<p>
Y por último pero no menos importante, por favor considere hacer una donación, para asegurar que puedo seguir trabajando en Magit. Consulte <a href="https://magit.vc/donations " target="new">https://magit.vc/donations</a>. para ver varias opciones de donación.
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_introduccion" title="Introducción">Anterior</label><label class="btn next" accesskey="n" for="_comenzando" title="Comenzando">Siguiente</label></div>
<div class="page" rel="comenzando"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Comenzando</li></ul><hr></div>
<h1 id="comenzando">Comenzando<a href="#comenzando"></a></h1>
<p>
Este breve tutorial describe las funciones más esenciales que muchos <i>Magicianos</i> usan a diario. Sólo araña la superficie, pero debería ser suficiente para empezar.
</p>
<p>
IMPORTANTE: Lo más seguro es que clone algún repositorio sólo para este tutorial. Alternativamente, puede usar un repositorio local existente, pero si lo hace, debe confirmar todos
los cambios no comprometidos antes de continuar.
</p>
<h2 id="primeros_pasos">Primeros Pasos<a href="#primeros_pasos"></a></h2>
<p>
Escriba <kbd>Ctrl</kbd>-<kbd>x</kbd> <kbd>g</kbd> (<samp>C-x g</samp>) para mostrar información sobre el repositorio Git actual en un buffer dedicado, llamado buffer de estado.
</p>
<p>
La mayoría de los comandos de Magit, habitualmente se invocan desde el buffer de estado. Puede considerarse la interfaz principal para interactuar con Git usando Magit. Pueden existir
muchos otros buffers Magit en un momento dado, pero a menudo se crean a partir de este buffer.
</p>
<p>
Dependiendo del estado en el que se encuentre su repositorio, este buffer puede contener secciones tituladas "Staged changes" (Cambios preparados), "Unstaged changes" (Cambios sin
preparar), "Unmerged into origin/master" (Sin confirmar dentro de origin/master), "Unpushed to origin/master" (Sin empujar a origin/master), y muchas otras.
</p>
<p>
Dado que estamos empezando desde un estado seguro, al que puede volver fácilmente (haciendo un <samp>git reset --hard PRE-MAGIT-STATE</samp>), actualmente no hay cambios escalonados o no
escalonados. Edite algunos archivos y guarde los cambios. Luego vuelva al buffer de estado, al mismo tiempo que lo refresca, tecleando <kbd>Ctrl</kbd>-<kbd>x</kbd> <kbd>g</kbd>
(<samp>C-x g</samp>). (Cuando el buffer de estado, o cualquier buffer Magit para el caso, es el buffer actual, puede usar solo <kbd>g</kbd> (<samp>g</samp>) para refrescarlo).
</p>
<p>
Muévase entre secciones utilizando <kbd>p</kbd> y <kbd>n</kbd>. Tenga en cuenta que los cuerpos de algunas secciones están ocultos. Escriba <kbd>TAB</kbd> para expandir o contraer la
sección en cuestión. También puede usar <kbd>Ctrl</kbd>-<kbd>TAB</kbd> (<samp>C-tab</samp>) para cambiar la visibilidad de la sección actual y de sus secciones secundarias. Desplácese a
la sección de un archivo dentro de la sección "Unstaged changes" (Cambios no preparados) y escriba <kbd>s</kbd> para organizar los cambios que ha realizado en ese archivo. El archivo
aparecerá ahora en la sección "Staged changes" (Cambios preparados).
</p>
<p>
Magit puede subir y descargar cambios parciales, no sólo archivos completos. Muévase al archivo que acaba de preparar, expándalo usando <samp>TAB</samp>, muévase a uno de los "hunks" (a
una de las partes) usando <kbd>n</kbd>, y saque solo esa sección del área de preparación tecleando <kbd>u</kbd>. Observe cómo los comandos que incluyen o excluyen archivos o partes de
él en el área de preparación (<kbd>s</kbd> y <kbd>u</kbd>) llevan a cabo el cambio en el punto. Muchos otros comandos se comportan de la misma manera.
</p>
<p>
También puede preparar o sacar del área de preparación sólo una parte de un trozo (la parte de un "hunk"). Dentro del cuerpo de una sección del trozo (muévase allí usando
<kbd>Ctrl</kbd>-<kbd>n</kbd> (<samp>C-n</samp>)), fije la marca usando <kbd>Ctrl</kbd>-<kbd>SPCE</kbd> (<samp>C-SPC</samp>) y muévase hacia abajo hasta que algunas líneas añadidas y/o
eliminadas caigan dentro de la región pero no todas. De nuevo teclee <kbd>s</kbd> para añadir al área de preparación.
</p>
<p>
También es posible sacar del área de preparación varios archivos a la vez. Muévase a la sección de un fichero, teclee <kbd>Ctrl</kbd>-<kbd>SPC</kbd> (<samp>C-SPC</samp>), muévase al
siguiente fichero usando <kbd>n</kbd>, y luego <kbd>s</kbd> para incluír ambos ficheros. Tenga en cuenta que tanto la marca como el punto tienen que estar en las cabeceras de las
secciones hermanas para que esto funcione. Si la región tiene el mismo aspecto que en otros buffers, no selecciona secciones Magit sobre las que se pueda actuar como una unidad.
</p>
<p>
Luego, quiere confirmar sus cambios, por supuesto. Escriba <kbd>c</kbd>. Esto muestra los comandos y argumentos de confirmación disponibles en un búfer en la parte inferior del marco.
Cada comando y argumento tiene como prefijo la tecla que lo invoca/establece. Por ahora no se preocupe por esto. Queremos crear un commit "normal" (una confirmación estandar), lo que
se hace tecleando <kbd>c</kbd> de nuevo.
</p>
<p>
Ahora aparecen dos nuevos buffers. Uno es para escribir el mensaje de confirmación, el otro muestra un diff con los cambios que está a punto de confirmar. Escribe un mensaje y luego
teclee <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>c</kbd> (<samp>C-c C-c</samp>) para crear la confirmación (commit).
</p>
<p>
Probablemente no quiera hacer push del commit (enviar la confirmación) que acaba de crear porque acaba de confirmar algunos cambios al azar, pero si ese no es el caso podría hacer
push tecleando <kbd>P</kbd> para mostrar todos los comandos y argumentos push disponibles y luego <kbd>p</kbd> para hacer push a una rama con el mismo nombre que la rama local en la
remota configurada como push-remote. (Si push-remote no está configurado todavía, entonces primero se le pedirá el remoto al que hacer el push).
</p>
<p>
Hasta ahora hemos mencionado los comandos de menú <samp>commit</samp> (confirmación) y <samp>push</samp> (empujar o enviar). Estos son probablemente los menús que más utilizará, pero existen
muchos otros. Para mostrar un menú que enumere todos los demás menús (así como los diversos comandos apply y algunos otros comandos esenciales), escriba <kbd>h</kbd>. Pruebe algunos.
Estos menús también se denominan "comandos prefijo transitorios" (transient prefix commands) o simplemente "transitorios" (transients).
</p>
<p>
Las combinaciones de teclas de ese menú se corresponden con las combinaciones de las memorias intermedias de Magit, incluida, entre otras, la memoria intermedia de estado. Así que
puede teclear <kbd>h</kbd><kbd>d</kbd> (<samp>h d</samp>) para abrir el menú diff, pero una vez que recuerde que "d" significa "diff", normalmente lo hara simplemente tecleando
<kbd>d</kbd>.
</p>
<p>
Este "prefijo de prefijos" es útil incluso una vez que ha memorizado todos los enlaces, ya que puede proporcionar un fácil acceso a los comandos Magit desde buffers que no son Magit.
Así que, por defecto, está globalmente ligado a <kbd>Ctrl</kbd>-<kbd>x</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> (<samp>C-x M-g</samp>).
</p>
<p>
Un menú similar que presenta (en su mayor parte) comandos que actúan sólo sobre el archivo que se está visitando en el búfer actual, globalmente está vinculado a
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> (<samp>C-c M-g</samp>). Esta combinación también puede usarse en buffers que no visitan un archivo, pero entonces sólo está
disponible un subconjunto de comandos.
</p>
<p>
Las combinaciones de teclas globales mencionadas en los dos párrafos anteriores son bastante inconvenientes. Recomendamos usar <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>g</kbd> (<samp>C-c
g</samp>) y <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd> (<samp>C-c f</samp>) en su lugar, pero no se pueden usar esas secuencias de teclas por defecto porque están estrictamente reservadas
para vinculaciones añadidas por el usuario. Consulte <a href="#@GENDOC:global_bindings@" onclick="c('@GENDOC:global_bindings@')">Global Bindings</a>, si quiere optar explícitamente por las combinaciones de teclas recomendadas.
</p>
<p>Magit también proporciona menús contextuales y otros comandos de ratón, vea <a href="#@GENDOC:soporte_de_raton@" onclick="c('@GENDOC:soporte_de_raton@')">Soporte de ratón</a>.</p>
<p>No es necesario que lo haga ahora, pero si sigue con Magit, entonces es muy recomendable que también lea la siguiente sección.</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_instalacion" title="Instalación">Anterior</label><label class="btn next" accesskey="n" for="_modos_y_buferes" title="Modos y Búferes">Siguiente</label></div>
<div class="page" rel="modos_y_buferes"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Modos y Búferes</li></ul><hr></div>
<h1 id="modos_y_buferes">Modos y Búferes<a href="#modos_y_buferes"></a></h1>
<p>
Magit ofrece varios modos principales. Para cada uno de estos modos, normalmente sólo existe un buffer por repositorio. Existen modos separados y por tanto buffers para commits,
diffs, logs y algunas otras cosas.
</p>
<p>
Además de estos buffers especiales, también existe un buffer general, llamado <b>buffer de estado</b>. Normalmente es desde este búfer desde donde el usuario invoca comandos Git, o
crea o visita otros búferes.
</p>
<p>
En este manual hablamos a menudo de "buffers Magit". Con esto nos referimos a buffers cuyos modos mayores (major-modes) derivan de <samp>magit-mode</samp>.
</p>
<dt>
<dd><samp>M-x magit-toggle-buffer-lock</samp></dd>
<dd>
Este comando bloquea el búfer actual a su valor o, si el búfer ya está bloqueado, lo desbloquea.
</dd>
<dd>
El bloqueo de un búfer a su valor impide que se reutilice para mostrar otro valor. El nombre de un búfer bloqueado contiene su valor, lo que permite diferenciarlo de otros búferes
bloqueados y del búfer desbloqueado.
</dd>
<dd>
No todos los búferes Magit pueden bloquearse en sus valores; por ejemplo, no tendría sentido bloquear un búfer de estado.
</dd>
<dd>
Sólo puede haber un único búfer desbloqueado que utilice un determinado modo-mayor por repositorio. Por lo tanto, cuando se desbloquea un búfer y ya existe otro búfer desbloqueado
para ese modo y repositorio, se elimina el primero y se muestra el segundo en su lugar.
</dd>
</dt>
<h2 id="buferes_de_conmutacion">Búferes de Conmutación<a href="#buferes_de_conmutacion"></a></h2>
<dt>Función: <samp>magit-display-buffer</samp> <i>buffer &optional display-function</i></dt>
<dd>
Esta función envuelve a <samp>display-buffer</samp> y se utiliza para mostrar cualquier búfer Magit. Muestra el BUFFER en alguna ventana y, a diferencia de <samp>display-buffer</samp>,
también selecciona esa ventana, siempre que <samp>magit-display-buffer-noselect</samp> sea <samp>nil</samp>. También ejecuta los ganchos (hook) mencionados a continuación.
</dd>
<dd>
Si la opción DISPLAY-FUNCTION no es nula, se usa para mostrar el búfer. Normalmente es <samp>nil</samp> y se usa la función especificada por <samp>magit-display-buffer-function</samp>.
</dd>
<dt>Variable: <samp>magit-display-buffer-noselect</samp></dt>
<dd>
Cuando no es nula, <samp>magit-display-buffer</samp> sólo muestra el buffer pero no selecciona la ventana. Esta variable no debe establecerse globalmente, sólo está pensada para ser
"dejar anclado", por código que actualice automáticamente "la otra ventana". Esto se usa por ejemplo cuando el buffer de revisión se actualiza cuando se mueve dentro del buffer de
registro.
</dd>
<dt>Opción de usuario: <samp>magit-display-buffer-function</samp></dt>
<dd>
La función especificada aquí es llamada por <samp>magit-display-buffer</samp> con un argumento, un buffer, para mostrar realmente ese buffer. Esta función debe llamar a
<samp>display-buffer</samp> con ese búfer como primer argumento y una lista de acciones de visualización como segundo argumento.
</dd>
<dd>
Magit proporciona varias funciones, listadas a continuación, que son valores adecuados para esta opción. Si quiere usar reglas diferentes, una buena forma de hacerlo es empezar
con una copia de una de estas funciones y luego ajustarla a sus necesidades.
</dd>
<dd>
En lugar de usar una envoltura alrededor de <samp>display-buffer</samp>, la propia función puede ser utilizada aquí, en cuyo caso las acciones de visualización tienen que ser
especificadas añadiéndolas a <samp>display-buffer-alist</samp>.
</dd>
<dd>Para aprender sobre acciones de visualización, vea <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Choosing-Window.html#Choosing-Window" target="new">(elisp)Choosing
Window</a>.
</dd>
<dt>Función: <samp>magit-display-buffer-traditional</samp> <i>buffer</i></dt>
<dd>
Esta función es el valor actual por defecto de la opción <samp>magit-display-buffer-function</samp>. Antes de que se añadieran esta opción y esta función, el comportamiento estaba
codificado en muchos lugares de la base de código, pero ahora todas las reglas están contenidas en esta función (excepto en el caso especial "noselect" mencionado anteriormente).
</dd>
<dt>Función: <samp>magit-display-buffer-same-window-except-diff-v1</samp></dt>
<dd>
Esta función muestra la mayoría de los búferes de la ventana seleccionada en ese momento. Si el modo de un búfer deriva de <samp>magit-diff-mode</samp> o <samp>magit-process-mode</samp>,
se muestra en otra ventana.
</dd>
<dt>Función: <samp>magit-display-buffer-fullframe-status-v1</samp></dt>
<dd>
Esta función llena todo el fotograma cuando se muestra un búfer de estado. En caso contrario, se comporta como <samp>magit-display-buffer-traditional</samp>.
</dd>
<dt>Función: <samp>magit-display-buffer-fullframe-status-topleft-v1</samp></dt>
<dd>
Esta función llena todo el fotograma al mostrar un búfer de estado. Se comporta como <samp>magit-display-buffer-fullframe-status-v1</samp> excepto en que muestra los buffers que
derivan de <samp>magit-diff-mode</samp> o <samp>magit-process-mode</samp> en la parte superior o izquierda del buffer actual en lugar de en la parte inferior o derecha. Como resultado,
los búferes Magit tienden a aparecer en el mismo lado que lo harían si se estuviera usando <samp>magit-display-buffer-traditional</samp>.
</dd>
<dt>Función: <samp>magit-display-buffer-fullcolumn-most-v1</samp></dt>
<dd>
Esta función muestra la mayoría de los búferes de modo que ocupen toda la altura del marco. Sin embargo, el búfer se muestra en otra ventana si (1) el modo del búfer deriva de
<samp>magit-process-mode</samp>, o (2) el modo del búfer deriva de <samp>magit-diff-mode</samp>, siempre que el modo del búfer actual derive de <samp>magit-log-mode</samp> o
<samp>magit-cherry-mode</samp>.
</dd>
<dt>Opción de usuario: <samp>magit-pre-display-buffer-hook</samp></dt>
<dd>
Este gancho (hook) es ejecutado por <samp>magit-display-buffer</samp> antes de mostrar el buffer.
</dd>
<dt>Función: <samp>magit-save-window-configuration</samp></dt>
<dd>
Esta función guarda la configuración actual de la ventana. Más tarde, cuando se entierre el buffer, podrá restaurarse mediante <samp>magit-restore-window-configuration</samp>.
</dd>
<dt>Opción de usuario: <samp>magit-post-display-buffer-hook</samp></dt>
<dd>
Este gancho (hook) es ejecutado por <samp>magit-display-buffer</samp> después de mostrar el buffer.
</dd>
<dt>Función: <samp>magit-maybe-set-dedicated</samp></dt>
<dd>
Esta función recuerda si se ha tenido que crear una nueva ventana para mostrar el buffer, o si se ha reutilizado una ventana existente. Esta información es utilizada
posteriormente por <samp>magit-mode-quit-window</samp>, para determinar si la ventana debe ser eliminada cuando su último búfer Magit es enterrado.
</dd>
</dl>
<h2 id="nombrar_buferes">Nombrar Búferes<a href="#nombrar_buferes"></a></h2>
<dl>
<dt>Opción de usuario: <samp>magit-generate-buffer-name-function</samp></dt>
<dd>
La función usada para generar los nombres de los buffers Magit.
</dd>
<dt></dt>
<dd>
Esta función debería tener en cuenta las opciones <samp>magit-uniquify-buffer-names</samp> y <samp>magit-buffer-name-format</samp>. Si no lo hace, debería indicarse claramente en el
doc-string. Y si soporta %-secuencias más allá de las mencionadas en el doc-string de la opción <samp>magit-buffer-name-format</samp>, entonces su propio doc-string debería describir
las adiciones.
</dd>
<dt>Función: <samp>magit-generate-buffer-name-default-function-modo</samp></dt>
<dd>
Esta función devuelve un nombre de búfer adecuado para un búfer cuyo major-mode (modo-mayor) es MODE y que muestra información sobre el repositorio en el que se encuentra
<samp>default-directory</samp>.
</dd>
<dd>
Esta función usa <samp>magit-buffer-name-format</samp> y soporta todas las secuencias % mencionadas en la documentación de dicha opción. También respeta la opción
<samp>magit-uniquify-buffer-names</samp>.
</dd>
<dt>Opción de usuario: <samp>magit-buffer-name-format</samp></dt>
<dd>La cadena de formato usada para nombrar los buffers Magit.</dd>
<dd>
Se admiten al menos las siguientes secuencias %:
<ul>
<li>
<samp>%m</samp>
<dd>El nombre del modo-mayor, pero sin el sufijo <samp>-mode</samp>.</dd>
</li>
<li>
<samp>%M</samp>
<dd>Como <samp>%m</samp> pero abreviando <samp>magit-status-mode</samp> como <samp>magit</samp>.</dd>
</li>
<li>
<samp>%v</samp>
<dd>El valor al que está bloqueado el búfer, entre paréntesis, o una cadena vacía si el búfer no está bloqueado a ningún valor.</dd>
</li>
<li>
<samp>$V</samp>
<dd>Como <samp>%v</samp>, pero la cadena va precedida de un espacio, a menos que sea una cadena vacía.</dd>
</li>
<li>
<samp>%t</samp>
<dd>
El directorio de nivel superior del árbol de trabajo del repositorio, o si <samp>magit-uniquify-buffer-names</samp> es distinto de <samp>nil</samp>, una abreviatura del mismo.
</dd>
</li>
<li>
<samp>%x</samp>
<dd>Si <samp>magit-uniquify-buffer-names</samp> es nulo (nil) "<samp>*</samp>", en caso contrario la cadena vacía. Debido a las limitaciones del paquete <samp>uniquify</samp>, los
nombres de los búferes deben terminar con la ruta.</dd>
</li>
</ul>
<dd>
El valor siempre debe contener <samp>%m</samp> o <samp>%M</samp>, <samp>%v</samp> o <samp>%V</samp>, y <samp>%t</samp>. Si <samp>magit-uniquify-buffer-names</samp> es distinto de nil, el valor debe
terminar con <samp>%t</samp> o <samp>%t%x</samp>. Véase el problema nº 2841 (issue #2841).
</dd>
</dd>
</dl>
<dl>
<dt>Opción de usuario: <samp>magit-uniquify-buffer-names</samp></dt>
<dd>
Esta opción controla si los nombres de los buffers Magit están unificados. Si los nombres no se unifican, contienen la ruta completa del nivel superior del árbol de trabajo del
repositorio correspondiente. Si están siendo unificados, entonces terminan con el nombre base del nivel superior, o si eso entra en conflicto con el nombre utilizado para otros
buffers, entonces los nombres de todos estos buffers se ajustan hasta que ya no entren en conflicto.
</dd>
<dd>Esto se hace usando el paquete <samp>uniquify</samp>; personalice sus opciones para controlar cómo se unifican los nombres de los buffers.</dd>
</dl>
<h2 id="cerrar_ventanas">Cerrar Ventanas<a href="#cerrar_ventanas"></a></h2>
<dl>
<dt><kbd>q</kbd> (<i><samp>q</samp></i>, <samp>magit-mode-bury-buffer</samp>)</dt>
<dd>
Este comando entierra o mata el búfer Magit actual. La función especificada por la opción <samp>magit-bury-buffer-function</samp> se usa para enterrar el búfer cuando se invoca sin un
argumento de prefijo o para matarlo cuando se invoca con un único argumento de prefijo.
</dd>
<dd>Cuando se invoca con dos o más argumentos de prefijo, siempre elimina todos los búferes Magit asociados con el proyecto actual, incluido el búfer actual.</dd>
<dt>Opción de usuario: <samp>magit-bury-buffer-function</samp></dt>
<dd>La función usada para enterrar o matar el buffer actual.</dd>
<dd>
<samp>magit-mode-bury-buffer</samp> llama a esta función con un argumento. Si el argumento no es nulo, entonces la función tiene que matar el buffer actual. Si no, tiene que
enterrarlo vivo. El valor por defecto es <samp>magit-mode-quit-window</samp>.
</dd>
<dt>Función: <samp>magit-restore-window-configuration</samp> <i>kill-buffer</i></dt>
<dd>
Entierra o mata el buffer actual usando <samp>quit-window</samp>, que es llamado con KILL-BUFFER como primer argumento y la ventana seleccionada como segundo argumento.
</dd>
<dd>
Entonces restaura la configuración de ventana que existía justo antes de que el buffer actual se mostrara en el marco seleccionado. Desafortunadamente eso también significa que el
punto se ajusta en todos los buffers, que están siendo mostrados en el marco seleccionado.
</dd>
<dt>Función: <samp>magit-mode-quit-window kill-buffer</samp></dt>
<dd>
Entierra o mata el búfer actual usando <samp>quit-window</samp>, que se llama con KILL-BUFFER como primer argumento y la ventana seleccionada como segundo argumento.
</dd>
<dd>
Entonces, si la ventana se creó originalmente para mostrar un búfer Magit y el búfer enterrado era el último búfer Magit restante que se mostraba en la ventana, éste se elimina.
</dd>
</dl>
<h2 id="actualizacion_automatica_de_las_memorias_intermedias_magit">Actualización Automática de las Memorias Intermedias Magit<a href="#actualizacion_automatica_de_las_memorias_intermedias_magit"></a></h2>
<p>
Después de ejecutar un comando que puede cambiar el estado del repositorio actual, el búfer Magit actual y el búfer de estado correspondiente se refrescan. El búfer de estado se puede
refrescar automáticamente cada vez que se guarda un búfer en un archivo dentro del repositorio respectivo añadiendo un gancho (hook), como el siguiente:
</p>
<div class="pre"><pre>
(with-eval-after-load 'magit-mode
(add-hook 'after-save-hook 'magit-after-save-refresh-status t))
</pre></div>
<p>
La actualización automática de los búferes Magit garantiza que la información mostrada esté actualizada la mayor parte del tiempo, pero puede provocar un retraso considerable en
repositorios grandes. Otros buffers Magit no se refrescan para mantener el retraso al mínimo y también porque hacerlo a veces puede ser indeseable.
</p>
<p>
Los buffers también se pueden actualizar explícitamente, lo que es útil en buffers que no estaban actualizados durante la última actualización y después de que se hayan hecho cambios
en el repositorio fuera de Magit.
</p>
<dl>
<dt><kbd>g</kbd> (<i><samp>g</samp></i>, <samp>magit-refresh</samp>)</dt>
<dd>
Esta orden actualiza el búfer actual si su modo principal deriva de magit-mode, así como el búfer de estado correspondiente.
</dd>
<dd>
Si la opción <samp>magit-revert-buffers</samp> lo requiere, entonces también revierte todos los buffers no modificados que visitan archivos que están siendo rastreados en el
repositorio actual.
</dd>
<dt><kbd>G</kbd> (<i><samp>G</samp></i>, <samp>magit-refresh-all</samp>)</dt>
<dd>
Este comando refresca todos los buffers Magit pertenecientes al repositorio actual y también revierte todos los buffers no modificados que visitan archivos que están siendo
rastreados en el repositorio actual.
</dd>
<dd>
Los buffers que visitan archivos siempre se revierten, incluso si <samp>magit-revert-buffers</samp> es nulo (nil).
</dd>
<dt>Opción de usuario: <samp>magit-refresh-buffer-hook</samp></dt>
<dd>
Este gancho se ejecuta en cada búfer Magit que haya sido refrescado durante el refresco actual - normalmente el búfer actual y el búfer de estado.
</dd>
<dt>Opción de usuario: <samp>magit-refresh-status-buffer</samp></dt>
<dd>
Cuando esta opción es distinta de nil, el búfer de estado se actualiza automáticamente después de ejecutar git para side-effects, además del búfer Magit actual, que siempre se
actualiza automáticamente.
</dd>
<dd>Establece esta opción a nil sólo después de agotar todas las demás opciones para mejorar el rendimiento.</dd>
<dt>Función: <samp>magit-after-save-refresh-status</samp></dt>
<dd>
Esta función está pensada para ser añadida a <samp>after-save-hook</samp>. Después de hacerlo, el búfer de estado correspondiente se refresca cada vez que se guarda un búfer en un
archivo dentro de un repositorio.
</dd>
<dd>
Tenga en cuenta que refrescar un buffer Magit se hace recreando su contenido desde cero, lo que puede ser lento en repositorios grandes. Si no está satisfecho con el rendimiento
de Magit, entonces obviamente no debería añadir esta función a ese gancho (hook).
</dd>
</dl>
<h2 id="almacenamiento_automatico_de_las_memorias_intermedias_que_visitan_archivos">Almacenamiento Automático de las Memorias Intermedias que Visitan Archivos<a href="#almacenamiento_automatico_de_las_memorias_intermedias_que_visitan_archivos"></a></h2>
<p>
Los buffers que visitan archivos se guardan por defecto en determinados momentos. Esto no garantiza que los buffers de Magit estén siempre actualizados, pero, siempre que uno sólo
edite archivos con Emacs y use sólo Magit para interactuar con Git, puede estar bastante seguro. En caso de duda o después de cambios externos, teclee <samp>g</samp>
(<samp>magit-refresh</samp>) para guardar y refrescar explícitamente.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-save-repository-buffers</samp></dt>
<dd>
Esta opción controla si los buffers que visitan archivos se guardan antes de ciertos eventos.
</dd>
<dd>
Si no es nula, todos los búferes que visitan archivos modificados pertenecientes al repositorio actual pueden guardarse antes de ejecutar comandos, antes de crear nuevos búferes
Magit y antes de actualizar explícitamente dichos búferes. Si es <samp>dontask</samp>, esto se hace sin intervención del usuario. Si es <samp>t</samp> entonces el usuario tiene que
confirmar cada guardado.
</dd>
</dl>
<h2 id="reversion_automatica_de_las_buferes_que_visitan_archivos">Reversión Automática de las Búferes que Visitan Archivos<a href="#reversion_automatica_de_las_buferes_que_visitan_archivos"></a></h2>
<dd>
Por defecto, Magit revierte automáticamente los buffers que visitan ficheros que están siendo seguidos en un repositorio Git, después de que hayan guardado los cambios. Cuando se usa
Magit a menudo se cambian archivos en disco ejecutando Git, es decir, "fuera de Emacs", lo que hace que esta característica sea bastante importante.
</dd>
<p>
Por ejemplo, si descarta un cambio en el buffer de estado, eso se hace ejecutando <samp>git apply --reverse ...</samp>, y Emacs considera que el archivo ha "cambiado en disco". Si Magit
no revirtiera automáticamente el buffer, entonces tendría que teclear (<samp>M-x revert-buffer RET RET</samp>) en el buffer de visita antes de poder seguir haciendo cambios.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-auto-revert-mode</samp></dt>
<dd>Cuando se activa este modo, los búferes que visitan archivos rastreados se revierten automáticamente después de que los archivos visitados cambien en el disco.</dd>
<dt>Opción de Usuario: <samp>global-auto-revert-mode</samp></dt>
<dd>
Cuando este modo está activado, cualquier búfer que visite un archivo se revierte automáticamente después de que el archivo visitado cambie en el disco.
</dd>
<dd>
Si quiere que los búferes que visitan archivos rastreados se reviertan automáticamente, es posible que también quiera que se revierta cualquier búfer, no sólo los que visitan
archivos rastreados. En ese caso, active este modo en lugar de <samp>magit-auto-revert-mode</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-auto-revert-immediately</samp></dt>
<dd>
Esta opción controla si Magit revierte los buffers inmediatamente.
</dd>
<dd>
Si no es nula y está activado el modo <samp>global-auto-revert</samp> o <samp>magit-auto-revert</samp>, Magit revertirá inmediatamente los buffers llamando explícitamente a
auto-revert-buffers después dei ejecutar Git para los efectos secundarios.
</dd>
<dd>
Si <samp>auto-revert-use-notify</samp> es no nulo (no nil, y las notificaciones de archivos están realmente soportadas), entonces <samp>magit-auto-revert-immediately</samp> no tiene que
ser non nil, porque las reversiones ocurren inmediatamente de todos modos.
</dd>
<dd>
Si <samp>magit-auto-revert-immediately</samp> y <samp>auto-revert-use-notify</samp> son ambos nulos, las reversiones ocurrirán después de un intervalo de auto-reversión de segundos de
inactividad del usuario. Esto no es deseable.
</dd>
<dt>Opción de Usuario: <samp>auto-revert-use-notify</samp></dt>
<dd>
Esta opción controla si se deben usar las funciones de notificación de archivos. Tenga en cuenta que, lamentablemente, esta variable tiene por defecto el valor <samp>t</samp>, incluso
en sistemas en los que no se pueden utilizar las notificaciones de archivos.
</dd>
<dt>Opción de Usuario: <samp>magit-auto-revert-tracked-only</samp></dt>
<dd>
Esta opción controla si <samp>magit-auto-revert-mode</samp> sólo revierte archivos rastreados o todos los archivos que se encuentran dentro de repositorios Git, incluyendo archivos no
rastreados y archivos ubicados dentro del directorio de control de Git.
</dd>
<dt>Opción de Usuario: <samp>auto-revert-mode</samp></dt>
<dd>
El modo <samp>global magit-auto-revert-mode</samp> funciona activando este modo local en los buffers apropiados (pero <samp>global-auto-revert-mode</samp> se implementa de forma
diferente). También puede activarlo o desactivarlo manualmente, lo que puede ser necesario si Magit no se da cuenta de que un archivo no rastreado previamente ahora está siendo
rastreado o viceversa.
</dd>
<dt>Opción de Usuario: <samp>auto-revert-stop-on-user-input</samp></dt>
<dd>Esta opción controla si la llegada de una entrada de usuario suspende las reversiones automáticas durante <samp>auto-revert-interval</samp> segundos.</dd>
<dt>Opción de Usuario: <samp>auto-revert-interval</samp></dt>
<dd>Esta opción controla cuántos segundos espera Emacs antes de reanudar las reversiones suspendidas.</dd>
<dt>Opción de Usuario: <samp>auto-revert-buffer-list-filter</samp></dt>
<dd>
Esta opción especifica un filtro adicional utilizado por <samp>auto-revert-buffers</samp> para determinar si un buffer debe ser revertido o no.
</dd>
<dd>
Esta opción la proporciona Magit, que también aconseja a <samp>auto-revert-buffers</samp> que la respete. Los usuarios de Magit que no activen el modo local <samp>auto-revert-mode</samp>
por sí mismos, están mejor servidos estableciendo el valor a <samp>magit-auto-revert-repository-buffer-p</samp>.
</dd>
<dd>
Sin embargo, el valor por defecto es nil, para no molestar a los Usuarios que sí utilizan el modo local directamente. Si experimenta retrasos al ejecutar comandos Magit, debería
considerar el uso de uno de los predicados proporcionados por Magit, especialmente si también utiliza Tramp.
</dd>
<dd>
Los usuarios que activan el modo <samp>auto-revert</samp> en buffers en los que Magit no lo hace por ellos, probablemente no deberían usar ningún filtro. Los usuarios que activen el
modo <samp>global-auto-revert</samp>, no tienen que preocuparse por esta opción, porque no se tiene en cuenta si el modo global está activado.
</dd>
<dt>Opción de Uusario: <samp>auto-revert-verbose</samp></dt>
<dd>Esta opción controla si Emacs informa cuando un buffer ha sido revertido.</dd>
</dl>
<p>
Las opciones con el prefijo <samp>auto-revert-</samp> se encuentran en el grupo Custom llamado <samp>auto-revert</samp>. Las otras opciones, específicas de Magit, se encuentran en el grupo
magit.
</p>
<h3 id="riesgo_de_reversion_automatica">Riesgo de Reversión Automática<a href="#riesgo_de_reversion_automatica"></a></h3>
<p>
Para la gran mayoría de los usuarios, revertir automáticamente los buffers que visitan ficheros después de que hayan cambiado en el disco es inofensivo.
</p>
<p>
Si un buffer está modificado (es decir, contiene cambios que aún no han sido guardados), entonces Emacs se negará a revertirlo automáticamente. Si guarda un buffer previamente
modificado, entonces eso resulta en lo que Git ve como un cambio no comprometido. Git se negará a ejecutar cualquier comando que pueda causar que estos cambios se pierdan. En otras
palabras, si hay algo que pueda perderse, Git o Emacs se negarán a descartar los cambios.
</p>
<p>
Sin embargo, si usa buffers de visita de archivos como una especie de "área de preparación" (staging area) ad hoc, entonces las reversiones automáticas podrían potencialmente causar
pérdidas de datos. Hasta ahora sólo he oído hablar de un usuario que utilice este tipo de flujo de trabajo.
</p>
<p>
Un ejemplo: Visita algún fichero en un buffer, lo edita y guarda los cambios. Entonces, fuera de Emacs (o al menos no usando Magit o guardando el buffer) cambia el fichero en disco
otra vez. En este punto, el buffer es el único lugar donde la versión intermedia todavía existe. Ha guardado los cambios en el disco, pero desde entonces se han sobrescrito. Mientras
tanto Emacs considera que el buffer no ha sido modificado (porque no ha hecho ningún cambio en él desde la última vez que lo guardó en el fichero visitado) y por lo tanto no se
opondría a que fuera revertido automáticamente. En este punto, se activaría el modo Auto-Revertir. Comprobaría si el búfer está modificado y, como no es el caso, lo revertiría. La
versión intermedia se perdería. (En realidad aún podría recuperarla usando el comando deshacer).
</p>
<p>
Si su flujo de trabajo depende de que Emacs preserve la versión intermedia en el buffer, entonces tiene que desactivar todos los modos de Auto-Revertir. Pero por favor considere que
tal flujo de trabajo sería peligroso incluso sin usar un modo Auto-Revertir, y por lo tanto debería ser evitado. Si Emacs se bloquea o si sales de Emacs por error, también perderías
el contenido del buffer. No habría ningún archivo de autoguardado que todavía contuviera la versión intermedia (porque se borró cuando guardó el buffer) y no se le preguntaría si
quiere guardar el buffer (porque no se modifica).
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_comenzando" title="Comenzando">Anterior</label><label class="btn next" accesskey="n" for="_secciones" title="Secciones">Siguiente</label></div>
<div class="page" rel="secciones"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Secciones</li></ul><hr></div>
<h1 id="secciones">Secciones<a href="#secciones"></a></h1>
<p>
Los buffers Magit están organizados en secciones anidadas, que pueden ser colapsadas y expandidas, similar a como las secciones son manejadas en Org mode. Cada sección también tiene
un tipo, y algunas secciones también tienen un valor. Para cada tipo de sección también puede haber un mapa de teclado local, compartido por todas las secciones de ese tipo.
</p>
<p>
Aprovechando el valor y el tipo de sección, muchos comandos operan en la sección actual, o cuando la región está activa y selecciona secciones del mismo tipo, en todas las secciones
seleccionadas. Los comandos que sólo tienen sentido para un determinado tipo de sección (en lugar de comportarse de forma diferente según el tipo) suelen estar vinculados a mapas de
teclado de tipo de sección.
</p>
<h2 id="desplazamiento_por_secciones">Desplazamiento por Secciones<a href="#desplazamiento_por_secciones"></a></h2>
<p>
Para desplazarse dentro de una sección, use las teclas habituales (<kbd>Ctrl</kbd>-<kbd>p</kbd> (<samp>C-p</samp>), <kbd>Ctrl</kbd>-<kbd>n</kbd> (<samp>C-n</samp>),
<kbd>Ctrl</kbd>-<kbd>b</kbd> (<samp>C-b</samp>), <kbd>Ctrl</kbd>-<kbd>f</kbd> (<samp>C-f</samp>), etc.), cuyos enlaces globales no están sombreados. Para desplazarse a otra sección, use
los siguientes comandos.
</p>
<dl>
<dt><kbd>p</kbd> (<i><samp>p</samp></i>, <samp>magit-section-backward</samp>)</dt>
<dd>
Cuando no está al principio de una sección, se desplaza al principio de la sección actual. Al principio de una sección, se desplaza al principio de la sección visible anterior.
</dd>
<dt><kbd>n</kbd> (<i><samp>n</samp></i>, <samp>magit-section-forward</samp>)</dt>
<dd>
Pasa al principio de la siguiente sección visible.
</dd>
<dt><kbd>Alt</kbd>-<kbd>p</kbd> (<i><samp>M-p</samp></i>, <samp>magit-section-backward-sibling</samp>)</dt>
<dd>
Se desplaza al principio de la sección de hermana anterior. Si no hay sección anterior, se desplaza a la sección principal.
</dd>
<dt><kbd>Alt</kbd>-<kbd>n</kbd> (<i><samp>M-n</samp></i>, <samp>magit-section-forward-sibling</samp>)</dt>
<dd>
Se desplaza al principio de la siguiente sección hermana. Si no hay una sección hermana siguiente, se desplaza a la sección principal.
</dd>
<dt><kbd>^</kbd> (<i><samp>^</samp></i>, <samp>magit-section-up</samp>)</dt>
<dd>
Se desplaza al principio del padre de la sección actual.
</dd>
</dl>
<p>
Todos los comandos anteriores llaman al gancho <samp>magit-section-movement-hook</samp>. Cualquiera de las funciones listadas a continuación pueden ser usadas como miembros de este
gancho (hook).
</p>
<p>
Puede que quiera eliminar algunas de las funciones que Magit añade usando <samp>add-hook</samp>. Al hacerlo tiene que asegurarse de que no intenta eliminar funciones que ni siquiera han
sido añadidas todavía, por ejemplo:
</p>
<div class="pre"><pre>
(with-eval-after-load 'magit-diff
(remove-hook 'magit-section-movement-hook
'magit-hunk-set-window-start))
</pre></div>
<dl>
<dt>Variable: <samp>magit-section-movement-hook</samp></dt>
<dd>
Este gancho es ejecutado por todos los comandos de movimiento anteriores, después de llegar al destino.
</dd>
<dt>Función: <samp>magit-hunk-set-window-start</samp></dt>
<dd>
Este gancho es una función y asegura que el comienzo de la sección actual es visible, siempre que sea una sección <samp>hunk</samp>. En caso contrario, no hace nada.
</dd>
<dd>Carga <samp>magit-diff</samp>, añade esta función al gancho.</dd>
<dt>Función: <samp>magit-section-set-window-start</samp></dt>
<dd>
La función de este gancho asegura que el comienzo de la sección actual sea visible, independientemente del tipo de sección. Si añade esto a <samp>magit-section-movement-hook</samp>,
deberá eliminar a su vez la variante <samp>hunk-only</samp>.
</dd>
<dt>Función: <samp>magit-log-maybe-show-more-commits</samp></dt>
<dd>
La función de este gancho sólo tiene efecto en las memorias intermedias de registro, y el punto (<samp>point</samp>) está en la sección "mostrar más". Si ese es el caso, entonces
duplica el número de commits que se muestran.
</dd>
<dd>
Carga <samp>magit-log</samp> y añade esta función al gancho.
</dd>
<dt>Función: <samp>magit-log-maybe-update-revision-buffer</samp></dt>
<dd>
Cuando se mueve dentro de un búfer de registro, esta función actualiza el búfer de revisión, siempre que ya se esté visualizando en otra ventana del mismo marco.
</dd>
<dd>Carga <samp>magit-log</samp> y añade esta función al gancho.</dd>
<dt>Función: <samp>magit-log-maybe-update-blob-buffer</samp></dt>
<dd>
Cuando se desplaza dentro de un búfer de registro y otra ventana del mismo marco muestra un búfer de blob (un bufer que puede contener binario), esta función muestra en su lugar
el búfer de blob para la confirmación en el punto de esa ventana.
</dd>
<dt>Función: <samp>magit-status-maybe-update-revision-buffer</samp></dt>
<dd>
Cuando se desplaza dentro de un búfer de estado, esta función actualiza el búfer de revisión, siempre que ya se esté visualizando en otra ventana del mismo marco.
</dd>
<dt>Función: <samp>magit-status-maybe-update-stash-buffer</samp></dt>
<dd>
Cuando se desplaza dentro de un búfer de estado, esta función actualiza el búfer de stash <sup>1</sup>, siempre que ya se esté visualizando en otra ventana del mismo marco.
</dd>
<dd>
<div class="info"><p><span>Importante</span></p><p>
<sup>1</sup> El <i>stashing</i> permite mantener los cambios que se han hecho y a la vez deshacerce del archivo temporalmente, es una opción que permite esconder archivos. Este
concepto escrito con otras palabras: el comando <samp>git --stash</samp> permite guardar los archivos del directorio de trabajo modificados y lo guarda en un espacio de cambios sin
terminar que se puede usar en cualquier momento.
</p></div>
</dd>
<dt>Función: <samp>magit-status-maybe-update-blob-buffer</samp></dt>
<dd>
Cuando se desplaza dentro de un búfer de estado y otra ventana del mismo marco muestra un búfer de blob, esta función muestra en su lugar el búfer de blob para la confirmación en
el punto de esa ventana.
</dd>
<dt>Función: <samp>magit-stashes-maybe-update-stash-buffer</samp></dt>
<dd>
Cuando se mueve dentro de un buffer que lista stashes, entonces esta función actualiza el buffer stash, siempre y cuando ya se esté mostrando en otra ventana del mismo marco.
</dd>
<dt>Opción de Usuario: <samp>magit-update-other-window-delay</samp></dt>
<dd>
Retraso antes de actualizar automáticamente la otra ventana.
</dd>
<dd>
Al desplazarse por determinados búferes, entonces otros búferes, que se están visualizando en otra ventana, pueden actualizarse opcionalmente para mostrar información sobre la
sección en el punto.
</dd>
<dd>
Al mantener pulsada una tecla para moverse por más de una sección, entonces eso actualizaría ese búfer para cada sección en el camino. Para evitarlo, la actualización del búfer de
revisión se retrasa, y esta opción controla durante cuánto tiempo. Para una experiencia óptima puede que tenga que ajustar este retardo y/o la velocidad de repetición del teclado
y el retardo de tu entorno gráfico o sistema operativo.
</dd>
</dl>
<h2 id="visibilidad_de_las_secciones">Visibilidad de las Secciones<a href="#visibilidad_de_las_secciones"></a></h2>
<p>Magit proporciona muchos comandos para cambiar la visibilidad de las secciones, pero todo lo que necesita para empezar son los dos siguientes.</p>
<dl>
<dt><kbd>TAB</kbd> (<i><samp>TAB</samp></i>, <samp>magit-section-toggle</samp>)</dt>
<dd>
Cambia (muestra u oculta) la visibilidad del cuerpo de la sección actual.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>TAB</kbd> (<i><samp>C-&lt;tab&gt;</samp></i>, <samp>magit-section-cycle</samp>)</dt>
<dd>
Cicla entre la visibilidad de la sección actual y sus hijos.
</dd>
<dt><kbd>Alt</kbd>-<kbd>TAB</kbd> (<i><samp>M-&lt;tab&gt;</samp></i>, <samp>magit-section-cycle-diffs</samp>)</dt>
<dd>
Cicla la visibilidad de las secciones relacionadas con diff en el búfer actual.
</dd>
<dt><kbd>Shift</kbd>-<kbd>TAB</kbd> (<samp>S-&lt;tab&gt;</samp>, <samp>magit-section-cycle-global</samp>)</dt>
<dd>
Cicla la visibilidad de todas las secciones del búfer actual.
</dd>
<dd>
<div class="pre"><pre>
1 (magit-section-show-level-1)
2 (magit-section-show-level-2)
3 (magit-section-show-level-3)
4 (magit-section-show-level-4)
</pre></div>
</dd>
<dd>
Muestra las secciones que rodean la sección actual hasta el nivel N.
</dd>
<dd>
<div class="pre"><pre>
M-1 (magit-section-show-level-1-all)
M-2 (magit-section-show-level-2-all)
M-3 (magit-section-show-level-3-all)
M-4 (magit-section-show-level-4-all)
</pre></div>
</dd>
<dd>Mostrar todas las secciones hasta el nivel N.</dd>
<dt></dt>
<dd>
Algunas funciones, que se usan para implementar los comandos anteriores, también se exponen como comandos en sí mismos. Por defecto no hay teclas vinculadas a estos comandos,
ya que generalmente se perciben como mucho menos útiles. Pero tu experiencia puede variar.
</dd>
<dt>Comando: <samp>magit-section-show</samp></dt>
<dd>
Muestra el cuerpo de la sección actual.
</dd>
<dt>Comando: <samp>magit-section-hide</samp></dt>
<dd>
Ocultar el cuerpo de la sección actual.
</dd>
<dt>Comando: <samp>magit-section-show-headings</samp></dt>
<dd>
Muestra recursivamente los encabezados de los hijos de la sección actual. Sólo los encabezados. Los cuerpos de texto mostrados anteriormente se ocultan.
</dd>
<dt>Comando: <samp>magit-section-show-children</samp></dt>
<dd>
Muestra recursivamente los cuerpos de los hijos de la sección actual. Con un argumento prefijo muestra los hijos hasta el nivel de la sección actual, y oculta los hijos más
profundos.
</dd>
<dt>Comando: <samp>magit-section-hide-children</samp></dt>
<dd>
Oculta recursivamente los cuerpos de los hijos de la sección actual.
</dd>
<dt>Comando: <samp>magit-section-toggle-children</samp></dt>
<dd>
Alterna la visibilidad de los cuerpos de los hijos de la sección actual.
</dd>
</dl>
<p>
Cuando se crea un búfer por primera vez, algunas secciones se muestran expandidas mientras que otras no. Esto está codificado. Cuando se actualiza un búfer, se conserva la
visibilidad anterior. La visibilidad inicial de ciertas secciones también se puede sobrescribir utilizando el gancho <samp>magit-section-set-visibility-hook</samp>.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-section-initial-visibility-alist</samp></dt>
<dd>
Esta opción se puede usar para anular la visibilidad inicial de las secciones. En el futuro también se usará para definir los valores predeterminados, pero actualmente el valor
predeterminado de una sección sigue estando codificado.
</dd>
<dd>
El valor es una lista. Cada elemento asigna un tipo de sección o linaje al estado de visibilidad inicial de dichas secciones. El estado debe ser uno de los siguientes: mostrar u
ocultar, o una función que devuelva uno de estos símbolos. Se llama a una función con la sección como único argumento.
</dd>
<dd>
Use el comando <samp>magit-describe-section-briefly</samp> para determinar el linaje o tipo de una sección. El vector en la salida es el linaje de la sección y el tipo es el primer
elemento de ese vector. Se pueden usar comodines, véase <samp>magit-section-match</samp>.
</dd>
<dt>Opción de Usuario: </dt>
<dd>
Esta opción controla para qué secciones se debe restaurar el estado de visibilidad anterior si una sección desaparece y más tarde vuelve a aparecer. El valor es un booleano o una
lista de tipos de secciones. Si es <samp>t</samp>, se guarda en caché la visibilidad de todas las secciones. En caso contrario, sólo se hace para las secciones cuyo tipo coincide con
uno de los tipos de la lista.
</dd>
<dd>
Esto requiere que la función <samp>magit-section-cached-visibility</samp> sea miembro de <samp>magit-section-set-visibility-hook</samp>.
</dd>
<dt>Variable: <samp>magit-section-set-visibility-hook</samp></dt>
<dd>
Este gancho se ejecuta cuando se crea un búfer por primera vez y también cuando se actualiza un búfer existente, y se usa para determinar la visibilidad de la sección que se
está insertando en ese momento.
</dd>
<dd>
Cada función se llama con un argumento, la sección que se está insertando. Debe devolver <samp>hide</samp> o <samp>show</samp>, o para dejar la visibilidad indefinida: <samp>nil</samp>. Si
ninguna función decide sobre la visibilidad y el buffer se está refrescando, entonces se preserva la visibilidad; o si el buffer se está creando, entonces se usa el valor por
defecto codificado.
</dd>
<dd>
Normalmente esto sólo debería usarse para establecer la visibilidad inicial, pero no durante las actualizaciones. Si <samp>magit-insert-section--oldroot</samp> es distinto de nil,
entonces el búfer se está actualizando y estas funciones deberían devolver inmediatamente <samp>nil</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-section-visibility-indicator</samp></dt>
<dd>
Esta opción controla si y cómo indicar que una sección puede expandirse/colapsarse.
</dd>
<dd>
Si es nil, no se muestra ningún indicador de visibilidad. En caso contrario, el valor debe tener una de estas dos formas:
<ul>
<li>
<samp>(EXPANDABLE-BITMAP . COLLAPSIBLE-BITMAP)</samp><br>
Ambos valores tienen que ser variables cuyos valores sean bitmaps de franja. En este caso, cada sección que se pueda expandir o contraer tendrá un indicador en el margen
izquierdo.<br>
Para proporcionar un relleno extra alrededor del indicador, establezca <samp>left-fringe-width</samp> en <samp>magit-mode-hook</samp>, por ejemplo:
<div class="pre"><pre>
(add-hook 'magit-mode-hook (lambda ()
(setq left-fringe-width 20)))
</pre></div>
</li>
<li>
<samp>(STRING . BOOLEAN)</samp><br>
En este caso se muestra STRING (normalmente una elipsis) al final del encabezamiento de cada sección colapsada. Las secciones expandidas no reciben ningún indicador. El
cdr controla si la aparición de estas elipsis tiene en cuenta el resaltado de las secciones. Hacerlo podría tener un impacto en el rendimiento, mientras que no hacerlo es
un poco feo.
</li>
</ul>
</dd>
</dl>
<h2 id="seccion_ganchos_hooks">Sección Ganchos (Hooks)<a href="#seccion_ganchos_hooks"></a></h2>
<p>
Las secciones que se insertan en determinados búferes se controlan con ganchos. Esto incluye los buffers status y refs. Para otros buffers, por ejemplo, log y diff, esto no es
posible. El comando <samp>magit-describe-section</samp> puede usarse para ver qué gancho (si lo hay) fue responsable de insertar la sección en cuestión.
</p>
<p>
Para buffers cuyas secciones pueden ser personalizadas por el Usuario, existe una variable hook llamada <samp>magit-TYPE-sections-hook</samp>. Este gancho debe cambiarse usando
<samp>magit-add-section-hook</samp>. Evite usar <samp>add-hooks</samp> o la interfaz Custom.
</p>
<p>
Las distintas variables hook de sección disponibles se describen más adelante en este manual junto con las "funciones insertadoras de sección" correspondientes.
</p>
<dl>
<dt>Función: <samp>magit-add-section-hook</samp> <i>hook function &optional at append local</i></dt>
<dd>
Añade la función FUNCTION al valor de la sección gancho HOOK.
</dd>
<dd>
Añade FUNCTION al principio de la lista de ganchos a menos que la opción APPEND no sea nula, en cuyo caso FUNCTION se añade al final. Si FUNCTION ya es un miembro entonces se
mueve a la nueva ubicación.
</dd>
<dd>
Si el opcional AT no es nulo y es un miembro de la lista de ganchos, entonces añade FUNCTION junto a él. Añade antes o después de AT, o sustituye AT por FUNCTION dependiendo dez2
APPEND. Si APPEND es el símbolo replace, sustituye AT por FUNCTION. Para cualquier otro valor no nulo coloca FUNCTION justo después de AT. Si es nulo, coloca FUNCTION justo antes
de AT. Si FUNCIÓN ya es un miembro de la lista pero AT no, entonces deja FUNCIÓN donde ya está.
</dd>
<dd>
Si LOCAL opcional no es nulo, entonces modifica el valor local del buffer del gancho en lugar de su valor global. Esto hace que el gancho sea local copiando el valor por defecto.
Esa copia se modifica a continuación.
</dd>
<dd>
HOOK debe ser un símbolo. Si HOOK es void, primero se pone a nil. El valor de HOOK no debe ser una única función hook. FUNCTION debe ser una función que no toma argumentos e
inserta una o múltiples secciones en un punto, desplazando el punto hacia adelante. FUNCTION puede elegir no insertar su(s) sección(es), cuando hacerlo no tenga sentido. No se
debe abusar de ella para obtener otros efectos secundarios.
</dd>
</dl>
<p>
Para eliminar una función de un gancho de sección, use <samp>remove-hook</samp>.
</p>
<h2 id="tipos_y_valores_de_seccion">Tipos y Valores de Sección<a href="#tipos_y_valores_de_seccion"></a></h2>
<p>
Cada sección tiene un tipo, por ejemplo <samp>hunk</samp>, <samp>file</samp> y <samp>commit</samp>. Las instancias de determinados tipos de sección también tienen un valor. El valor de una
sección de tipo <samp>file</samp>, por ejemplo, es un nombre de archivo.
</p>
<p>
Por lo general, los Usuarios no tienen que preocuparse por el tipo y el valor de una sección, pero conocerlos puede ser útil en ocasiones.
</p>
<dl>
<dt><kbd>H</kbd> (<i><samp>H</samp></i>, <samp>magit-describe-section</samp>)</dt>
<dd>
Este comando muestra información sobre la sección en el punto en un búfer separado.
</dd>
<dt>Comando: <samp>magit-describe-section-briefly</samp></dt>
<dd>
Este comando muestra información sobre la sección en el punto del área de eco, como <samp>#&lt;magit-section VALUE [TYPE PARENT-TYPE...] BEGINNING-END&gt;</samp>.
</dd>
</dl>
<p>
Muchos comandos se comportan de manera diferente dependiendo del tipo de la sección en el punto y / o de alguna manera consumen el valor de esa sección. Pero esa es sólo una de las
razones por las que la misma tecla puede hacer algo diferente, dependiendo de qué sección esté activa.
</p>
<p>
Además, para cada tipo de sección <b>se puede</b> definir un mapa de teclas, llamado <samp>magit-TYPE-section-map</samp>. Ese mapa de teclado se usa como mapa de teclado de propiedades de
texto de todo el texto perteneciente a cualquier sección del tipo respectivo. Si dicho mapa no existe para un determinado tipo, puede definirlo usted mismo y se usará automáticamente.
</p>
<h2 id="opciones_de_seccion">Opciones de sección<a href="#opciones_de_seccion"></a></h2>
<p>En esta sección se describen las opciones que no sólo afectan a un tipo determinado de secciones. Como puede ver, no hay muchas.</p>
<dl>
<dt>Opción de Usuario: <samp>magit-section-show-child-count</samp></dt>
<dd>
Si se añade el número de hijos a los títulos de las secciones. Esto sólo afecta a las secciones que podrían beneficiarse de esta información.
</dd>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_modos_y_buferes" title="Modos y Búferes">Anterior</label><label class="btn next" accesskey="n" for="_comandos_transitorios" title="Comandos Transitorios">Siguiente</label></div>
<div class="page" rel="comandos_transitorios"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Comandos Transitorios</li></ul><hr></div>
<h1 id="comandos_transitorios">Comandos Transitorios<a href="#comandos_transitorios"></a></h1>
<p>
Muchos comandos Magit se implementan como comandos transitorios. En primer lugar, el Usuario invoca un comando prefijo, que hace que sus argumentos infijos y comandos sufijos se
muestren en el área de eco. A continuación, el Usuario opcionalmente algunos argumentos infijos y finalmente invoca uno de los comandos sufijos.</p>
<p>
Esto se implementa en la biblioteca <samp>transient</samp>. Las versiones anteriores de Magit utilizaban el paquete <samp>magit-popup</samp> e incluso versiones anteriores la biblioteca
<samp>magit-key-mode</samp>
</p>
<p>
Transient está documentado en <a href="https://magit.vc/manual/transient/index.html#Top" target="new">(transient)Top</a>.
</p>
<dl>
<dt>
<kbd>Ctrl</kbd>-<kbd>x</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> (<samp>magit-dispatch</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>g</kbd> (<samp>magit-dispach</samp>)
<dd>
Este comando de prefijo transitorio vincula la mayoría de los otros comandos de prefijo de Magit como comandos de sufijo y los muestra en un búfer temporal hasta que se
invoca uno de ellos. La invocación de un subprefijo de este tipo hace que se vinculen y muestren los sufijos de ese comando en lugar de los de <samp>magit-dispatch</samp>.
</dd>
<dd>
Este comando es también, o especialmente, útil fuera de los buffers de Magit, así que Magit por defecto lo vincula a <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd>
(<samp>C-c M-g</samp>) en el mapa global de teclas. <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>g</kbd> (<samp>C-c g</samp>) sería un mejor enlace, pero no podemos usarlo por defecto, porque
esa secuencia de teclas está reservada para el Usuario. Vea <a href="#@GENDOC:global_bindings@" onclick="c('@GENDOC:global_bindings@')">Global Bindings</a> para saber más sobre las combinaciones de teclas por defecto y recomendadas.
</dd>
</dt>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_secciones" title="Secciones">Anterior</label><label class="btn next" accesskey="n" for="_argumentos_transitorios_y_variables_buffer" title="Argumentos transitorios y variables buffer">Siguiente</label></div>
<div class="page" rel="argumentos_transitorios_y_variables_buffer"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Argumentos transitorios y variables buffer</li></ul><hr></div>
<h1 id="argumentos_transitorios_y_variables_buffer">Argumentos transitorios y variables buffer<a href="#argumentos_transitorios_y_variables_buffer"></a></h1>
<p>
Los argumentos infijos de muchos de los comandos prefijo transitorios de Magit dejan de tener efecto una vez que el comando git al que se llama con esos argumentos ha vuelto. Los
comandos que crean un commit son un buen ejemplo de esto. Si el Usuario cambia los argumentos, eso sólo afecta a la siguiente invocación de un comando sufijo. Si el mismo comando de
prefijo transitorio se invoca de nuevo más tarde, entonces los argumentos se restablecen inicialmente al valor predeterminado. Este valor por defecto puede establecerse para la
sesión actual de Emacs o guardarse permanentemente, ver <a href="https://magit.vc/manual/transient/Saving-Values.html#Saving-Values" target="new">(transient)Saving Values</a>. También es posible
recorrer los conjuntos de argumentos usados previamente usando <kbd>Ctrl</kbd>-<kbd>Alt</kbd>-<kbd>p</kbd> (<samp>C-M-p</samp>) y <kbd>Ctrl</kbd>-<kbd>Alt</kbd>-<kbd>n</kbd>
(<samp>C-M-n</samp>), <a href="https://magit.vc/manual/transient/Using-History.html#Using-History" target="new">ver (transient)Using History</a>.
</p>
<p>
Sin embargo, los argumentos infijos de muchos otros comandos transitorios continúan teniendo efecto incluso después de que el comando git que fue llamado con esos argumentos haya
vuelto. Los comandos más importantes de este tipo son los que muestran un diff o log en un buffer dedicado. Obviamente, sus argumentos siguen teniendo efecto mientras se muestra el
diff o log correspondiente. Además, los argumentos utilizados se almacenan en variables locales del buffer para futuras referencias.
</p>
<p>
Para los comandos del segundo grupo no siempre es deseable restablecer sus argumentos al valor global cuando se vuelve a invocar el comando de prefijo transitorio.
</p>
<p>
Como se mencionó anteriormente, es posible recorrer los conjuntos de argumentos utilizados anteriormente mientras una ventana emergente transitoria está visible. Esto significa que
siempre podríamos restablecer los argumentos infijales al valor predeterminado porque el conjunto de argumentos que está activo en el búfer existente está a sólo unos
<kbd>Ctrl</kbd>-<kbd>Alt</kbd>-<kbd>p</kbd> (<samp>C-M-p</samp>) de distancia. Magit puede configurarse para que se comporte así, pero como espero que la mayoría de los usuarios no lo
encuentren muy conveniente, no es el valor por defecto.
</p>
<p>
También tenga en cuenta que es posible cambiar los argumentos diff y log usados en el buffer actual (incluyendo el buffer de estado, que contiene secciones diff y log) usando los
respectivos comandos de prefijo transitorio "refresh" en <samp>D</samp> y <samp>L</samp>. (<samp>d</samp> y <samp>l</samp> por otro lado están pensados para cambiar <b>qué</b> diff o log se está
mostrando. También es posible cambiar <b>cómo</b> se está mostrando el diff o log al mismo tiempo, pero si sólo quiere hacer esto último, entonces debería usar las variantes
refresh). Debido a que estos prefijos secundarios de diff y log transitorios tratan de <b>cambiar</b> los argumentos usados en el buffer actual, siempre empiezan con el conjunto de
argumentos que están actualmente en efecto en ese buffer.
</p>
<p>
Algunos comandos suelen invocarse directamente aunque también pueden invocarse como sufijo de un comando de prefijo transitorio. El más destacado es <samp>magit-show-commit</samp>, que
suele invocarse tecleando <kbd>Enter</kbd> (<samp>RET</samp>) mientras point está en un commit en un log, pero también puede invocarse desde el prefijo transitorio <samp>magit-diff</samp>.
</p>
<p>
Cuando un comando de este tipo se invoca directamente, entonces es importante reutilizar los argumentos tal y como se especifican en los respectivos valores locales del buffer, en
lugar de usar los argumentos por defecto. Imagine que pulsa <kbd>Enter</kbd> (<samp>RET</samp>) en un log para el commit en el punto en un buffer diferente y luego usa <kbd>D</kbd>
(<samp>D</samp>) para cambiar cómo se muestra el diff en ese buffer. Luego pulsa <kbd>Enter</kbd> (<samp>RET</samp>) en otro commit para mostrar eso en su lugar y los argumentos del diff se
restablecen a los predeterminados. No es resulta agradable; así que Magit no hace eso por defecto.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-prefix-use-buffer-arguments</samp></dt>
<dd>
Esta opción controla si los argumentos infijos mostrados inicialmente en ciertos comandos de prefijo transitorio se basan en los argumentos que están actualmente en vigor en el
buffer que actualizan sus sufijos.
</dd>
<dd>
Esta opción afecta a las órdenes de prefijo transitorio <samp>magit-diff</samp> y <samp>magit-log</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-direct-use-buffer-arguments</samp></dt>
<dd>
Esta opción controla si ciertos comandos, cuando se invocan directamente (es decir, no como el sufijo de un comando de prefijo transitorio), usan los argumentos que están
actualmente activos en el búfer que están a punto de actualizar. La alternativa es utilizar el valor por defecto para estos argumentos, lo que podría cambiar los argumentos que
se utilizan en el buffer.
</dd>
</dl>
<p>
Los valores válidos para las dos opciones anteriores son:
<ul>
<li><samp>always</samp>: Usa siempre el conjunto de argumentos que esté activo en ese momento en el búfer correspondiente, siempre que ese búfer exista, por supuesto.</li>
<li><samp>selected</samp> o <samp>t</samp>: Usa el conjunto de argumentos del búfer respectivo, pero sólo si se muestra en una ventana del marco actual. Este es el valor por defecto
para ambas variables.</li>
<li><samp>current</samp>: Usa el conjunto de argumentos del búfer respectivo, pero sólo si es el búfer actual.<br></li>
<li><samp>never</samp>: No usar nunca el conjunto de argumentos del búfer respectivo.</li>
</ul>
</p>
<p>Me temo que la cosa se complica todavía más:</p>
<ul>
<li>
Los argumentos globales diff y log se establecen individualmente para cada modo soportado. Los argumentos diff, por ejemplo, tienen valores diferentes en los búferes
<samp>magit-diff-mode</samp>, <samp>magit-revision-mode</samp>, <samp>magit-merge-preview-mode</samp> y <samp>magit-status-mode</samp>. Establecer o guardar el valor para un modo no cambia el
valor para otros modos. Sin embargo, el historial se comparte.
</li>
<li>
Cuando <samp>magit-show-commit</samp> se invoca directamente desde un buffer de registro, entonces el filtro de fichero se recoge de ese buffer, no del buffer de revisión o de los
argumentos diff del modo glogal.
</li>
<li>
Aunque son sufijos del prefijo diff, <samp>magit-show-commit</samp> y <samp>magit-stash-show</samp> no usan el buffer diff usado por los comandos diff, en su lugar usan los buffers
dedicados de revisión y stash.<br>
En el momento de invocar el prefijo diff, Magit desconoce cuál de los comandos sufijo va a llamar. Aunque no es seguro, lo más frecuente es que los Usuarios invoquen uno de los
comandos que utilizan el buffer diff, por lo que los argumentos iniciales del infijo son los utilizados en ese buffer. Sin embargo, si llama uno de estos comandos directamente,
entonces Magit sabe que debe usar los argumentos del buffer de revisión resp. stash.
</li>
<li>
El prefijo log también incluye comandos reflog, pero estos comandos no utilizan los argumentos log.
</li>
<li>
Si <samp>magit-show-refs</samp> se llama desde un búfer <samp>magit-refs-mode</samp>, entonces actúa como un prefijo de refresco y por lo tanto utiliza incondicionalmente los argumentos
del búfer como argumentos iniciales. Si se invoca en otro lugar con un argumento de prefijo, entonces actúa como prefijo regular y por lo tanto respeta
<samp>magit-prefix-use-buffer-arguments</samp>. Si se invoca en otro lugar sin un argumento de prefijo, entonces actúa como un comando directo y por lo tanto respeta
<samp>magit-direct-use-buffer-arguments</samp>.
</li>
</ul><br style="clear:both;"><label class="btn prev" accesskey="p" for="_comandos_transitorios" title="Comandos Transitorios">Anterior</label><label class="btn next" accesskey="n" for="_finalizacion_confirmacion_y_seleccion" title="Finalización, Confirmación y Selección">Siguiente</label></div>
<div class="page" rel="finalizacion_confirmacion_y_seleccion"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Finalización, Confirmación y Selección</li></ul><hr></div>
<h1 id="finalizacion_confirmacion_y_seleccion">Finalización, Confirmación y Selección<a href="#finalizacion_confirmacion_y_seleccion"></a></h1>
<h2 id="confirmacion_de_acciones">Confirmación de acciones<a href="#confirmacion_de_acciones"></a></h2>
<p>
Por defecto, muchas acciones que potencialmente podrían conducir a la pérdida de datos tienen que ser confirmadas. Esto incluye muchas acciones muy comunes, por lo que rápidamente
puede llegar a ser molesto. Muchas de estas acciones se pueden deshacer y si has pensado en cómo deshacer ciertos errores, entonces debería ser seguro desactivar la confirmación para
las acciones respectivas.
</p>
<p>
La opción <samp>magit-no-confirm</samp> puede usarse para decirle a Magit que realice ciertas acciones sin que el Usuario tenga que confirmarlas. Tenga en cuenta que, aunque esta opción
sólo puede usarse para desactivar la confirmación de un conjunto específico de acciones, la siguiente sección explica otra forma de decirle a Magit que haga menos preguntas.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-no-confirm</samp></dt>
<dd>
El valor de esta opción es una lista de símbolos, que representan acciones que no tienen que ser confirmadas por el Usuario antes de ser ejecutadas.
</dd>
<dd>
Por defecto, muchos comandos potencialmente peligrosos piden confirmación al Usuario. Cada uno de los siguientes símbolos representa una acción que, cuando se invoca
involuntariamente o sin ser plenamente consciente de las consecuencias, podría provocar roturas. En muchos casos hay varios comandos que realizan variaciones de una determinada
acción, por lo que no usamos los nombres de los comandos sino símbolos más genéricos.
</dd>
<ul>
<li>
Aplicar cambios:
<ul>
<li><samp>discard</samp> Descarta uno o más cambios (es decir, hunks o el diff completo de un fichero) pierde ese cambio, obviamente.</li>
<li><samp>reverse</samp> Revertir uno o más cambios normalmente puede deshacerse revirtiendo la reversión.</li>
<li><samp>stage-all-changes</samp>, <samp>unstage-all-changes</samp>: Cuando hay archivos añadidos o no al área de preparación, sacarlos de está área (staging area) destruiría
esta acción. Por supuesto, esto también se aplica cuando se saca del area de preparación un único cambio, solo que se pierde menos y se hace tan a menudo que tener
que confirmarlo cada vez sería inaceptable.</li>
</ul>
</li>
<li>
Archivos:
<ul>
<li><samp>delete</samp> Cuando se borra un archivo que aún no está siendo rastreado por Git, entonces se pierde por completo, no sólo los últimos cambios. Muy peligroso.</li>
<li><samp>trash</samp> En lugar de borrar un archivo también se puede mover a la papelera del sistema. Obviamente mucho menos peligroso que borrarlo.<br>Vea también la opción
<samp>magit-delete-by-moving-to-trash</samp></li>
<li><samp>resurrect</samp> Un archivo borrado puede resucitarse fácilmente "borrando" el borrado, lo que se hace utilizando el mismo comando que se utilizó para borrar el
mismo archivo en primer lugar.</li>
<li><samp>untrack</samp> Se puede deshacer el rastreo de un archivo rastreándolo de nuevo.</li>
<li><samp>rename</samp> Renombrar un fichero puede deshacerse fácilmente.</li>
</ul>
</li>
<li>
Secuencias:
<ul>
<li><samp>reset-bisect</samp> Abortar (conocido en Git como "resetear") una operación de bifurcación pierde toda la información recopilada hasta el momento.</li>
<li><samp>abort-rebase</samp> Abortar un rebase elimina todos los commits ya modificados, pero es posible restaurarlos desde el reflog.</li>
<li><samp>abort-merge</samp> Al abortar una fusión se eliminan todas las resoluciones de conflictos ya realizadas por el Usuario.</li>
<li><samp>merge-dirty</samp> Fusionar con un árbol de trabajo sucio puede dificultar la vuelta al estado anterior al inicio de la fusión.</li>
</ul>
</li>
<li>
Referencias:
<ul>
<li><samp>delete-unmerged-branch</samp> Una vez que una rama ha sido eliminada, sólo puede ser restaurada utilizando herramientas de recuperación de bajo nivel proporcionadas
por Git. E incluso entonces el reflog desaparece. El Usuario siempre tiene que confirmar la eliminación de una rama aceptando la opción por defecto (o seleccionando
otra rama), pero cuando una rama aún no se ha fusionado, asegúrese también de que el Usuario es consciente de ello.</li>
<li><samp>delete-pr-remote</samp> Al borrar una rama que fue creada a partir de un pull-request y si no existen otras ramas en esa remota, entonces magit-branch-delete ofrece
borrar la remota también. Esto debería ser seguro porque sólo ocurre si no existen otras referencias en el espacio de nombres de las remotas, y puede recrear la
remota si es necesario.</li>
<li><samp>drop-stashes</samp> Eliminar un stash es peligroso porque Git almacena stashes en el reflog. Una vez que se elimina un stash, no hay vuelta atrás sin utilizar las
herramientas de recuperación de bajo nivel proporcionadas por Git. Cuando se elimina un único stash, el usuario siempre tiene que confirmar aceptando el valor por
defecto (o seleccionando otro). Esta acción sólo afecta a la eliminación de varios stashes a la vez.</li>
</ul>
</li>
<li>
Publicación:
<ul>
<li><samp>set-and-push</samp> Cuando se empuja al upstream o al <samp>push-remote</samp> y eso no está realmente configurado todavía, entonces el Usuario puede establecer primero
el objetivo. Si Él/Ella confirma el valor por defecto demasiado rápido, podrían terminar enviando a la rama equivocada y si el repositorio remoto está configurado
para no permitir la corrección de tales errores, entonces eso puede ser bastante embarazoso y molesto.</li>
</ul>
</li>
<li>
Editar historial publicado:
<ul>
Sin añadir estos símbolos aquí, se le advertirá antes de editar confirmaciones (commits) que ya han sido empujados a una de las ramas listadas en
<samp>magit-published-branches</samp>.
<li><samp>amend-published</samp> Afecta a la mayoría de los comandos que modifican a "HEAD".</li>
<li><samp>rebase-published</samp> Afecta a los comandos que realizan rebases interactivos. Esto incluye comandos del commit transient que modifican un commit distinto de
"HEAD", es decir, las diversas variantes de fixup y squash.</li>
<li><samp>edited-published</samp> Affects the commands <samp>magit-edit-line-commit</samp> y <samp>magit-diff-edit-hunk-commit</samp> Estos dos comandos hacen que sea bastante fácil
editar accidentalmente una confirmacion publicada, por lo que debería pensarlo dos veces antes de configurarlos para que no pidan confirmación.</li>
</ul>
Para desactivar completamente la confirmación, añada aquí los tres símbolos o establezca <samp>magit-published-branches</samp> a <samp>nil</samp>.
</li>
<li>
Varios:
<ul>
<li><samp>kill-process</samp> Rara vez hay una razón para matar a un proceso.</li>
</ul>
</li>
<li>
Configuración global:
<dd>
En lugar de añadir todos los símbolos anteriores al valor de esta opción, también puede establecerla en el átomo t, que tiene el mismo efecto que añadir todos los
símbolos anteriores. Hacer eso es ciertamente una mala idea, especialmente porque otros símbolos podrían ser añadidos en el futuro. Así que incluso si no quiere que se le
pida confirmación para ninguna de estas acciones, es mejor que añada todos los símbolos respectivos individualmente.
</dd>
<dd>
Cuando <samp>magit-wip-before-change-mode</samp> está habilitado, las siguientes acciones pueden deshacerse fácilmente: <samp>discard</samp>, <samp>reverse</samp>,
<samp>stage-all-changes</samp> y <samp>unstage-all-changes</samp>. Sólo si este modo está activado <samp>safe-with-wip</samp> tiene el mismo efecto que añadir todos estos símbolos
individualmente.
</dd>
</li>
</ul>
</dl>
<h2 id="finalizacion_y_confirmacion">Finalización y confirmación<a href="#finalizacion_y_confirmacion"></a></h2>
<p>
Muchos comandos Magit piden al Usuario que seleccione entre una lista de posibles acciones, ofreciendo la opción más probable como predeterminada. Para muchos de estos comandos, el
valor predeterminado es la cosa en el punto, siempre que realmente sea una cosa válida sobre la que actuar. Para muchos comandos que actúan sobre una rama, la rama actual sirve por
defecto si no hay rama en el punto.
</p>
<p>
Estos comandos combinan la petición de confirmación y la petición de un objetivo sobre el que actuar en una única acción. El Usuario puede confirmar el objetivo por defecto
utilizando <kbd>RETURN</kbd> (<samp>RET</samp>) o abortar utilizando <kbd>Ctrl</kbd>-<kbd>g</kbd> (<samp>C-g</samp>). Esto es similar a un prompt <samp>y-or-n-p</samp>, pero las teclas para
confirmar o abortar difieren.
</p>
<p>
Al mismo tiempo, el Usuario también tiene la oportunidad de seleccionar otro objetivo, lo cual es útil porque para algunos comandos y/o en algunas situaciones es posible que desee
seleccionar la acción antes de seleccionar el objetivo moviéndose hacia él.
</p>
<p>
Sin embargo, es posible que para algunos comandos siempre quiera utiliza el objetivo predeterminado, si lo hay, o incluso que quiera que el comando actúe sobre el predeterminado
sin requerir confirmación alguna. La opción <samp>magit-dwim-selection</samp> puede utilizarse para configurar ciertos comandos a tal efecto.
</p>
<p>
Tenga en cuenta que cuando la región está activa, muchos comandos actúan sobre las cosas seleccionadas utilizando un mecanismo basado en la región, en muchos casos después de pedir
confirmación. Este mecanismo basado en la región se denomina "selección" y se describe en detalle en la siguiente sección. Cuando existe una selección que es válida para el comando
invocado, entonces ese comando nunca ofrece actuar sobre otra cosa, y si pide confirmación no está controlado por esta opción.
</p>
<p>
Tenga en cuenta también que Magit pide confirmación de ciertas acciones que no están asociadas a la finalización (o a la selección). Estos diálogos tampoco se ven afectados por esta
opción y se describen en la sección anterior.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-dwim-selection</samp></dt>
<dd>
Esta opción puede utilizarse para indicar a determinados comandos que utilicen la cosa en cuestión en lugar de pedir al Usuario que seleccione un candidato sobre el que actuar,
con o sin confirmación.
</dd>
</dl>
<p>
El valor tiene la siguiente forma <samp>((COMMAND nil|PROMPT DEFAULT)...)</samp>
</p>
<ul>
<li>
COMANDO es el comando que no debe pedir una elección. Para que tenga efecto, el comando tiene que usar la función <samp>magit-completing-read</samp> o una función de utilidad que a
su vez use esa función.
</li>
<li>
Si el comando utiliza <samp>magit-completing-read</samp> varias veces, entonces PROMPT puede usarse para afectar sólo a uno de estos usos. PROMPT, si no es nulo, es una expresión
regular que se utiliza para comparar con el argumento PROMPT pasado a <samp>magit-completing-read</samp>.
</li>
<li>
DEFAULT especifica cómo utilizar el valor por defecto. Si es <samp>t</samp>, entonces el argumento DEFAULT pasado a <samp>magit-completing-read</samp> se utiliza sin confirmación. Si es
<samp>ask</samp>, se da al Usuario la oportunidad de abortar. DEFAULT también puede ser <samp>nil</samp>, en cuyo caso la entrada no tiene efecto.
</li>
</ul>
<h2 id="la_seleccion">La Selección<a href="#la_seleccion"></a></h2>
<p>
</p>
<p>
Si la región está activa, muchos comandos Magit actúan sobre las cosas seleccionadas utilizando un mecanismo basado en la región en lugar de en una sola cosa. Cuando la región no
está activa, estos comandos actúan sobre el objeto en cuestión o leen un único objeto sobre el que actuar. Esto se describe en la sección anterior - esta sección sólo cubre cómo se
seleccionan múltiples cosas, cómo se visualiza, y cómo ciertos comandos se comportan cuando ese es el caso.
</p>
<p>
El mecanismo de Magit para seleccionar múltiples cosas, o más bien secciones que representan estas cosas, se basa en la región de Emacs, pero el área que Magit considera seleccionada
es normalmente mayor que la región y se aplican restricciones adicionales.
</p>
<p>
Magit distingue entre una región que cumple los requisitos para formar una selección Magit válida y una región que no los cumple. Si la región no cumple los requisitos, entonces se
visualiza como en otros buffers de Emacs. Si la región sí cumple los requisitos para formar una selección Magit, entonces la selección siempre se visualiza, mientras que la región en
sí sólo se visualiza si empieza y acaba en la misma línea.
</p>
<p>
Para que una región pueda considerarse una selección Magit, debe comenzar en el encabezamiento de una sección y terminar en el encabezamiento de una sección hermana. Tenga en cuenta
que si el final de la región está al principio del encabezamiento de una sección (es decir, al principio de una línea), se considera que esa sección está dentro de la selección.
</p>
<p>
Esto no es consistente con la forma en que la región se trata normalmente en Emacs - si la región termina al principio de una línea, entonces esa línea está fuera de la región.
Debido a cómo Magit visualiza la selección, debería ser obvio que existe esta diferencia.
</p>
<p>
No todos los comandos actúan sobre todas las selecciones válidas. Algunos comandos ni siquiera tienen en cuenta la ubicación del punto, otros pueden actuar sobre la sección en el
punto pero no pueden actuar sobre la selección, e incluso los comandos que sí pueden actuar sobre la selección sólo lo hacen si ésta selecciona cosas sobre las que pueden actuar.
</p>
<p>
Esta es la razón principal por la que la selección debe incluir la sección en el punto. Incluso si existe una selección, el comando invocado puede ignorarla, en cuyo caso puede
actuar sólo sobre la sección actual. Es mucho más seguro actuar sólo sobre la sección actual pero no sobre las otras secciones seleccionadas que actuar sobre la sección actual en
lugar de sobre las secciones seleccionadas. Esto último sería mucho más sorprendente y si la sección actual siempre forma parte de la selección, entonces eso no puede ocurrir.
</p>
<dl>
<dt>Variable: <samp>magit-keep-region-overlay</samp></dt>
<dd>
Esta variable controla si la región se visualiza de la forma habitual incluso cuando existe una selección Magit válida o una región interna a la búsqueda. Consulte el doc-string
para obtener más información.
</dd>
</dl>
<h2 id="la_region_de_una_parte_interna">La Región de una Parte Interna<a href="#la_region_de_una_parte_interna"></a></h2>
<p>Algo relacionada con la selección Magit descrita en la sección anterior está la región interna de búsqueda.</p>
<p>
Al igual que la selección, la región de búsqueda interna se basa en la región Emacs pero hace que esa región no se visualice como lo haría en otros buffers Emacs, e incluye la línea
en la que termina la región incluso si termina al principio de esa línea.
</p>
<p>
A diferencia de la selección, que se basa en una región que debe comenzar en el encabezamiento de una sección y terminar en la sección de una sección hermana, la región interna de un
trozo debe comenzar dentro del cuerpo de una sección de un trozo y terminar en el cuerpo de la misma sección.
</p>
<p>
La región interna del trozo es respetada por los comandos "apply", que pueden, entre otros objetivos, actuar sobre un trozo. Si la región interna de la pieza está activa, estos
comandos actúan sólo sobre la parte marcada de la pieza en lugar de sobre la pieza completa.
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_argumentos_transitorios_y_variables_buffer" title="Argumentos transitorios y variables buffer">Anterior</label><label class="btn next" accesskey="n" for="_el_minibuffer" title="El Minibuffer">Siguiente</label></div>
<div class="page" rel="el_minibuffer"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;El Minibuffer</li></ul><hr></div>
<h1 id="el_minibuffer">El Minibuffer<a href="#el_minibuffer"></a></h1>
<p>
El <i>minibuffer</i> es el lugar donde los comandos de Emacs leen los argumentos complicados, como: nombres de archivos, nombres de los buffers, nombres de las ordenes del Editor o las
expresiones de Lisp. Lo llamamos "minibuffer" porque es un buffer de propósito especial con una pequeña cantidad de espacio en pantalla. En este espacio, puede usar los comandos de
edición habituales de Emacs para editar el texto del argumento.
</p>
<h2 id="soporte_para_marcos_de_autocompletado">Soporte para Marcos de Autocompletado<a href="#soporte_para_marcos_de_autocompletado"></a></h2>
<p>
La opción incorporada <samp>completing-read-function</samp> especifica la función de bajo nivel utilizada por <samp>completing-read</samp> para pedir al Usuario que seleccione de una lista de
opciones. Su valor por defecto es <samp>completing-read-default</samp>. Los marcos de compleción alternativos suelen activarse sustituyendo su propia implementación.
</p>
<p>
Por razones históricas Magit proporciona una opción similar llamada <samp>magit-completing-read-function</samp>, que sólo controla la función de bajo nivel usada por
<samp>magit-completing-read</samp>. Esta opción también hace posible usar un mecanismo de completado diferente para Magit que para el resto de Emacs, pero no es recomendable hacerlo.
</p>
<p>
Lo más probable es que no tenga que personalizar la opción específica de magit para usar un marco de compleción alternativo. Por ejemplo, si activa <samp>ivy-mode</samp>, entonces Magit
lo respetará, y si activa <samp>helm-mode</samp>, también.
</p>
<p>
Sin embargo, si quiere usar Ido, entonces <samp>ido-mode</samp> no funcionará. También tendrá que instalar el paquete <samp>ido-completing-read+</samp> y usar
<samp>magit-ido-completing-read</samp> como <samp>magit-completing-read-function</samp>.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-completing-read-function</samp></dt>
<dd>
El valor de esta variable es la función de bajo nivel utilizada para realizar el autocompletado por el código que usa <samp>magit-completing-read</samp> (en oposición a
<samp>completing-read</samp> incorporado).
</dd>
<dd>
El valor por defecto, <samp>magit-builtin-completing-read</samp>, es adecuado al menos para el mecanismo de completado estándar, <samp>ivy-mode</samp> y <samp>helm-mode</samp>.
</dd>
<dd>
Los valores incorporados <samp>completing-read</samp> y <samp>completing-read-default</samp> no son adecuados para ser usados aquí. <samp>magit-builtin-completing-read</samp> realiza algún
trabajo adicional, y cualquier función usada en su lugar tiene que hacer lo mismo.
</dd>
<dt>Función: <samp>magit-builtin-completing-read</samp> <i>opciones de prompt &opcional implica require-match initial-input hist def</i></dt>
<dd>
Esta función realiza la finalización utilizando la función incorporada <samp>completing-read</samp> y realiza algunas tareas adicionales específicas de magit.
</dd>
<dt>Función: <samp>magit-ido-completing-read</samp> <i>opciones de prompt &opcional implica require-match initial-input hist def</i></dt>
<dd>
Esta función lleva a cabo la finalización usando <samp>ido-completing-read+</samp> del paquete del mismo nombre (que tiene que instalar explícitamente) y hace algún trabajo adicional
específico de magit.
</dd>
<dd>
Tenemos que usar <samp>ido-completing-read+</samp> en lugar de <samp>ido-completing-read</samp> que viene con el propio Ido, porque este último, aunque está pensado como un reemplazo
directo, no puede servir para ese propósito porque viola demasiadas de las convenciones implícitas.
</dd>
<dt>Función: <samp>magit-completing-read</samp> <i>opciones de prompt &opcional implica require-match initial-input hist def fallback</i></dt>
<dd>
Esta es la función que usan los comandos Magit cuando necesitan que el Usuario seleccione una única cosa sobre la que actuar. Los argumentos tienen el mismo significado que para
<samp>completing-read</samp>, excepto FALLBACK, que es exclusivo de esta función y se describe a continuación.
</dd>
<dd>
En lugar de pedir al Usuario que elija de una lista de posibles candidatos, esta función puede simplemente devolver el valor por defecto especificado por DEF, con o sin requerir
la confirmación del Usuario. Si este es el caso depende de PROMPT, <samp>this-command</samp> y <samp>magit-dwim-selection</samp>. Consulta la documentación de este último para obtener
más información.
</dd>
<dd>
Si lee un valor en el minibuffer, entonces esta función actúa de forma similar a <samp>completing-read</samp>, excepto por lo siguiente:
</dd>
<ul>
<li>COLLECTION debe ser una lista de opciones. No se admite una función.</li>
<li>
Si REQUIRE-MATCH es nulo (<samp>nil</samp>), y el Usuario sale sin elegir, entonces se devuelve <samp>nil</samp> en lugar de una cadena vacía.
</li>
<li>
Si REQUIRE-MATCH es no nulo, y el usuario sale sin elegir, se produce un error de Usuario.
</li>
<li>
FALLBACK por defecto especifica un valor secundario que sólo se usa si el valor por defecto primario DEF es . El valor secundario por defecto no está sujeto a
<samp>magit-dwim-selection</samp> - si DEF es <samp>nil</samp> pero FALLBACK no lo es, entonces esta función siempre pide al Usuario que elija un candidato, igual que si ambos
valores por defecto fueran nulos.
</li>
<li>
": "se añade al PROMPT.
</li>
<li>
PROMPT se modifica para terminar con \" (por defecto DEF|FALLBACK): \" siempre que DEF o FALLBACK no sean nulos, que ni <samp>ivy-mode</samp> ni <samp>helm-mode</samp> estén
activados, y que <samp>magit-completing-read-function</samp> tenga el valor por defecto <samp>magit-builtin-completing-read</samp>.
</li>
</ul>
</dl>
<h2 id="opciones_adicionales_de_autocompletado">Opciones Adicionales de Autocompletado<a href="#opciones_adicionales_de_autocompletado"></a></h2>
<dl>
<dt>Opción de Usuario: <samp>magit-list-refs-sortby</samp></dt>
<dd>
Para muchos comandos que leen una o varias refs del Usuario, el valor de esta opción puede usarse para controlar el orden de las refs. Los valores válidos incluyen cualquier
clave aceptada por la opción <samp>--sort</samp> de <samp>git for-each-ref</samp>. Por defecto, las refs se ordenan alfabéticamente por su nombre completo (por ejemplo,
"refs/heads/master").
</dd>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_finalizacion_confirmacion_y_seleccion" title="Finalización, Confirmación y Selección">Anterior</label><label class="btn next" accesskey="n" for="_soporte_para_el_raton" title="Soporte para el Ratón">Siguiente</label></div>
<div class="page" rel="soporte_para_el_raton"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Soporte para el Ratón</li></ul><hr></div>
<h1 id="soporte_para_el_raton">Soporte para el Ratón<a href="#soporte_para_el_raton"></a></h1>
<p>
Haciendo doble clic en el encabezamiento de una sección se conmuta la visibilidad de su cuerpo, si lo hubiera. Del mismo modo, si se hace clic en la franja izquierda, se cambia la
visibilidad de la sección correspondiente.
</p>
<p>
Se proporciona un menú contextual, pero debe habilitarse explícitamente. En Emacs 28 y posteriores, activa el modo global <samp>context-menu-mode</samp>. Si usa una versión anterior de
Emacs, active <samp>magit-section-show-context-menu-for-emacs&lt;28</samp>.
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_el_minibuffer" title="El Minibuffer">Anterior</label><label class="btn next" accesskey="n" for="_ejecucion_de_git" title="Ejecución de Git">Siguiente</label></div>
<div class="page" rel="ejecucion_de_git"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Ejecución de Git</li></ul><hr></div>
<h1 id="ejecucion_de_git">Ejecución de Git<a href="#ejecucion_de_git"></a></h1>
<h2 id="visualizacion_de_la_salida_de_git">Visualización de la salida de Git<a href="#visualizacion_de_la_salida_de_git"></a></h2>
<p>
Magit ejecuta Git ya sea por efectos secundarios (por ejemplo, al hacer push) o para obtener algún valor (por ejemplo, el nombre de la rama actual).
</p>
<p>
Cuando Git se ejecuta por efectos secundarios, la salida del proceso se registra en un buffer de registro por repositorio, que puede consultarse usando el comando
<samp>magit-process</samp> cuando las cosas no van como se esperaba.
</p>
<p>
Se conserva la salida/errores de hasta magit-process-log-max comandos Git.
</p>
<dl>
<dt><kbd>$</kbd> (<i><samp>$</samp></i>, <samp>magit-process</samp>)</dt>
<dd>
Este comando muestra el buffer de procesos para el repositorio actual.
</dd>
</dl>
<p>
Dentro de ese búfer, están disponibles los atajos de teclado habituales para navegar y mostrar secciones. Hay un comando adicional.
</p>
<dl>
<dt><kbd>k</kbd> (<i><samp>k</samp></i>, <samp>magit-process-kill</samp>)</dt>
<dd>
Este comando mata el proceso representado por la sección en el punto.
</dd>
</dl>
<dl>
<dt>Variable: <samp>magit-git-debug</samp></dt>
<dd>
Esta opción controla si se habilita la notificación adicional de errores de git.
</dd>
<dd>
Magit básicamente llama a git por una de estas dos razones: por efectos secundarios o para hacer algo con su salida estándar.
</dd>
<dd>
Cuando git se ejecuta por efectos secundarios, su salida, incluyendo los mensajes de error, van al buffer del proceso que se muestra cuando se usa <samp>$</samp>.
</dd>
<dd>
Cuando por alguna razón la salida de git se consume, sería bastante costoso insertarla también en este buffer, pero cuando esta opción no es nula y git vuelve con un estado de
salida distinto de cero, al menos su error estándar se inserta en este buffer.
</dd>
<dd>
Esto es sólo para propósitos de depuración. No lo active de forma permanente, ya que afectaría negativamente al rendimiento.
</dd>
<dd>
Esto es sólo para propósitos de depuración. No lo habilite permanentemente, afectaría negativamente al rendimiento. Tenga en cuenta también que el hecho de que git salga con un
estado de salida distinto de cero e imprima un mensaje de error, normalmente no significa que sea un error en lo que concierne a Magit, que es otra de las razones por las que
normalmente ocultamos estos mensajes de error. Si un mensaje de error es relevante en el contexto de un comportamiento inesperado debe juzgarse caso por caso.
</dd>
<dd>
El comando <samp>magit-toggle-git-debug</samp> cambia el valor de esta variable.
</dd>
<dt>Variable: <samp>magit-process-extreme-logging</samp></dt>
<dd>
Esta opción controla si <samp>magit-process-file</samp> registra en el buffer <samp>*Messages*</samp>.
</dd>
<dd>
Sólo está pensada para un uso temporal cuando intentes averiguar cómo Magit usa Git entre bastidores. La salida que normalmente va al buffer <samp>magit-process</samp> continúa yendo
allí. No toda la salida va a cualquiera de estos dos buffers.
</dd>
</dl>
<h2 id="estado_del_proceso_git">Estado del proceso Git<a href="#estado_del_proceso_git"></a></h2>
<p>
Cuando un proceso Git se está ejecutando por efectos secundarios, Magit muestra un indicador en la línea de modo, usando la cara <samp>magit-mode-line-process</samp>.
</p>
<p>
Si el proceso Git sale con éxito, el indicador de proceso se elimina de la línea de modo inmediatamente.
</p>
<p>
En el caso de un error de Git, el indicador de proceso no se elimina, sino que se resalta con la cara <samp>magit-mode-line-process-error</samp>, y los detalles del error del búfer de
proceso se proporcionan como información sobre herramientas para los usuarios del ratón. Este indicador de error persiste en la línea de modo hasta la siguiente actualización de la
memoria intermedia de magit.
</p>
<p>
Si no desea que los errores de proceso se indiquen en la línea de modo, personalice la opción de usuario <samp>magit-process-display-mode-line-error</samp>.
</p>
<p>
Los errores de proceso se indican adicionalmente en la parte superior del búfer de estado.
</p>
<h2 id="ejecutando_git_manualmente">Ejecutando Git manualmente<a href="#ejecutando_git_manualmente"></a></h2>
<p>
Aunque Magit proporciona muchos comandos Emacs para interactuar con Git, no lo cubre todo. En esos casos, su conocimiento de Git le será útil. Magit proporciona algunos comandos para
ejecutar comandos Git arbitrarios escribiéndolos en el minibuffer, en lugar de tener que cambiar a una shell.
</p>
<dl>
<dt><kbd>!</kbd> (<i><samp>!</samp></i>, <samp>magit-run</samp>)</dt>
<dd>
Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoque un sufijo.
</dd>
<dt><kbd>!</kbd><kbd>!</kbd> (<i><samp>! !</samp></i>, <samp>magit-git-command-topdir</samp>) </dt>
<dd>
Este comando lee un comando del Usuario y lo ejecuta en el directorio de nivel superior del árbol de trabajo actual.
</dd>
<dd>
La cadena "git " se usa como entrada inicial cuando se solicita al Usuario el comando. Se puede eliminar para ejecutar otro comando.
</dd>
<dt><kbd>!</kbd><kbd>p</kbd> (<i><samp>! p</samp></i>, <samp>magit-git-command</samp>)</dt>
<dd>
Este comando lee un comando del Usuario y lo ejecuta en el directorio por defecto. Con un argumento prefijo, el comando se ejecuta en el directorio de nivel superior del árbol de
trabajo actual.
</dd>
<dd>
La cadena "git " se usa como entrada inicial cuando se pide al Usuario el comando. Puede eliminarse para ejecutar otro comando.
</dd>
<dt><kbd>!</kbd><kbd>s</kbd> (<i><samp>! s</samp></i>, <samp>magit-shell-command-topdir</samp>)</dt>
<dd>
Este comando lee un comando del Usuario y lo ejecuta en el directorio de nivel superior del árbol de trabajo actual.
</dd>
<dt><kbd>!</kbd><kbd>S</kbd> (<i><samp>! S</samp></i>, <samp>magit-shell-command</samp>)</dt>
<dd>
Este comando lee un comando del Usuario y lo ejecuta en el directorio por defecto. Con un argumento de prefijo, el comando se ejecuta en el directorio de nivel superior del árbol
de trabajo actual.
</dd>
<dt>Opción de Usuario: <samp>magit-shell-command-verbose-prompt</samp></dt>
<dd>
Si el prompt, utilizado por los comandos anteriores cuando se lee un comando shell, muestra el directorio en el que se ejecutará.
</dd>
</dl>
<p>
Estos comandos de sufijo inician herramientas gui externas.
</p>
<dl>
<dt><kbd>!</kbd><kbd>k</kbd> (<i><samp>! K</samp></i>, <samp>magit-run-gitk</samp>)</dt>
<dd>This command runs <samp>gitk</samp> in the current repository.</dd>
<dt><kbd>!</kbd><kbd>a</kbd> (<i><samp>! a</samp></i>, <samp>magit-run-gitk-all</samp>)</dt>
<dd>Este comando ejecuta <samp>gitk --all</samp> en el repositorio actual.</dd>
<dt><kbd>!</kbd><kbd>b</kbd> (<i><samp>! b</samp></i>, <samp>magit-run-gitk-branches</samp>)</dt>
<dd>Este comando ejecuta <samp>gitk --branches</samp> en el repositorio actual.</dd>
<dt><kbd>!</kbd><kbd>g</kbd> (<i><samp>! g</samp></i>, <samp>magit-run-git-gui</samp>)</dt>
<dd>Este comando ejecuta <samp>git gui</samp> en el repositorio actual.</dd>
<dt><kbd>!</kbd><kbd>m</kbd> (<i><samp>! m</samp></i>, <samp>magit-git-mergetool</samp>)</dt>
<dd>Este comando ejecuta <samp>git mergetool --gui</samp> en el repositorio actual.</dd>
<dd>
Con un argumento prefijo actúa como un comando prefijo transitorio, permitiendo al Usuario seleccionar el mergetool y cambiar algunos ajustes.
</dd>
</dl>
<h2 id="ejecutable_de_git">Ejecutable de Git<a href="#ejecutable_de_git"></a></h2>
<p>
Cuando Magit llama a Git, puede hacerlo usando la ruta absoluta al ejecutable de <samp>git</samp>, o usando sólo su nombre.
</p>
<p>
Cuando se ejecuta git localmente y el sistema (<samp>system-type</samp>) es <samp>windows-nt</samp> (cualquier versión de Windows) o <samp>darwin</samp> (macOS), <samp>magit-git-executable</samp> se
establece en una ruta absoluta cuando se carga Magit.
</p>
<p>
En Windows es necesario usar una ruta absoluta porque Git viene con varios scripts de envoltura para el binario real, que también se colocan en <samp>$PATH</samp>, y el uso de
una de estas envolturas en lugar del binario degradaría el rendimiento horriblemente. Para algunos usuarios de macOS usar sólo el nombre del ejecutable también tiene un rendimiento
horrible, así que evitamos hacerlo en esa plataforma también. En otras plataformas, usar sólo el nombre parece funcionar bien.
</p>
<p>
Usar una ruta absoluta cuando se ejecuta <samp>git</samp> en una máquina remota sobre Tramp, sería una situación problemática usar una ruta absoluta que sea adecuada en la máquina local,
por lo que se usa una opción separada para controlar el nombre o la ruta que se usa en las máquinas remotas.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-git-executable</samp></dt>
<dd>
El ejecutable <samp>git</samp> usado por Magit en el host local. Debería ser la ruta absoluta al ejecutable, o la cadena "git" para permitir a Emacs encontrar el ejecutable por sí
mismo, usando el mecanismo estándar para hacer tales cosas.
</dd>
<dt>Opción de Usuario: <samp>magit-remote-git-executable</samp></dt>
<dd>
El ejecutable <samp>git</samp> usado por Magit en máquinas remotas a través de Tramp. Normalmente debería ser sólo la cadena "git". Considere personalizar <samp>tramp-remote-path</samp>
en lugar de esta opción.
</dd>
</dl>
<p>
Puede evitar que Emacs sea incapaz de encontrar el ejecutable correcto estableciendo explícitamente el valor de una de estas dos opciones. Hacer eso debería considerarse una chapuza;
es mejor asegurarse de que el orden en <samp>exec-path</samp> o <samp>tramp-remote-path</samp> es correcto.
</p>
<p>
Tenga en cuenta que <samp>exec-path</samp> se establece basándose en el valor de la variable de entorno <samp>PATH</samp> que está activa cuando se inicia Emacs. Si establece <samp>PATH</samp>
en los ficheros init de su shell, sólo tendrá efecto en Emacs si lo inicia desde esa shell (porque el entorno de un proceso sólo se pasa a sus procesos hijos, no a otros procesos
arbitrarios). Si no es así como arranca Emacs, entonces el paquete <samp>exec-path-from-shell</samp> puede ayudar; aunque honestamente también lo considero una chapuza.
</p>
<p>
El comando <samp>magit-debug-git-executable</samp> puede ser útil para averiguar dónde está buscando Emacs <samp>git</samp>.
</p>
<dl>
<dt><i><samp>M-x magit-debug-git-executable</samp></i></dt>
<dd>
Este comando muestra un buffer con información sobre <samp>magit-git-executable</samp> y <samp>magit-remote-git-executable</samp>.
</dd>
<dt><i><samp>M-x magit-versión</samp></i></dt>
<dd>
Este comando muestra las versiones actualmente usadas de Magit, Git y Emacs en el área de eco. De forma no interactiva sólo devuelve la versión de Magit.
</dd>
</dl>
<h2 id="argumentos_gobales_de_git">Argumentos Gobales de Git<a href="#argumentos_gobales_de_git"></a></h2>
<dl>
<dt>Opción de Usuario: <samp>magit-git-global-arguments</samp></dt>
<dd>
Los argumentos establecidos aquí se usn cada vez que el ejecutable git se dispara como un subproceso. Se colocan justo después del propio ejecutable y antes del comando git -
como en <samp>git HERE... COMMAND REST</samp>. Para conocer los argumentos válidos, consulta la página de manual de git(1).
</dd>
<dd>
Tenga cuidado con lo que añade aquí, especialmente si está usando Tramp para conectarse a servidores con versiones antiguas de Git. Nunca elimine nada que sea parte del valor por
defecto, a menos que realmente sepa lo que está haciendo. Y piense muy bien antes de añadir algo; se usará cada vez que Magit ejecute Git para cualquier propósito.
</dd>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_soporte_para_el_raton" title="Soporte para el Ratón">Anterior</label><label class="btn next" accesskey="n" for="_inspeccion" title="Inspección">Siguiente</label></div>
<div class="page" rel="inspeccion"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Inspección</li></ul><hr></div>
<h1 id="inspeccion">Inspección<a href="#inspeccion"></a></h1>
<p>
La funcionalidad que ofrece Magit puede dividirse a grandes rasgos en tres grupos: inspección de datos existentes, manipulación de datos existentes o adición de nuevos datos, y
transferencia de datos. Por supuesto, se trata de una distinción bastante burda que a menudo se queda corta, pero es más útil que no hacer ninguna distinción. Esta sección trata de
la inspección de datos, las dos siguientes de su manipulación y transferencia. Luego sigue una sección sobre funcionalidades varias, que no pueden encajar fácilmente en esta
distinción.
</p>
<p>
Por supuesto, otras distinciones también tienen sentido, por ejemplo, la distinción de Git entre comandos de porcelana y de fontanería, que en su mayor parte es equivalente a la
distinción de Emacs entre comandos interactivos y funciones no interactivas. Todas las secciones mencionadas anteriormente se ocupan principalmente de la porcelana - la capa de
fontanería de Magit se describe más adelante.
</p>
<h2 id="bufer_de_estado">Búfer de estado<a href="#bufer_de_estado"></a></h2>
<p>
Mientras que otros buffers de Magit contienen, por ejemplo, un diff en particular o un log en particular, el buffer de estado contiene los diffs para cambios preparados o no, logs
para commits no empujados y no empujados, listas de trabajos guardados rápidos <samp>stashes</samp> y archivos sin seguimiento, e información relacionada con la rama actual.
</p>
<p>
Durante ciertas operaciones incompletas - por ejemplo, cuando una fusión resulta en un conflicto - se muestra información adicional que ayuda a continuar o abortar la operación.
</p>
<p>
El comando <samp>magit-status</samp> muestra el búfer de estado perteneciente al repositorio actual en otra ventana. Este comando se usa tan a menudo que debería estar vinculado
globalmente. Recomendamos usar <kbd>Ctrl</kbd>-<kbd>x</kbd> <kbd>g</kbd> (<samp>C-x g</samp>):
</p>
<div class="pre"><pre>(global-set-key (kbd &quot;C-x g&quot;) 'magit-status)</pre></div>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>x</kbd> <kbd>g</kbd> (<i><samp>C-x g</samp></i>, <samp>magit-status</samp>)</dt>
<dd>
Cuando se invoca desde un repositorio Git existente, este comando muestra el estado de ese repositorio en un buffer.
</dd>
<dd>
Si el directorio actual no se encuentra dentro de un repositorio Git, entonces este comando solicita un repositorio existente o un directorio arbitrario, dependiendo de la opción
<samp>magit-repository-directories</samp>, y en su lugar se muestra el estado del repositorio seleccionado.
<ul>
<li>Si esa opción especifica algún repositorio existente, se pide al Usuario que seleccione uno de ellos.</li>
<li>
De lo contrario, se le pide al Usuario que seleccione un directorio arbitrario uso la función normal de completar nombres de archivo. Si el directorio seleccionado es el
directorio de nivel superior de un árbol de trabajo existente, se muestra el búfer de estado correspondiente.
</li>
<li>En caso contrario, se ofrece al Usuario inicializar el directorio seleccionado como un nuevo repositorio. Después de crear el repositorio se muestra su búfer de
estado.</li>
</ul>
</dd>
<dd>
Estos comportamientos alternativos también pueden forzarse usando uno o más argumentos de prefijo:</p>
<ul>
<li>Con dos argumentos de prefijo (o, más exactamente, un valor numérico de prefijo igual o superior a 16) se lee un directorio arbitrario, sobre el que se actúa como se ha
descrito anteriormente. Lo mismo podría conseguirse usando la orden <samp>magit-init</samp>.</li>
<li>Con un único argumento de prefijo se lee un repositorio de Usuario existente, o si no se puede encontrar ningún repositorio basándose en el valor de
<samp>magit-repository-directories</samp>, entonces el comportamiento es el mismo que con dos argumentos de prefijo.</li>
</ul>
</dd>
<dt>Opción de Usuario <samp>magit-repository-directories</samp></dt>
<dd>Lista de directorios que son repositorios Git o contienen repositorios Git.</dd>
<dd>
Cada elemento tiene la forma <samp>(DIRECTORIO . PROFUNDIDAD)</samp>. DIRECTORY tiene que ser un directorio o un nombre de archivo de directorio, una cadena. DEPTH, un entero,
especifica la profundidad máxima de búsqueda de repositorios Git. Si es 0, sólo se añade el propio DIRECTORIO.
</dd>
<dd>
Esta opción controla qué repositorios son listados por <samp>magit-list-repositories</samp>. También afecta a <samp>magit-status</samp> (que ver) de formas potencialmente sorprendentes
(ver más arriba).
</dd>
<dt>Opción de Usuario: <samp>magit-status-quick</samp></dt>
<dd>Este comando es una alternativa a <samp>magit-status</samp> que normalmente evita refrescar el buffer de estado.</dd>
<dd>
Si el búfer de estado del repositorio Git actual existe pero no se está mostrando en el marco seleccionado, entonces se muestra sin ser refrescado.
</dd>
<dd>Si el búfer de estado se está mostrando en el fotograma seleccionado, este comando lo refresca.</dd>
<dd>
Los argumentos prefijados tienen el mismo significado que para <samp>magit-status</samp> y, además, hacen que se refresque el búfer.
</dd>
<dd>
Para usar este comando añada esto a su archivo init:
<div class="pre"><pre>(global-set-key (kbd &quot;C-x g&quot;) 'magit-status-quick).</pre></div>
</dd>
<dd>
Si hace eso y luego por una vez quiere volver a mostrar el buffer y también refrescarlo inmediatamente, pulse <kbd>Ctrl</kbd>-<kbd>x</kbd> <kbd>g</kbd> (<samp>C-x g</samp>) seguido
de <kbd>g</kbd> (<samp>g</samp>).
</dd>
<dd>
Un posible comando alternativo es <samp>magit-display-repository-buffer</samp>. Permite mostrar cualquier búfer Magit existente que pertenezca al repositorio actual; no sólo el búfer
de estado.
</dd>
<dt>Comando: <samp>ido-enter-magit-status</samp></dt>
<dd>
Desde un prompt de Ido usado para abrir un archivo, en su lugar se suelta en <samp>magit-status</samp>. Esto es similar a <samp>ido-magic-delete-char</samp>, que, a pesar de su nombre,
normalmente provoca la creación de un buffer Dired.
</dd>
<dd>
Para que este comando esté disponible, use:
<div class="pre"><pre>
(add-hook 'ido-setup-hook
(lambda ()
(define-key ido-completion-map
(kbd \&quot;C-x g\&quot;) 'ido-enter-magit-status)))
</pre></div>
</dd>
<dd>
A partir de Emacs 25.1 los mapas de teclado de Ido se definen sólo una vez en lugar de cada vez que se invoca a Ido, así que ahora puedes modificarlo como cualquier otro mapa de
teclado:
<div class="pre"><pre>
(define-key ido-common-completion-map
(kbd \&quot;C-x g\&quot;) 'ido-enter-magit-status)
</pre></div>
</dd>
</dl>
<h3 id="secciones_de_estado">Secciones de estado<a href="#secciones_de_estado"></a></h3>
<p>
El contenido de los buffers de estado se controla mediante el <samp>hook magit-status-sections-hook</samp>. Consulte <a href="#seccion_ganchos_hooks" onclick="c('seccion_ganchos_hooks')">Sección Ganchos (Hooks)</a> para obtener más
información sobre estos ganchos y cómo personalizarlos.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-status-sections-hook</samp></dt>
<dd>Gancho ejecutado para insertar secciones en un búfer de estado.</dd>
</dl>
<p>
La primera función de ese gancho (hook) por defecto es <samp>magit-insert-status-headers</samp>; se describe en la siguiente sección. Por defecto, las siguientes funciones también son
miembros de ese hook:
</p>
<dl>
<dt>Función: <samp>magit-insert-merge-log</samp></dt>
<dd>
Inserta sección para la fusión en curso. Muestra las cabeceras que se están fusionando. Si no hay ninguna fusión en curso, no hace nada.
</dd>
<dt>Funcion: <samp>magit-insert-rebase-sequence</samp></dt>
<dd>
Inserta sección para la secuencia de rebase en curso. Si no hay ninguna secuencia en curso, no hace nada.
</dd>
<dt>Función: <samp>magit-insert-am-sequence</samp></dt>
<dd>
Inserta sección para la secuencia de aplicación de parches en curso. Si no hay ninguna secuencia en curso, no hace nada.
</dd>
<dt>Función: <samp>magit-insert-sequencer-sequence</samp></dt>
<dd>
Inserta sección para la secuencia seleccionada en curso o revierte dicha selección. Si no hay ninguna secuencia en curso, no hace nada.
</dd>
<dt>Funcion: <samp>magit-insert-bisect-output</samp></dt>
<dd>
Durante la bisección, inserta la sección con la salida de <samp>git bisect</samp>.
</dd>
<dt>Función: <samp>magit-insert-bisect-rest</samp></dt>
<dd>
Mientras divide en dos partes (bisecta), inserta la sección visualizando el estado de bisección.
</dd>
<dt>Función: <samp>magit-insert-bisect-log</samp></dt>
<dd>
Mientras divide en dos secciones (bisecta), inserta la sección que registra el progreso de la bisección.
</dd>
<dt>Función: <samp>magit-insert-untracked-files</samp></dt>
<dd>
Es posible que este comando inserte una lista o árbol de archivos sin seguimiento.
</dd>
<dd>
Hágalo dependiendo del valor de <samp>status.showUntrackedFiles</samp>. Tenga en cuenta que incluso si el valor es <samp>all</samp>, Magit sigue mostrando inicialmente sólo directorios.
Pero las secciones de directorios pueden expandirse usando <samp>TAB</samp>.
</dd>
<dt>Función: <samp>magit-insert-unstaged-changes</samp></dt>
<dd>
Inserta sección mostrando cambios no preparados (changed unstaged).
</dd>
<dt>Función: <samp>magit-insert-staged-changes</samp></dt>
<dd>
Inserta sección que muestre los cambios preparados.
</dd>
<dt>Función: <samp>magit-insert-stashes</samp> <i>&opcional referencias de las cabeceras (ref heading)</i></dt>
<dd>
Inserta la sección de <samp>stashes</samp> (la sección de cambios confirmados) mostrando reflog para "refs/stash". Si el REF opcional no es nulo, muestra el reflog de ese en su
lugar. Si el encabezado opcional HEADING no es nulo, uselo como encabezado de sección en lugar de "Stashes:".
</dd>
<dt>Función: <samp>magit-insert-unpulled-from-upstream</samp></dt>
<dd>
Inserta una sección que muestra las confirmaciones (commits) que aún no han sido extraídos de la rama remota (upstream).
</dd>
<dt>Función: <samp>magit-insert-unpulled-from-pushremote</samp></dt>
<dd>
Inserta una sección que muestra las confirmaciones (commits) que aún no se han extraído de la rama push-remote.
</dd>
<dt>Función: <samp>magit-insert-unpushed-to-upstream</samp></dt>
<dd>
Insertar una sección que muestra las confirmaciones (commits) que aún no se han enviado a la rama remota (upstream).
</dd>
<dt>Función: <samp>magit-insert-unpushed-to-pushremote</samp></dt>
<dd>
Inserta sección mostrando las confirmaciones (commits) que aún no han sido empujados al push-remote.
</dd>
</dl>
<p>
También se pueden añadir las siguientes funciones al gancho anterior:
</p>
<dl>
<dt>Función: <samp>magit-insert-tracked-files</samp></dt>
<dd>
Inserta un árbol de archivos rastreados.
</dd>
<dt>Función: <samp>magit-insert-ignored-files</samp></dt>
<dd>
Inserta un árbol de archivos ignorados. Es posible limitar los registros en el búfer actual a un directorio determinado utilizando <samp>D = f &lt;DIRECTORIO&gt; RET g</samp>. Si lo hace,
entonces que también afecta a este comando.
</dd>
<dd>
El filtro de registro se puede usar para limitar a varios archivos. En ese caso esta función sólo respeta el primero de los ficheros y sólo si es un directorio.
</dd>
<dt>Función: <samp>magit-insert-skip-worktree-files</samp></dt>
<dd>
Inserta un árbol de archivos skip-worktree. Si el primer elemento de <samp>magit-buffer-diff-files</samp> es un directorio, entonces limita la lista a los archivos situados por
debajo de él. El valor de esa variable puede establecerse usando <samp>D -- DIRECTORY RET g</samp>.
</dd>
<dt>Función: <samp>magit-insert-assumed-unchanged-files</samp></dt>
<dd>
Inserta un árbol de archivos que se suponen inalterados. Si el primer elemento de <samp>magit-buffer-diff-files</samp> es un directorio, entonces limita la lista a los archivos
situados por debajo de él. El valor de esa variable puede establecerse usando <samp>D -- DIRECTORY RET g</samp>.
</dd>
<dt>Función: <samp>magit-insert-unpulled-or-recent-commits</samp></dt>
<dd>
Inserta sección mostrando confirmaciones (commits) no extraídas o recientes. Si hay una rama remota (upstream) configurado para la rama actual que está por delante, muestra las
confirmaciones que faltan. Si no, muestra los últimos commits de <samp>magit-log-section-commit-count</samp>.
</dd>
<dt>Función: <samp>magit-insert-recent-commits</samp></dt>
<dd>
Inserta sección mostrando las últimas confirmaciones (commits) de <samp>magit-log-section-commit-count</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-log-section-commit-count</samp></dt>
<dd>
Cuántas confirmaciones (commits) recientes muestran <samp>magit-insert-recent-commits</samp> y <samp>magit-insert-unpulled-or-recent-commits</samp> (siempre y cuando no hayan
confirmaciones sin enviar o empujar (commits unpulled)).
</dd>
<dt>Función: <samp>magit-insert-unpulled-cherries</samp></dt>
<dd>
Inserta sección mostrando confirmaciones no empujadas. Como <samp>magit-insert-unpulled-commits</samp>, pero anteponiendo "<samp>+</samp>" a cada confirmación que aún no se haya aplicado
(es decir, una confirmación con un patch-id no compartido con ninguna confirmación en la rama remota), y "<samp>-</samp>" a todas las demás.
</dd>
<dt>Función: <samp>magit-insert-unpushed-cherries</samp></dt>
<dd>
Inserta sección mostrando confirmaciones no aplicadas. Como <samp>magit-insert-unpushed-commits</samp>, pero anteponiendo "+" a cada confirmación que aún no se ha aplicado al flujo
ascendente (es decir, una confirmación con un patch-id no compartido con ninguna confirmación del flujo ascendente) y "-" a todas las demás.
</dd>
</dl>
<p>
Vea <a href="#@GENDOC:buffer_de_referencias@" onclick="c('@GENDOC:buffer_de_referencias@')">Buffer de Referencias</a> para algunos insertadores de sección más, que podrían ser usados aquí.
</p>
<h3 id="secciones_cabeceras_de_estado">Secciones: Cabeceras de Estado<a href="#secciones_cabeceras_de_estado"></a></h3>
<p>
El contenido de los búferes de estado se controla mediante el gancho <samp>magit-status-sections-hook</samp> (véase Secciones de estado).
</p>
<p>Por defecto <samp>magit-insert-status-headers</samp> es el primer miembro de esa variable de gancho.</p>
<dl>
<dt>Función: <samp>magit-insert-status-headers</samp></dt>
<dd>
Inserta secciones de cabecera apropiadas para los buffers <samp>magit-status-mode</samp>. Las secciones se insertan ejecutando las funciones del gancho
<samp>magit-status-headers-hook</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-status-headers-hook</samp></dt>
<dd>
Gancho que se ejecuta para insertar secciones de cabecera en el búfer de estado.
</dd>
<dd>
Este gancho es ejecutado por <samp>magit-insert-status-headers</samp>, que a su vez tiene que ser miembro de <samp>magit-status-sections-hook</samp> para ser usado.
</dd>
</dl>
<p>Por defecto, las siguientes funciones son miembros del gancho anterior:</p>
<dl>
<dt>Función: <samp>magit-insert-error-header</samp></dt>
<dd>
Inserta una línea de cabecera mostrando el mensaje sobre el error Git que acaba de ocurrir.
</dd>
<dd>
Esta función sólo tiene en cuenta el último error que se produjo al ejecutar Git por efectos secundarios. Si, por ejemplo, se produce un error mientras se genera un diff,
entonces ese error no se insertará. Refrescar el buffer de estado hace que esta sección desaparezca de nuevo.
</dd>
<dt>Función: <samp>magit-insert-diff-filter-header</samp></dt>
<dd>
Inserta una línea de encabezado que muestra los filtros diff efectivos.
</dd>
<dt>Función: <samp>magit-insert-head-branch-header</samp></dt>
<dd>
Inserta una línea de cabecera sobre la rama actual o <samp>HEAD</samp> desanclada.
</dd>
<dt>Función: <samp>magit-insert-upstream-branch-header</samp></dt>
<dd>
Inserta una línea de cabecera sobre la rama que se suele empujar a la rama actual.
</dd>
<dt>Función: <samp>magit-insert-push-branch-header</samp></dt>
<dd>
Inserta una línea de cabecera sobre la rama a la que se suele empujar la rama actual.
</dd>
<dt>Función: <samp>magit-insert-tags-header</samp></dt>
<dd>
Inserta una línea de cabecera sobre la etiqueta actual y/o siguiente, junto con el número de confirmaciones entre la etiqueta y <samp>HEAD</samp>.
</dd>
</dl>
<p>También se pueden añadir las siguientes funciones al gancho anterior:</p>
<dl>
<dt>Función: <samp>magit-insert-repo-header</samp></dt>
<dd>
Inserta una línea de cabecera que muestra la ruta al repositorio de nivel superior.
</dd>
<dt>Función: <samp>magit-insert-remote-header</samp></dt>
<dd>
Inserta una línea de cabecera sobre la remota de la rama actual.
</dd>
<dd>
Si no hay ninguna remota configurada para la rama actual, entonces retrocede mostrando la remota "origen", o si no existe la primera remota en orden alfabético.
</dd>
<dt>Función: <samp>magit-insert-user-header</samp></dt>
<dd>
Inserta una línea de encabezado sobre el usuario actual.
</dd>
</dl>
<h3 id="secciones_del_modulo_de_estado">Secciones del módulo de estado<a href="#secciones_del_modulo_de_estado"></a></h3>
<p>El contenido de los buffers de estado se controla mediante el <samp>gancho magit-status-sections-hook</samp> (ver Secciones de estado).</p>
<p>Por defecto <samp>magit-insert-modules</samp> no es miembro de esa variable de gancho.</p>
<dl>
<dt>Función: <samp>magit-insert-modules</samp></dt>
<dd>
Inserta secciones de submódulos.
</dd>
<dd>
El gancho <samp>magit-module-sections-hook</samp> controla qué secciones del módulo se insertan, y la opción <samp>magit-module-sections-nested</samp> controla si se envuelven en una
sección adicional.
</dd>
<dt>Opción de Usuario: <samp>magit-module-sections-hook</samp></dt>
<dd>
Gancho ejecutado por <samp>magit-insert-modules</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-module-sections-nested</samp></dt>
<dd>
Esta opción controla si <samp>magit-insert-modules</samp> envuelve las secciones insertadas en una sección adicional.
</dd>
<dd>
Si no es nil, sólo se inserta una sección de nivel superior. Si es nil, entonces todas las secciones listadas en <samp>magit-module-sections-hook</samp> se convierten en secciones de
nivel superior.
</dd>
<dt>Función: <samp>magit-insert-modules-overview</samp></dt>
<dd>
Inserta secciones para todos los submódulos. Para cada sección inserta la ruta, la rama, y la salida de <samp>git describe --tags</samp>, o, en su defecto, el hash de confirmación
HEAD abreviado.
</dd>
<dd>
Pulse <kbd>RET</kbd> en la sección de un submódulo para mostrar su propio búfer de estado. Pulse <kbd>RET</kbd> en la sección "Módulos" para mostrar una lista de submódulos en un
buffer separado. Esto muestra información adicional que no se muestra en el búfer de estado del super-repositorio.
</dd>
<dt>Función: <samp>magit-insert-modules-unpulled-from-upstream</samp></dt>
<dd>
Inserta secciones para los módulos que aún no se han extraído del flujo ascendente. Estas secciones pueden ampliarse para mostrar las confirmaciones correspondientes.
</dd>
<dt>Función: <samp>magit-insert-modules-unpulled-from-pushremote</samp></dt>
<dd>
Inserta secciones para los módulos que aún no se han extraído del repositorio remoto (push-remote). Estas secciones pueden ampliarse para mostrar las confirmaciones
correspondientes.
</dd>
<dt>Función: <samp>magit-insert-modules-unpushed-to-upstream</samp></dt>
<dd>
Inserta secciones para los módulos que aún no se han enviado al flujo ascendente. Estas secciones pueden ampliarse para mostrar las confirmaciones correspondientes.
</dd>
<dt>Función: <samp>magit-insert-modules-unpushed-to-pushremote</samp></dt>
<dd>
Inserta secciones para módulos que aún no han sido empujados al push-remote. Estas secciones pueden ampliarse para mostrar las confirmaciones correspondientes.
</dd>
</dl>
<h3 id="opciones_de_estado">Opciones de Estado<a href="#opciones_de_estado"></a></h3>
<dl>
<dt>Opción de Usuario: <samp>magit-status-refresh-hook</samp></dt>
<dd>
El gancho se ejecuta después de que se haya actualizado un búfer de estado.
</dd>
<dt>Opción de Usuario: <samp>magit-status-margin</samp></dt>
<dd>
Esta opción especifica si el margen se muestra inicialmente en las memorias intermedias del modo Magit-Status y cómo se formatea.
</dd>
<dd>
Este valor tiene la forma <samp>(INIT STYLE WIDTH AUTHOR AUTHOR-WIDTH)</samp>.
<ul>
<li>Si INIT es distinto de cero (si es no-nul), el margen se muestra inicialmente.</li>
<li>STYLE controla el formato de la fecha del autor o del committer. Puede ser <samp>age</samp> (para mostrar la antigüedad de la confirmación), <samp>age-abbreviated</samp> (para
abreviar la unidad de tiempo a un carácter), o una cadena (adecuada para <samp>format-time-string</samp>) para mostrar la fecha real. La opción
<samp>magit-log-margin-show-committer-date</samp> controla qué fecha se muestra.
</li>
<li>WIDTH controla la anchura del margen. Esto existe por compatibilidad hacia adelante y actualmente el valor no debe ser cambiado.</li>
<li>AUTHOR controla si el nombre del autor también se muestra por defecto.</li>
<li>AUTHOR-WIDTH debe ser un número entero. Cuando se muestra el nombre del autor, esto especifica cuánto espacio se utiliza para hacerlo.</li>
</ul>
</dd>
</dl>
<p>Consulte la siguiente sección para obtener más opciones relativas a los búferes de estado.</p>
<h2 id="lista_de_repositorios">Lista de repositorios<a href="#lista_de_repositorios"></a></h2>
<dl>
<dt>Comando: <samp>magit-list-repositories</samp></dt>
<dd>
Este comando muestra una lista de repositorios en un buffer separado.
</dd>
<dd>
La opción <samp>magit-repository-directories</samp> controla qué repositorios se muestran.
</dd>
<dt>Opción de Usuario: <samp>magit-repolist-columns</samp></dt>
<dd>
Esta opción controla qué columnas muestra el comando <samp>magit-list-repositories</samp> y cómo se muestran.
</dd>
<dd>
Cada elemento tiene la forma <samp>(HEADER WIDTH FORMAT PROPS)</samp>.
</dd>
<dd>
<ul>
<li>HEADER es la cadena que se muestra en la cabecera.</li>
<li>WIDTH es el ancho de la columna.</li>
<li>
FORMAT es una función que se llama con un argumento, la identificación del repositorio (normalmente su nombre base), y con <samp>default-directory</samp> vinculado al nivel
superior de su árbol de trabajo. Debe devolver una cadena a insertar o nil. PROPS es una lista que soporta las claves <samp>:right-align</samp>, <samp>:pad-right</samp> y
<samp>:sort</samp>.
</li>
</ul>
</dd>
<dd>
La función <samp>:sort</samp> tiene una interfaz extraña descrita en el docstring de <samp>tabulated-list--get-sort</samp>. Alternativamente <samp>&lt;</samp> y <samp>magit-repolist-version&lt;</samp>
pueden ser usadas ya que esas funciones son automáticamente reemplazadas por funciones que satisfacen la interfaz. Establezca <samp>:sort</samp> como <samp>nil</samp> para inhibir el
ordenamiento; si no se especifica, la columna se puede ordenar utilizando el ordenador predeterminado.
</dd>
<dd>
Es posible que desee mostrar un rango de columnas numéricas usando sólo un carácter por columna y sin ningún relleno entre columnas, en cuyo caso debe usar un HEADER apropiado,
establecer WIDTH a 1, y <samp>:pad-right</samp> a 9. Los números superiores a 9 se sustituyen por <samp>+</samp>.
</dd>
</dl>
<p>Las siguientes funciones pueden añadirse a la opción anterior:</p>
<dl>
<dt>Función: <samp>magit-repolist-column-ident</samp></dt>
<dd>
Esta función inserta la identificación del repositorio. Normalmente es sólo su nombre base.
</dd>
<dt>Función: <samp>magit-repolist-column-path</samp></dt>
<dd>
Esta función inserta la ruta absoluta del repositorio.
</dd>
<dt>Función: <samp>magit-repolist-column-version</samp></dt>
<dd>
Esta función inserta una descripción de la revisión <samp>HEAD</samp> del repositorio.
</dd>
<dt>Función: <samp>magit-repolist-column-branch</samp></dt>
<dd>
Esta función inserta el nombre de la rama actual.
</dd>
<dt>Función: <samp>magit-repolist-column-upstream</samp></dt>
<dd>
Esta función inserta el nombre de la rama ascendente de la rama actual.
</dd>
<dt>Función: <samp>magit-repolist-column-branches</samp></dt>
<dd>
Esta función inserta el número de ramas.
</dd>
<dt>Función: <samp>magit-repolist-column-stashes</samp></dt>
<dd>
Esta función inserta el número de stashes<sup>1</sup>.
</dd>
<div class="info"><p><span>Nota</span></p><p>
<sup>1</sup> El stash es el guardado rápido toma el desorden del directorio de trabajo que es, los archivos controlados por la versión modificados y cambios almacenados y lo
guarda en un saco de cambios sin terminar que puede volver a usar en cualquier momento.
</p></div>
<dt>Función: <samp>magit-repolist-column-flag</samp></dt>
<dd>
Esta función inserta una bandera especificada por <samp>magit-repolist-column-flag-alist</samp>.
</dd>
<dd>
Por defecto indica si hay cambios no comprometidos.
<ul>
<li><samp>N</samp> si hay al menos un fichero sin seguimiento.</li>
<li><samp>U</samp> si hay al menos un fichero sin clasificar.</li>
<li><samp>S</samp> si hay al menos un fichero en staged.</li>
</ul>
</dd>
<dd>Sólo se muestra el primero de ellos que se aplica.</dd>
<dt>Función: <samp>magit-repolist-column-flags</samp></dt>
<dd>
Esta función inserta todas las banderas especificadas por <samp>magit-repolist-column-flag-alist</samp>.
</dd>
<dd>
Es una alternativa a la función <samp>magit-repolist-column-flag</samp>, que sólo lista la primera encontrada.
</dd>
<dt>Función: <samp>magit-repolist-column-unpulled-from-upstream</samp></dt>
<dd>
Esta función inserta el número de confirmaciones "aguas arribas" (upstream) que no están en la rama actual.
</dd>
<dt>Función: <samp>magit-repolist-column-unpulled-from-pushremote</samp></dt>
<dd>
Esta función inserta el número de confirmaciones en la rama push (en la rama a la que se va a empujar) pero no en la rama actual.
</dd>
<dt>Función: <samp>magit-repolist-column-unpushed-to-upstream</samp></dt>
<dd>
Esta función inserta el número de confirmaciones en la rama actual pero no en su rama ascendente.
</dd>
<dt>Función: <samp>magit-repolist-column-unpushed-to-pushremote</samp></dt>
<dd>
Esta función inserta el número de confirmaciones en la rama actual pero no en su rama push.
</dd>
<dd>
Los siguientes comandos están disponibles en los buffers de repolist:
</dd>
<dt><kbd>RET</kbd> (<i><samp>RET</samp></i>, <samp>magit-repolist-status</samp>)</dt>
<dd>
Este comando muestra el estado del repositorio en un punto.
</dd>
<dt><kbd>m</kbd> (<i><samp>m</samp></i>, <samp>magit-repolist-mark</samp>)</dt>
<dd>
Este comando marca el repositorio en el punto.
</dd>
<dt><kbd>u</kbd> (<i><samp>u</samp></i>, <samp>magit-repolist-unmark</samp>)</dt>
<dd>
Este comando desmarca el repositorio en el punto.
</dd>
<dt><kbd>f</kbd> (<i><samp>f</samp></i>, <samp>magit-repolist-fetch</samp>)</dt>
<dd>
Este comando obtiene todos los repositorios marcados. Si no se ha marcado ningún repositorio, se ofrecen todos los repositorios mostrados.
</dd>
<dt><kbd>5</kbd> (<i><samp>5</samp></i>, <samp>magit-repolist-find-file-other-frame</samp>)</dt>
<dd>
Este comando lee un nombre de fichero relativo (sin completar) y abre el fichero respectivo en cada repositorio marcado en un nuevo marco. Si no hay ningún repositorio marcado,
ofrece hacer esto para todos los repositorios mostrados.
</dd>
</dl>
<h2 id="registros">Registros<a href="#registros"></a></h2>
<p>
El buffer de estado contiene logs para las confirmaciones no empujadas y no traídas, pero eso obviamente no es suficiente. El comando de prefijo transitorio <samp>magit-log</samp>, en
<samp>l</samp>, cuenta con varios comandos de sufijo, que muestran un registro específico en un buffer de registro separado.
</p>
<p>
Al igual que otros comandos de prefijo transitorio, <samp>magit-log</samp> también cuenta con varios argumentos infijos que pueden cambiarse antes de invocar uno de los comandos de
sufijo. Sin embargo, en el caso del log transitorio, estos argumentos pueden tomarse de los que están actualmente en uso en el buffer de logs del repositorio actual, dependiendo del
valor de <samp>magit-prefix-use-buffer-arguments</samp> (vea <a href="#@GENDOC:argumentos_transitorios_y_variables_de_buffer@" onclick="c('@GENDOC:argumentos_transitorios_y_variables_de_buffer@')">Argumentos transitorios y variables de buffer</a>).
</p>
<p>Para más información sobre los distintos argumentos, consulte la página de manual de <a href="https://git-scm.com/docs/git-log" target="new"> git-log(1)</a>.</p>
<p>
La opción <samp>++order=VALUE</samp> se convierte en una de las opciones <samp>--author-date-order</samp>, <samp>--date-order</samp>, o <samp>--topo-order</samp> antes de pasarla a <samp>git log</samp>.
</p>
<p>El transitorio log también incluye varios comandos reflog. Vea <a href="#reflog" onclick="c('reflog')">Reflog</a>.</p>
<dl>
<dt><kbd>l</kbd> (<i><samp>l</samp></i>, <samp>magi-log</samp>)</dt>
<dd>
Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se invoque
un sufijo.
</dd>
<dt><kbd>l</kbd><kbd>l</kbd> (<i><samp>l l</samp></i>, <samp>magit-log-current</samp>)</dt>
<dd>
Muestra el registro de la rama actual. Cuando <samp>HEAD</samp> está separado o con un argumento prefijo, muestra el registro de una o más revs leídas desde el minibuffer.
</dd>
<dt><kbd>l</kbd><kbd>h</kbd> (<i><samp>l h</samp></i>, <samp>magit-log-head</samp>)</dt>
<dd>
Muestra registro para <samp>HEAD</samp>.
</dd>
<dt><kbd>l</kbd><kbd>u</kbd> (<i><samp>l u</samp></i>, <samp>magit-log-related</samp>)</dt>
<dd>
Muestra el registro de la rama actual, su flujo ascendente y su destino push. Cuando el flujo ascendente es una rama local, muestra también su propio flujo ascendente. Cuando
<samp>HEAD</samp> se separa, muestra el registro de esa rama, de la rama previamente extraída, de su flujo ascendente y de su objetivo push.
</dd>
<dt><kbd>l</kbd><kbd>o</kbd> (<i><samp>l o</samp></i>, <samp>magit-log-other</samp>)</dt>
<dd>
Muestra el registro de una o más revisiones leídas desde el minibuffer. El Usuario puede introducir cualquier revisión o revisiones separadas por un espacio, o incluso rangos,
pero sólo las ramas, etiquetas y una representación de la confirmación en el punto están disponibles como candidatos de finalización.
</dd>
<dt><kbd>l</kbd><kbd>L</kbd> (<i><samp>l L</samp></i>, <samp>magit log branches</samp>)</dt>
<dd>
Muestra registro de todas las sucursales locales y <samp>HEAD</samp>.
</dd>
<dt><kbd>l</kbd><kbd>b</kbd> (<i><samp>l b</samp></i>, <samp>magit-log-all-branches</samp>)</dt>
<dd>
Muestra el registro de todas las sucursales locales, remotas y <samp>HEAD</samp>.
</dd>
<dt><kbd>l</kbd><kbd>a</kbd> (<i><samp>l a</samp></i> <samp>magit-log-all</samp>)</dt>
<dd>
Muestra registro de todas las referencias y <samp>HEAD</samp>.
</dd>
</dl>
<p>
Existen dos comandos adicionales que muestran el registro del archivo o blob que se está visitando en el búfer actual, véase <a href="#comandos_para_buferes_que_visitan_archivos" onclick="c('comandos_para_buferes_que_visitan_archivos')">Comandos para búferes que visitan archivos</a>. El
comando <samp>magit-cherry</samp> también muestra un log, vea <a href="#cherries" onclick="c('cherries')">Cherries</a>.
</p>
<h3 id="actualizacion_de_registros">Actualización de Registros<a href="#actualizacion_de_registros"></a></h3>
<p>
El comando de prefijo transitorio <samp>magit-log-refresh</samp>, en <samp>L</samp>, puede utilizarse para cambiar los argumentos de registro utilizados en el búfer actual, sin cambiar qué
registro se muestra. Esto funciona en búferes de registro dedicados, pero también en el búfer de estado.
</p>
<dl>
<dt><kbd>L</kbd> (<i><samp>L</samp></i>, <samp>magit-log-refresh</samp>)</dt>
<dd>
Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se invoque
un sufijo.
</dd>
<dt><kbd>L</kbd><kbd>g</kbd> (<i><samp>L g</samp></i>, <samp>magit-log-refresh</samp>)</dt>
<dd>
Este comando de sufijo establece los argumentos de registro local para el búfer actual.
</dd>
<dt><kbd>L</kbd><kbd>s</kbd> (<i><samp>L s</samp></i>, <samp>magit-log-set-default-arguments</samp>)</dt>
<dd>
Este comando de sufijo establece los argumentos de registro predeterminados para los búferes del mismo tipo que el del búfer actual. Otros buffers existentes del mismo tipo no se
ven afectados porque sus valores locales ya han sido inicializados.
</dd>
<dt><kbd>L</kbd><kbd>w</kbd> (<i><samp>L w</samp></i>, <samp>magit-log-save-default-arguments</samp>)</dt>
<dd>
Este comando de sufijo establece los argumentos de registro por defecto para buffers del mismo tipo que el del buffer actual, y guarda el valor para futuras sesiones. Otros
buffers existentes del mismo tipo no se ven afectados porque sus valores locales ya han sido inicializados.
</dd>
<dt><kbd>L</kbd><kbd>L</kbd> (<i><samp>L L</samp></i>, <samp>magit-toggle-margin</samp>)</dt>
<dd>Muestra u oculta el margen.</dd>
</dl>
<h3 id="bufer_de_registro">Búfer de registro<a href="#bufer_de_registro"></a></h3>
<dl>
<dt><kbd>L</kbd> (<i><samp>L</samp></i>, <samp>magit-log-refresh</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dd>Consulte <a href="#@GENDOC:actualizar_registros@" onclick="c('@GENDOC:actualizar_registros@')">Actualizar registros</a>.</dd>
<dt><kbd>q</kbd> (<i><samp>q</samp></i>, <samp>magit-log-bury-buffer</samp>)</dt>
<dd>
Entierra el buffer actual o el buffer de revisión en el mismo marco. Como <samp>magit-mode-bury-buffer</samp> (que ver) pero con un argumento prefijo negativo en lugar de enterrar el
búfer de revisión, siempre que se muestre en el marco actual.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>b</kbd> (<i><samp>C-c C-b</samp></i>, <samp>magit-go-backward</samp>)</dt>
<dd>
Retrocede en el historial de la memoria intermedia actual.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>b</kbd> <kbd>Ctrl</kbd>-<kbd>f</kbd> (<i><samp>C-c C-f</samp></i>, <samp>magit-go-forward</samp>)</dt>
<dd>
Avanza en la historia del búfer actual.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>n</kbd> (<i><samp>C-c C-n</samp></i>, <samp>magit-log-move-to-parent</samp>)</dt>
<dd>
Mover a un padre de la confirmación actual. Por defecto, este es el primer padre, pero se puede utilizar un prefijo numérico para especificar otro padre.
</dd>
<dt><kbd>j</kbd> (<i><samp>j</samp></i>, <samp>magit-log-move-to-revision</samp>)</dt>
<dd>
Lee una revisión y se desplaza a ella en el búfer de registro actual.
</dd>
<dd>
Si la referencia o revisión elegida no se muestra en el buffer de registro actual, informa al usuario de ello y no hace nada más.
</dd>
<dd>
Si se invoca fuera de cualquier búfer de registro, entonces muestra primero el búfer de registro del repositorio actual; creándolo si es necesario.
</dd>
<dt><kbd>SPC</kbd> (<i><samp>SPC</samp></i>, <samp>magit-diff-show-or-scroll-up</samp>)</dt>
<dd>Actualiza el buffer de confirmación o diff para la cosa en el punto.</dd>
<dd>
Muestra la confirmación o stash en el punto en el buffer apropiado, o si ese buffer ya se está mostrando en el marco actual y contiene información sobre esa confirmación o stash,
entonces desplaza el buffer hacia arriba. Si no hay confirmación o stash en el punto, entonces pide una confirmación.
</dd>
<dt><kbd>DEL</kbd> (<i><samp>DEL</samp>, <samp>magit-diff-show-or-scroll-down</samp></i>)</dt>
<dd>
Actualiza el buffer de commit o diff para la cosa en el punto.
</dd>
<dd>
Muestra la confirmación o stash en el punto en el buffer apropiado, o si ese buffer ya se está mostrando en el marco actual y contiene información sobre esa confirmación o stash,
entonces desplaza el buffer hacia abajo. Si no hay confirmación o stash en el punto, entonces pide una confirmación.
</dd>
<dt><kbd>=</kbd> (<i><samp>=</samp></i>, <samp>magit-log-toggle-commit-limit</samp>)</dt>
<dd>
Cambia el número de confirmaciones al que está limitado el búfer de registro actual. Si el número de confirmaciones está limitado, elimínelo. De lo contrario, ajústelo a 256.
</dd>
<dt><kbd>+</kbd> (<i><samp>+</samp></i>, <samp>magit-log-double-commit-limit</samp>)</dt>
<dd>
Duplica el número de confirmaciones al que está limitado el búfer de registro actual.
</dd>
<dt><kbd>-</kbd> (<i><samp>-</samp></i>, <samp>magit-log-half-commit-limit</samp>)</dt>
<dd>
La mitad del número de confirmaciones al que está limitado el búfer de registro actual.
</dd>
<dt>Opción de Usuario: <samp>magit-log-auto-more</samp></dt>
<dd>
Inserta más entradas de registro automáticamente al pasar de la última entrada. Sólo se tiene en cuenta cuando se pasa de la última entrada con comandos
<samp>magit-goto-*-section</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-log-show-refname-after-summary</samp></dt>
<dd>
Si desea mostrar los nombres de referencia después de los resúmenes de confirmación. Esto es útil si usa nombres de rama muy largos.
</dd>
</dl>
<p>Magit muestra las referencias en los logs de forma un poco diferente a como lo hace Git.</p>
<p>
Las ramas locales son azules y las remotas verdes. Por supuesto, esto depende del tema usado, al igual que los colores usados para otros tipos de referencias. La rama actual
tiene un recuadro a su alrededor, al igual que las ramas remotas que son la rama <samp>HEAD</samp> de su respectiva rama remota.
</p>
<p>
Si una rama local y su push-target apuntan a la misma confirmación, entonces sus nombres se combinan para preservar el espacio y hacer visible esa relación. Por ejemplo:
</p>
<div class="pre"><pre>
origin/feature
[green][blue-]
instead of
feature origin/feature
[blue-] [green-------]
</pre></div>
<p>
Tenga en cuenta también que aunque el transient incluye el argumento <samp>--show-signature</samp>, en realidad no se usará cuando esté habilitado, porque Magit usa por defecto sólo una
línea por confirmación. En su lugar, la confirmación se colorea para indicar la validez del objeto de confirmación firmado, usando las caras denominadas magit-signature-* (vea which).
</p>
<p>
Para una descripción de <samp>magit-log-margin</samp>, véase <samp>Log Margin</samp>.
</p>
<h3 id="margen_de_registro">Margen de Registro<a href="#margen_de_registro"></a></h3>
<p>
En los buffers que muestran uno o más logs, es posible mostrar información adicional sobre cada confirmación en el margen. Las opciones usadas para configurar el margen se denominan
<samp>magit-INFIX-margin</samp>, donde INFIX es lo mismo que en el respectivo modo principal <samp>magit-INFIX-mode</samp>. En los búferes de registro normales sería
<samp>magit-log-margin</samp>.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-log-margin</samp></dt>
<dd>
Esta opción especifica si el margen se muestra inicialmente en los buffers del modo Magit-Log y cómo se formatea.
</dd>
<dd>
El valor tiene la forma <samp>(INIT STYLE WIDTH AUTHOR AUTHOR-WIDTH)</samp>.
<ul>
<li>Si INIT no es nulo, entonces se muestra el margen inicialmente.</li>
<li>
STYLE controla el formato de la fecha del autor o del committer. Puede ser <samp>age</samp> (para mostrar la edad de la confirmación), <samp>age-abbreviated</samp> (para abreviar
la unidad de tiempo a un carácter), o una cadena (adecuada para <samp>format-time-string</samp>) para mostrar la fecha real. La opción
<samp>magit-log-margin-show-committer-date</samp> controla qué fecha se muestra.
</li>
<li>WIDTH controla la anchura del margen. Esto existe por compatibilidad futura y actualmente el valor no debe cambiarse.</li>
<li>AUTHOR controla si el nombre del autor también se muestra por defecto.</li>
<li>AUTHOR-WIDTH debe ser un número entero. Cuando se muestra el nombre del autor, esto especifica cuánto espacio se utiliza para hacerlo.</li>
</ul>
</dd>
</dl>
<p>
Puede cambiar el STYLE y el AUTHOR-WIDTH de todas las opciones de <samp>magit-INFIX-margin</samp> a los mismos valores personalizando <samp>magit-log-margin</samp> <b>antes</b> de cargar
magit. Si lo hace, los valores respectivos de las demás opciones serán por defecto los que haya establecido para esa variable. Del mismo modo, si establece INIT en
<samp>magit-log-margin</samp> a <samp>nil</samp>, entonces se usará en el valor por defecto de todas las demás opciones. Pero si lo fija en <samp>t</samp>, es decir, si refuerza el valor por
defecto de esa opción, no se aplicará a las demás opciones.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-log-margin-show-committer-date</samp></dt>
<dd>
Esta opción especifica si se muestra la fecha del autor en el margen. Esta opción sólo controla si se muestra la fecha del autor en lugar de la fecha del autor. Si se muestra
alguna fecha en el margen y si se muestra el margen en absoluto se controla mediante otras opciones.
</dd>
<dt><kbd>L</kbd> (<i><samp>L</samp></i>, <samp>magit-margin-settings</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo, cada uno de los cuales cambia la apariencia del margen de alguna manera.
</dd>
</dl>
<p>
En algunos buffers que soportan el margen, <samp>L</samp> está en cambio ligado a <samp>magit-log-refresh</samp>, pero ese transitorio presenta los mismos comandos, y luego algunos otros
comandos no relacionados.
</p>
<dl>
<dt><kbd>L</kbd><kbd>L</kbd> (<i><samp>L L</samp>, <samp>magit-toggle-margin</samp></i>)</dt>
<dd>Este comando muestra u oculta el margen.</dd>
<dt><kbd>L</kbd><kbd>l</kbd> (<i><samp>L l</samp></i>, <samp>magit-cycle-margin-style</samp>)</dt>
<dd>Este comando cicla el estilo utilizado para el margen.</dd>
<dt><kbd>L</kbd><kbd>d</kbd> (<i><samp>L d</samp></i>, <samp>magit-toggle-margin-details</samp>)</dt>
<dd>Este comando muestra u oculta detalles en el margen.</dd>
</dl>
<h3 id="seleccionar_desde_el_registro">Seleccionar desde el registro<a href="#seleccionar_desde_el_registro"></a></h3>
<p>
Cuando el Usuario tiene que seleccionar una confirmación reciente que es accesible desde <samp>HEAD</samp>, usar el completado regular sería inconveniente (porque la mayoría de los
humanos no pueden recordar hashes o "HEAD~5", al menos no sin una doble comprobación). En su lugar, se usa un búfer de registro para seleccionar la confirmación, lo que tiene la
ventaja de que las confirmaciones se presentan en orden y con el mensaje de confirmación.
</p>
<p>
Estos registros de selección se usan cuando se selecciona el comienzo de un rebase y cuando se selecciona la confirmación en la que se va a aplastar.
</p>
<p>
Además de las combinaciones de teclas disponibles en todas las memorias intermedias de registro, las siguientes combinaciones de teclas adicionales están disponibles en las memorias
intermedias de registro de selección:
</p>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>c</kbd> (<i><samp>C-c C-c</samp></i>, <samp>magit-log-select-pick</samp>)</dt>
<dd>
Selecciona la confirmación en el punto y actúa sobre ella. Llama a <samp>magit-log-select-pick-function</samp> con la confirmación seleccionada como argumento.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>k</kbd> (<i><samp>C-c C-k</samp></i>, <samp>magit-log-select-quit</samp>)</dt>
<dd>
Abortar seleccionando una confirmación, no actuar sobre ninguna confirmación.
</dd>
<dt>Opción de Usuario: <samp>magit-log-select-margin</samp></dt>
<dd>
Esta opción especifica si el margen se muestra inicialmente en los buffers del modo Magit-Log-Select y cómo se formatea.
</dd>
<dd>
El valor tiene la forma <samp>(INIT STYLE WIDTH AUTHOR AUTHOR-WIDTH)</samp>.
<ul>
<li>Si INIT no es nulo, entonces se muestra el margen inicialmente.</li>
<li>
STYLE controla el formato de la fecha del autor o del confirmante. Puede ser <samp>age</samp> (para mostrar la edad de la confirmación), <samp>age-abbreviated</samp> (para
abreviar la unidad de tiempo a un carácter), o una cadena (adecuada para <samp>format-time-string</samp>) para mostrar la fecha real. La opción
<samp>magit-log-margin-show-committer-date</samp> controla qué fecha se muestra.
</li>
<li>WIDTH controla la anchura del margen. Esto existe por compatibilidad futura y actualmente el valor no debe cambiarse.</li>
<li>AUTHOR controla si el nombre del autor también se muestra por defecto.</li>
<li>AUTHOR-WIDTH debe ser un número entero. Cuando se muestra el nombre del autor, esto especifica cuánto espacio se utiliza para hacerlo.</li>
</ul>
</dd>
</dl>
<h3 id="reflog">Reflog<a href="#reflog"></a></h3>
<p>Consulte también la página de manual de <a href="http://git-scm.com/docs/git-reflog" target="new">git-reflog(1)</a>.</p>
<p>Estos comandos reflog están disponibles desde log transient. Ver <a href="#registros" onclick="c('registros')">Registros</a>.</p>
<dl>
<dt><kbd>l</kbd><kbd>r</kbd> (<i><samp>l r</samp></i>, <samp>magit-reflog-current</samp>)</dt>
<dd>
Muestra el reflog de la rama actual.
</dd>
<dt><kbd>l</kbd><kbd>O</kbd> (<i><samp>l O</samp></i>, <samp>magit-reflog-other</samp>)</dt>
<dd>Muestra el reflog de una rama u otra ref.</dd>
<dt>
<kbd>l</kbd><kbd>H</kbd> (<i><samp>l H</samp></i>, <samp>magit-reflog-head</samp>)</dt>
<dd>Muestra el registro <samp>HEAD</samp>.</dd>
<dt>Opción de Usuario: <samp>magit-reflog-margin</samp></dt>
<dd>
Esta opción especifica si el margen se muestra inicialmente en las memorias intermedias del modo Magit-Reflog y cómo se formatea.
</dd>
<dd>
El valor tiene la forma <samp>(INIT STYLE WIDTH AUTHOR AUTHOR-WIDTH)</samp>
<ul>
<li>Si INIT no es nulo, entonces se muestra el margen inicialmente.</li>
<li>
STYLE controla el formato de la fecha del autor o del confirmador. Puede ser <samp>age</samp> (para mostrar la edad de la confirmación), <samp>age-abbreviated</samp> (para
abreviar la unidad de tiempo a un carácter), o una cadena (adecuada para <samp>format-time-string</samp>) para mostrar la fecha real. La opción
<samp>magit-log-margin-show-committer-date</samp> controla qué fecha se muestra.
</li>
<li>WIDTH controla la anchura del margen. Esto existe por compatibilidad futura y actualmente el valor no debe cambiarse.</li>
<li>AUTHOR controla si el nombre del autor también se muestra por defecto.</li>
<li>AUTHOR-WIDTH debe ser un número entero. Cuando se muestra el nombre del autor, esto especifica cuánto espacio se utiliza para hacerlo.</li>
</ul>
</dd>
</dl>
<h3 id="cherries">Cherries<a href="#cherries"></a></h3>
<p>
Cherry-pick es mover trabajo de una rama a otra entresacandolo.
</p>
<p>
Los cherry-pick son confirmaciones que no se han aplicado al flujo ascendente (todavía), y normalmente se visualizan mediante un registro. Cada confirmación lleva el prefijo
<samp>-</samp> si tiene un equivalente en el flujo ascendente y <samp>+</samp> si no lo tiene, es decir, si es un entresacado.
</p>
<p>
El comando <samp>magit-cherry</samp> muestra cherry para una única rama, pero el buffer de referencias (vea <a href="#@GENDOC:buffer_de_referencias@" onclick="c('@GENDOC:buffer_de_referencias@')">Buffer de referencias</a>) puede mostrar cherries para múltiples
"upstreams" a la vez.
</p>
<p>Véase también la página de manual de <a href="http://git-scm.com/docs/git-reflog" target="new">git-reflog(1)</a>.</p>
<dl>
<dt><kbd>Y</kbd> (<i><samp>Y</samp></i>, <samp>magit-cherry</samp>)</dt>
<dd>
Muestra las confirmaciones que están en una rama determinada pero que no se han fusionado en la rama ascendente.
</dd>
<dt>Opción de Usuario: <samp>magit-cherry-margin</samp></dt>
<dd>
Esta opción especifica si el margen se muestra inicialmente en los buffers del modo Magit-Cherry y cómo se formatea.
</dd>
<dd>
El valor tiene la forma <samp>(INIT STYLE WIDTH AUTHOR AUTHOR-WIDTH)</samp>
<ul>
<li>Si INIT no es nulo, entonces el margen se muestra inicialmente.</li>
<li>
STYLE controla el formato de la fecha del autor o del confirmador. Puede ser <samp>age</samp> (para mostrar la edad de la confirmación), <samp>age-abbreviated</samp> (para
abreviar la unidad de tiempo a un carácter), o una cadena (adecuada para <samp>format-time-string</samp>) para mostrar la fecha real. La opción
<samp>magit-log-margin-show-committer-date</samp> controla qué fecha se muestra.
</li>
<li>WIDTH controla la anchura del margen. Esto existe por compatibilidad futura y actualmente el valor no debe cambiarse.</li>
<li>AUTHOR controla si el nombre del autor también se muestra por defecto.</li>
<li>AUTHOR-WIDTH debe ser un número entero. Cuando se muestra el nombre del autor, esto especifica cuánto espacio se utiliza para hacerlo.</li>
</ul>
</dd>
</dl>
<h2 id="difusion">Difusión<a href="#difusion"></a></h2>
<p>
El buffer de estado contiene diffs para las confirmaciones preparadas o no (staged y unstaged), pero eso obviamente no es suficiente. El comando de prefijo transitorio
<samp>magit-diff</samp>, en d, incluye varios comandos de sufijo, que muestran un diff específico en un buffer de diff separado.
</p>
<p>
Al igual que otros comandos de prefijo transitorio, <samp>magit-diff</samp> también cuenta con varios argumentos infijos que se pueden cambiar antes de invocar uno de los comandos de
sufijo. Sin embargo, en el caso del transitorio diff, estos argumentos pueden ser tomados de los que están actualmente en uso en el buffer diff del repositorio actual, dependiendo
del valor de <samp>magit-prefix-use-buffer-arguments</samp> (ver <a href="#@GENDOC:argumentos_transitorios_y_variables_del_buffer@" onclick="c('@GENDOC:argumentos_transitorios_y_variables_del_buffer@')">Argumentos transitorios y variables del buffer</a>).
</p>
<p>
También consulte la página de manual de <a href="http://git-scm.com/docs/git-diff" target="new">git-diff(1)</a>.
</p>
<dl>
<dt><kbd>d</kbd> (<i><samp>d</samp></i>, <samp>magit-diff</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dt><kbd>d</kbd><kbd>d</kbd> (<i><samp>d d</samp></i>, <samp>magit-diff-dwim</samp>)</dt>
<dd>
Mostrar cambios para la cosa en punto.
</dd>
<dt><kbd>d</kbd><kbd>r</kbd> (<i><samp>d r</samp></i>, <samp>magit-diff-range</samp>)</dt>
<dd>
Muestra las diferencias entre dos confirmaciones.
</dd>
<dd>
RANGE debe ser un rango (A..B o A...B) pero también puede ser una única confirmación. Si se omite un lado del rango, entonces por defecto es <samp>HEAD</samp>. Si sólo se indica una
confirmación, se muestran los cambios en el árbol de trabajo relativos a esa confirmación.
</dd>
<dd>
Si la región está activa, se utilizan las revisiones de la primera y última línea de la región. Con un argumento prefijo, en lugar de diferenciar las revisiones, elija una
revisión para ver los cambios a lo largo de ella, empezando en el ancestro común de ambas revisiones (es decir, use un rango "...").
</dd>
<dt><kbd>d</kbd><kbd>w</kbd> (<i><samp>d w</samp></i>, <samp>magit-diff-working-tree</samp>)</dt>
<dd>
Muestra los cambios entre el árbol de trabajo actual y la confirmación <samp>HEAD</samp>. Con un argumento prefijo muestra los cambios entre el árbol de trabajo y una confirmación
leída desde el minibuffer.
</dd>
<dt><kbd>d</kbd><kbd>s</kbd> (<i><samp>d s</samp></i>, <samp>magit-diff-staged</samp>)</dt>
<dd>
Muestra los cambios entre el índice y la confirmación <samp>HEAD</samp>. Con un argumento prefijo muestra los cambios entre el índice y una confirmación leída desde el minibuffer.
</dd>
<dt><kbd>d</kbd><kbd>u</kbd> (<i><samp>d u</samp></i>, <samp>magit-diff-unstaged</samp>)</dt>
<dd>
Muestra los cambios entre el árbol de trabajo y el índice.
</dd>
<dt><kbd>d</kbd><kbd>p</kbd> (<i><samp>d p</samp></i>, <samp>magit-diff-paths</samp>)</dt>
<dd>
Muestra los cambios entre dos archivos cualesquiera del disco.
</dd>
</dl>
<p>
Todos los comandos sufijo anteriores actualizan el buffer diff del repositorio. El transitorio diff también presenta dos comandos que muestran diferencias en otro buffer:
</p>
<dl>
<dt><kbd>d</kbd><kbd>c</kbd> (<i><samp>d c</samp></i>, <samp>magit-show-commit</samp>)</dt>
<dd>Muestra la confirmación en el punto. Si no hay confirmación en el punto o con un argumento prefijo, pide una confirmación.</dd>
<dt><kbd>d</kbd><kbd>t</kbd> (<i><samp>d t</samp></i>, <samp>magit-stash-show</samp>)</dt>
<dd>Muestra todos los diffs de un stash (de un archivo escondido) en un buffer.</dd>
</dl>
<p>
Existen dos comandos adicionales que muestran el diff para el archivo o blob que está siendo visitado en el buffer actual, ver <a href="#@GENDOC:comandos_para_buffers_que_visitan_archivos@" onclick="c('@GENDOC:comandos_para_buffers_que_visitan_archivos@')">Comandos para Buffers que Visitan Archivos</a>.
</p>
<h3 id="refrescar_diffs">Refrescar diffs<a href="#refrescar_diffs"></a></h3>
<p>
El comando prefijo transitorio <samp>magit-diff-refresh</samp>, en <samp>D</samp>, puede usarse para cambiar los argumentos diff usados en el buffer actual, sin cambiar qué diff se muestra.
Esto funciona en buffers diff dedicados, pero también en el buffer de estado.
</p>
<p>
(Hay una excepción; los argumentos diff no pueden cambiarse en buffers creados por <samp>magit-merge-preview</samp> porque el comando Git subyacente no soporta estos argumentos).
</p>
<dl>
<dt><kbd>D</kbd> (<i><samp>D</samp></i>, <samp>magit-diff-refresh</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dt><kbd>D</kbd><kbd>g</kbd> (<i><samp>D g</samp></i>, <samp>magit-diff-refresh</samp>)</dt>
<dd>Este comando sufijo establece los argumentos diff locales para el búfer actual.</dd>
<dt><kbd>D</kbd><kbd>s</kbd> (<i><samp>D s</samp></i>, <samp>magit-diff-set-default-arguments</samp>)</dt>
<dd>
Este comando sufijo establece los argumentos diff por defecto para buffers del mismo tipo que el del buffer actual. Otros buffers existentes del mismo tipo no se ven afectados
porque sus valores locales ya han sido inicializados.
</dd>
<dt><kbd>D</kbd><kbd>w</kbd> (<i><samp>D w</samp></i>, <samp>magit-diff-save-default-arguments</samp>)</dt>
<dd>
Este comando sufijo establece los argumentos diff por defecto para buffers del mismo tipo que el del buffer actual, y guarda el valor para futuras sesiones. Otros buffers
existentes del mismo tipo no se ven afectados porque sus valores locales ya han sido inicializados.
</dd>
<dt><kbd>D</kbd><kbd>t</kbd> (<i><samp>D t</samp></i>, <samp>magit-diff-toggle-refine-hunk</samp>)</dt>
<dd>Este comando activa o desactiva el refinamiento de trozos.</dd>
<dt><kbd>D</kbd><kbd>r</kbd> (<i><samp>D r</samp></i>, <samp>magit-diff-switch-range-type</samp>)</dt>
<dd>
Este comando convierte el tipo de rango diff de "revA..revB" a "revB...revA", o viceversa.
</dd>
<dt><kbd>D</kbd><kbd>f</kbd> (<i><samp>D f</samp></i>, <samp>magit-diff-flip-revs</samp>)</dt>
<dd>Este comando intercambia las revisiones en el rango diff de "revA..revB" a "revB..revA", o viceversa.</dd>
<dt><kbd>D</kbd><kbd>F</kbd> (<i><samp>D F</samp></i>, <samp>magit-diff-toggle-file-filter</samp>)</dt>
<dd>
Este comando activa la restricción de ficheros de los diffs en el buffer actual, permitiéndole cambiar rápidamente entre ver todos los cambios de la confirmación y el subconjunto
restringido. Como caso especial, cuando este comando se ejecuta desde un buffer de registro, activa la restricción de ficheros en el buffer de revisiones del repositorio, lo que
es útil cuando visualiza una revisión desde un buffer de registro que está restringida a un fichero o ficheros.
</dd>
</dl>
<p>
Además del transitorio anterior, que permite cambiar cualquiera de los argumentos admitidos, también existen algunos comandos que cambian sólo un argumento concreto.
</p>
<dl>
<dt><kbd>-</kbd> (<samp>-</samp>, <samp>magit-diff-less-context</samp>)</dt>
<dd>Este comando disminuye el contexto para la diferencia entre los trozos (diff hunks) por CUENTA líneas.</dd>
<dt><kbd>+</kbd> (<samp>+</samp>, <samp>magit-diff-more-context</samp>)</dt>
<dd>Este comando aumenta el contexto para diff hunks en CUENTAS líneas.</dd>
<dt><kbd>0</kbd> (<i><samp>0</samp>, <samp>magit-diff-default-context</samp></i>)</dt>
<dd>Este comando restablece el contexto para los diff hunks a la altura por defecto.</dd>
</dl>
<p>Los siguientes comandos cambian rápidamente el diff que se está mostrando sin tener que usar uno de los diff transitorios.</p>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>d</kbd> (<i><samp>C-c C-d</samp></i>, <samp>magit-diff-while-committing</samp>)</dt>
<dd>
Al confirmar, este comando muestra los cambios que están a punto de confirmarse. Al modificar, si se vuelve a invocar el comando, se muestra sólo los cambios nuevos o todos los
cambios que se van a confirmar.
</dd>
<dd>Esta vinculación está disponible tanto en el búfer diff como en el búfer de mensajes de confirmación.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>b</kbd> (<i><samp>C-c C-b</samp></i>, <samp>magit-go-backward</samp>)</dt>
<dd>Este comando retrocede en el historial del búfer actual.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>f</kbd> (<i><samp>C-c C-f</samp></i>, <samp>magit-go-forward</samp>)</dt>
<dd>Este comando avanza en el historial del búfer actual.</dd>
</dl>
<h3 id="comandos_disponibles_en_los_diffs">Comandos disponibles en los diffs<a href="#comandos_disponibles_en_los_diffs"></a></h3>
<p>Algunos comandos sólo están disponibles si el punto está dentro de un diff.</p>
<p>
<samp>magit-diff-visit-file</samp> y las órdenes relacionadas visitan la versión apropiada del fichero del que trata el diff en el punto. Del mismo modo,
<samp>magit-diff-visit-worktree-file</samp> y las órdenes relacionadas visitan la versión del árbol de trabajo del archivo del que trata el diff en el punto. Consulte Visitar archivos y
blobs desde un diff para obtener más información y las combinaciones de teclas.
</p>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>t</kbd> (<i><samp>C-c C-t</samp></i>, <samp>magit-diff-trace-definition</samp>)</dt>
<dd>Este comando muestra un registro de la definición en el punto.</dd>
<dt>Opción de Usuario: <samp>magit-log-trace-definition-function</samp></dt>
<dd>
La función especificada por esta opción es usada por <samp>magit-log-trace-definition</samp> para determinar la función en el punto. Para los modos principales que tienen necesidades
especiales, puede establecer el valor local utilizando el gancho del modo.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>e</kbd> (<i><samp>C-c C-e</samp></i>, <samp>magit-diff-edit-hunk-commit</samp>)</dt>
<dd>Desde un trozo (hunk), este comando edita la confirmación respectiva y visita el archivo.</dd>
<dd>
Primero visita el archivo que está siendo modificado por el trozo en la ubicación correcta usando <samp>magit-diff-visit-file</samp>. Esto en realidad visita un blob. Cuando el punto
está en una cabecera diff, no dentro de un trozo individual, entonces este visita el trozo del que trata el primer trozo.
</dd>
<dd>
Entonces invoca <samp>magit-edit-line-commit</samp>, que usa un rebase interactivo para hacer editable la confirmación, o si eso no es posible porque la confirmación no es accesible
desde <samp>HEAD</samp> comprobando ese commit directamente. Esto también hace que se visite el archivo del árbol de trabajo real.
</dd>
<dd>
Ni el blob ni el buffer del fichero son eliminados al finalizar el rebase. Si esto no es deseable, entonces puede ser mejor usar <samp>magit-rebase-edit-commit</samp> en lugar de
este comando.
</dd>
<dt><kbd>j</kbd> (<i><samp>j</samp></i>, <samp>magit-jump-to-diffstat-or-diff</samp>)</dt>
<dd>
Este comando salta al diffstat o diff. Cuando el punto está en un archivo dentro de la sección diffstat, entonces salta a la sección diff respectiva. De lo contrario, salta a la
sección diffstat o a un hijo de ésta.
</dd>
</dl>
<p>
Los dos comandos siguientes no son específicos del modo Magit-Diff (ni del búfer Magit), pero merece la pena señalar que también están disponibles aquí.
</p>
<dl>
<dt><kbd>SPC</kbd> (<i><samp>SCP</samp></i>, <samp>scroll-up</samp>)</dt>
<dd>Este comando desplaza el texto hacia arriba.</dd>
<dt><kbd>DEL</kbd> (<i><samp>DEL</samp></i>, <samp>scroll-down</samp>)</dt>
<dd>Este comando desplaza el texto hacia abajo.</dd>
</dl>
<h3 id="opciones_diff">Opciones Diff<a href="#opciones_diff"></a></h3>
<dl>
<dt>Opción de Usuario: <samp>magit-diff-refine-hunk</samp></dt>
<dd>
Si mostrar o no diferencias de granularidad de palabras dentro de los diff de los trozos.
<ul>
<li><samp>nil</samp> No mostrar nunca diferencias finas.</li>
<li><samp>t</samp> Mostrar diferencias finas sólo para el grupo de diferencias actual.</li>
<li><samp>all</samp> Mostrar diferencias finas para todos los diff hunks mostrados.</li>
</ul>
</dd>
<dt>Opción de Usuario: <samp>magit-diff-refine-ignore-whitespace</samp></dt>
<dd>Si se deben ignorar los cambios de espacios en blanco en las diferencias de granularidad de palabras.</dd>
<dt>Opción de Usuario: <samp>magit-diff-adjust-tab-width</samp></dt>
<dd>
Define si se ajusta el ancho de las pestañas en los diffs.
</dd>
<dd>
Determinar el ancho correcto puede ser costoso si requiere abrir archivos grandes y/o muchos, por lo que los anchos se almacenan en caché en la variable
<samp>magit-diff--tab-width-cache</samp>. Establézcala a nil para invalidar la caché.
<ul>
<li><samp>nil</samp>: nunca ajusta el ancho de tabulación. Usa el valor de 'tab-width del propio buffer Magit.</li>
<li>
<samp>t</samp>: si el búfer correspondiente que visita el archivo existe, entonces usa el valor de <samp>tab-width</samp> de ese búfer. Hacer esto no es costoso, así que este
valor se usa incluso si existe una entrada de caché correspondiente.
</li>
<li><samp>always</samp>: si no existe tal búfer, entonces visita temporalmente el archivo para determinar el valor.</li>
<li>NUMBER: como <samp>alway</samp>, pero no visita archivos mayores que NUMBER bytes.</li>
</ul>
</dd>
<dt>Opción de Usuario: <samp>magit-diff-paint-whitespace</samp></dt>
<dd>
Especifica dónde resaltar los errores de espacio en blanco.
</dd>
<dd>
Véase <samp>magit-diff-highlight-trailing</samp>, <samp>magit-diff-highlight-indentation</samp>. El símbolo <samp>t</samp> significa en todos los diffs, <samp>status</samp> significa sólo en el
buffer de estado, y nil significa en ningún sitio.
<ul>
<li><samp>nil</samp>: no resalta nunca los errores de espacio en blanco.</li>
<li><samp>t</samp>: resalta los errores de espacio en blanco en todas partes.</li>
<li><samp>uncommitted</samp>: sólo resalta los errores de espacio en blanco en los diffs que muestran cambios no comprometidos. Por compatibilidad con versiones anteriores,
<samp>status</samp> se trata como un sinónimo.</li>
</ul>
</dd>
<dt>Opción de Usuario: <samp>magit-diff-paint-whitespace-lines</samp></dt>
<dd>
Especifica en qué tipo de líneas resaltar los errores de espacio en blanco.
<ul>
<li><samp>t</samp>: resalta sólo las líneas añadidas.</li>
<li>both: resalta las líneas añadidas y las eliminadas.</li>
<li><samp>all</samp>: resalta las líneas añadidas, eliminadas y contextuales.</li>
</ul>
</dd>
<dt>Opción de Usuario: <samp>magit-diff-highlight-trailing</samp></dt>
<dd>
Si se resaltan los espacios en blanco al final de una línea en los diffs. Sólo se usa cuando <samp>magit-diff-paint-whitespace</samp> es distinto de nil.
</dd>
<dt>Opción de Usuario: <samp>magit-diff-highlight-indentation</samp></dt>
<dd>
Esta opción controla si se resalta la sangría en caso de que se haya usado el estilo de sangría "incorrecto". La sangría sólo se resalta si <samp>magit-diff-paint-whitespace</samp>
también es no nil.
</dd>
<dd>
El valor es una lista de la forma <samp>((REGEXP . INDENT)...)</samp>. La ruta al repositorio actual se compara con cada elemento en orden inverso. Por lo tanto, si un REGEXP
coincide, no se buscarán los elementos anteriores.
</dd>
<dd>
Si el INDENT usado es <samp>tab</samp>, resalta la sangría con tabuladores. Si INDENT es un número entero, resalta la sangría con al menos ese número de espacios. En caso contrario,
no se resalta ninguna de las dos.
</dd>
<dt>Opción de Usuario: <samp>magit-diff-hide-trailing-cr-characters</samp></dt>
<dd>
Si se ocultan los caracteres ^M al final de una línea en los diffs.
</dd>
<dt>Opción de Usuario: <samp>magit-diff-highlight-hunk-region-functions</samp></dt>
<dd>Esta opción especifica las funciones usdas para resaltar la región interna del trozo.</dd>
<dd>
<samp>magit-diff-highlight-hunk-region-dim-outside</samp> superpone el exterior de la selección interna del trozo con una cara que hace que las líneas añadidas y eliminadas tengan el
mismo color de fondo que las líneas de contexto. Esta función no debe eliminarse del valor de esta opción.
</dd>
<dd>
<samp>magit-diff-highlight-hunk-region-using-overlays</samp> y <samp>magit-diff-highlight-hunk-region-using-underline</samp> enfatizan la región colocando líneas horizontales
delimitadoras antes y después de ella. Ambas funciones tienen fallos que no pueden solucionarse debido a las limitaciones del motor de visualización de Emacs. Para más
información, véase <a href="https://github.com/magit/magit/issues/2758" target="new">https://github.com/magit/magit/issues/2758</a>.
</dd>
<dd>
En lugar de, o además de, usar líneas horizontales delimitadoras, para enfatizar los límites, puede querer enfatizar el texto mismo, usando
<samp>magit-diff-highlight-hunk-region-using-face</samp>.
</dd>
<dd>En los marcos de terminal no es posible dibujar líneas como hacen normalmente las variantes de superposición y subrayado, por lo que se recurre a la función face.</dd>
<dt>Opción de Usuario: <samp>magit-diff-unmarked-lines-keep-foreground</samp></dt>
<dd>
Esta opción controla si las líneas añadidas y eliminadas fuera de la región interna de la concavidad sólo pierden su color de fondo distintivo o también el color de primer plano.
Si el exterior de la región se atenúa o no depende de <samp>magit-diff-highlight-hunk-region-functions</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-diff-extra-stat-arguments</samp></dt>
<dd>Esta opción especifica argumentos adicionales que se usarán junto con <samp>--stat</samp>.</dd>
<dd>
El valor es una lista de cero o más argumentos o una función que no recibe argumentos y devuelve dicha lista. Se permiten los siguientes argumentos <samp>--stat-width</samp>,
<samp>--stat-name-width</samp>, <samp>--stat-graph-width</samp> y <samp>--compact-summary</samp>. Consulte también la página de manual de <a href="http://git-scm.com/docs/git-diff" target="new">git-diff(1)</a>.
</dd>
</dl>
<h3 id="bufer_de_revision">Búfer de Revisión<a href="#bufer_de_revision"></a></h3>
<dl>
<dt>Opción de Usuario: <samp>magit-revision-insert-related-refs</samp></dt>
<dd>
Define si se muestran ramas relacionadas en los buffers de revisión.
<ul>
<li><samp>nil</samp>: no muestra ninguna rama relacionada.</li>
<li><samp>t</samp>: muestra las ramas locales relacionadas.</li>
<li><samp>all</samp>: muestra las ramas locales y remotas relacionadas.</li>
<li><samp>mixed</samp>: muestra todas las ramas contenedoras y las ramas locales fusionadas.</li>
</ul>
</dd>
<dt>Opción de Usuario: <samp>magit-revision-show-gravatars</samp></dt>
<dd>Define si se muestran imágenes de gravatar en los buffers de revisión.</dd>
<dd>
Si <samp>nil</samp>, no inserta ninguna imagen gravatar. Si <samp>t</samp>, inserta ambas imágenes. Si es <samp>author</samp> o <samp>committer</samp>, inserta sólo la imagen respectiva.
</dd>
<dd>
Si ha personalizado la opción <samp>magit-revision-headers-format</samp> y desea insertar las imágenes, puede que también tenga que especificar dónde hacerlo. En ese caso el valor
tiene que ser una con-celda de dos expresiones regulares. El auto especifica dónde insertar la imagen del autor. La mitad superior de la imagen se inserta justo después del texto
coincidente, la mitad inferior en la línea siguiente de la misma columna. La cdr especifica dónde insertar la imagen del autor, según corresponda. Tanto el car como el cdr pueden
ser nulos".
</dd>
<dt>Opción de Usuario: <samp>magit-revision-use-hash-sections</samp></dt>
<dd>Especifica si se convierten los hashes del mensaje de confirmación en secciones.</dd>
<dd>
Si no es nulo, los hashes del mensaje de confirmación se convierten en secciones de confirmación. Hay que elegir entre rendimiento y fiabilidad:
<ul>
<li><samp>slow</samp>: llama a git por cada palabra para estar absolutamente seguro.</li>
<li><samp>quick</samp>: omite palabras de menos de siete caracteres.</li>
<li><samp>quicker</samp>: omite además las palabras que no contienen un número.</li>
<li><samp>quickest</samp>: usa todas las palabras que tengan al menos siete caracteres y que contengan al menos un número y una letra.</li>
</ul>
</dd>
<dd>Si es nil, no se convierte ningún hash en secciones, pero se puede visitar el commit (la confirmación) en el punto usando "RET".</dd>
</dl>
<p>
Las diferencias mostradas en el búfer de revisión pueden restringirse automáticamente a un subconjunto de los ficheros cambiados. Si el búfer de revisión se muestra desde un búfer de
registro, el búfer de revisión compartirá la misma restricción de archivos que ese búfer de registro (véase también el comando <samp>magit-diff-toggle-file-filter</samp>).
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-revision-filter-files-on-follow</samp></dt>
<dd>
Define si se mostrará una confirmación desde un búfer de registro respetando el filtro de archivos del registro cuando los argumentos del registro incluyan <samp>--follow</samp>.
</dd>
<dd>
Cuando esta opción es nil, se muestra una confirmación desde un registro ignorando el filtro de archivos del registro si los argumentos del registro incluyen <samp>--follow</samp>.
De esta forma se evita mostrar un diff vacío en los buffers de revisión para confirmaciones anteriores a un evento de renombrado. En tales casos, el argumento <samp>--patch</samp>
del transitorio de registro puede usarse para mostrar los diffs restringidos por fichero en línea.
</dd>
<dd>Establezca esta opción a no nil para mantener la restricción de ficheros del registro incluso si <samp>--follow</samp> está presente en los argumentos del registro.</dd>
</dl>
<p>
Si el búfer de revisión no se muestra desde un búfer de registro, la restricción del archivo se determina de la forma habitual (véase <a href="#@GENDOC:argumentos_transitorios_y_variables_de_bufer@" onclick="c('@GENDOC:argumentos_transitorios_y_variables_de_bufer@')">Argumentos transitorios y variables de
búfer</a>).
</p>
<h2 id="ediff">Ediff<a href="#ediff"></a></h2>
<p>
Esta sección describe cómo introducir Ediff desde los buffers Magit. Para obtener información sobre cómo usar el propio Ediff, consulte <a href="https://www.gnu.org/software/emacs/manual/html_node/ediff/index.html#Top" target="new">(ediff)Top</a>.
</p>
<dl>
<dt><kbd>e</kbd> (<i><samp>e</samp></i>, <samp>magit-ediff-dwim</samp>)</dt>
<dd>Compara, prepara (stage) o resuelve usando Ediff.</dd>
<dd>
Este comando intenta adivinar qué fichero y qué confirmación o rango quiere el Usuario comparar, preparar o resolver usando Ediff. Puede que sólo sea capaz de adivinar el fichero
o el rango/commit, en cuyo caso se pregunta al Usuario por el otro. Puede que no siempre acierte, en cuyo caso el comando <samp>magit-ediff-*</samp> apropiado tiene que ser usado
explícitamente. Si no puede leer la mente del Usuario en absoluto, entonces pregunta por un comando a ejecutar.
</dd>
<dt><kbd>E</kbd> (<i><samp>E</samp></i>, <samp>magit-ediff</samp>)</dt>
<dd>
Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoque un sufijo.
</dd>
<dt><kbd>E</kbd><kbd>r</kbd> (<i><samp>E r</samp></i>, <samp>magit-ediff-compare</samp>)</dt>
<dd>Compara dos revisiones de un fichero usando Ediff.</dd>
<dd>
Si la región está activa, utiliza las revisiones de la primera y última línea de la región. Con un argumento prefijo, en lugar de diferenciar las revisiones, elija una revisión
para ver los cambios a lo largo de ella, comenzando en el ancestro común de ambas revisiones (es decir, use un rango "...").
</dd>
<dt><kbd>E</kbd><kbd>m</kbd> (<i><samp>E m</samp></i>, <samp>magit-ediff-resolve-rest</samp>)</dt>
<dd>
Este comando le permite resolver conflictos pendientes en el fichero en el punto usando Ediff. Si no hay ningún fichero en el punto o si no tiene ningún cambio sin fusionar, este
comando solicita un fichero.
</dd>
<dd>
Siempre que el valor de <samp>merge.conflicttyle</samp> sea <samp>diff3</samp>, puede ver la revisión base de la fusión del fichero usando <samp>/</samp> en el buffer de control de
Ediff.</dd>
<dd>
Los buffers A, B y Ancestor se construyen a partir de los marcadores de conflicto en el archivo árbol de trabajo (fichero worktree). Debido a que Usted y/o Git pueden haber
resuelto ya algunos conflictos, esto significa que estos buffers pueden no contener las versiones actuales de los respectivos blobs.
</dd>
<dt><kbd>E</kbd><kbd>m</kbd> (<i><samp>E m</samp></i>, <samp>magit-ediff-resolve-all</samp>)</dt>
<dd>
Este comando le permite resolver todos los conflictos del fichero en el punto usando Ediff. Si no hay ningún fichero en el punto o si no tiene ningún cambio sin fusionar, este
comando le solicita uno.
</dd>
<dd>
Siempre que el valor de <samp>merge.conflicttyle</samp> sea , puede ver la revisión base de la fusión del fichero usando <samp>/</samp> en el buffer de control de Ediff.
</dd>
<dd>
Primero se aparta el fichero en el árbol de trabajo, añadiéndole el sufijo <samp>.ORIG</samp>, para poder volver más tarde a esa versión. Después se reconstruye a partir de los dos
lados del conflicto y de la base de fusión, si está disponible.
</dd>
<dd>
Estaría bien que el fichero worktree (el árbol de trabajo) se usara tal cual, pero Ediff no lo soporta. Esto significa que todos los conflictos, que Git ya ha resuelto, son
restaurados. Por otro lado Ediff también intenta resolver conflictos, y en muchos casos Ediff y Git deberían producir resultados similares.
</dd>
<dd>
Sin embargo, si ya ha resuelto algunos conflictos manualmente, entonces esos cambios se descartan (aunque puede recuperarlos del archivo de copia de seguridad). En tales casos
<samp>magit-ediff-resolve-rest</samp> podría ser más adecuado.
</dd>
<dd>
La ventaja que tiene este comando sobre <samp>magit-ediff-resolve-rest</samp> es que los buffers A, B y Ancestor corresponden a blobs de los respectivas confirmaciones, permitiéndote
inspeccionar un lado en contexto y usar comandos Magit en estos buffers para hacerlo. Los comandos Blame y Log son particularmente útiles aquí.
</dd>
<dt><kbd>E</kbd><kbd>t</kbd> (<i><samp>E t</samp></i>, <samp>magit-git-mergetool</samp>)</dt>
<dd>
Este comando no usa Ediff. Aunque sirve para el mismo propósito que <samp>magit-ediff-resolve-rest</samp>, usa <samp>git mergetool --gui</samp> para resolver conflictos.
</dd>
<dd>
Con un argumento de prefijo actúa como un comando de prefijo transitorio, permitiendo al Usuario seleccionar la herramienta para confirmar una fusión (mergetool) y cambiar
algunos parámetros.
</dd>
<dt><kbd>E</kbd><kbd>s</kbd> (<i><samp>E s</samp></i>, <samp>magit-ediff-stage</samp>)</dt>
<dd>
Coloca o saca del área de preparación (staged, unstaged) a los cambios en un archivo mediante Ediff, por defecto, cambios en el archivo en el punto.
</dd>
<dt><kbd>E</kbd><kbd>u</kbd> (<i><samp>E u</samp></i>)</dt>
<dd>Muestra los cambios no incluídos en el área de peparación (unstaged) de un archivo mediante Ediff.</dd>
<dt><kbd>E</kbd><kbd>i</kbd> (<i><samp>E i</samp></i>)</dt>
<dd>Muestra los cambios que se han incluído en el área de preparación (staged chanes) de un archivo mediante Ediff.</dd>
<dt><kbd>E</kbd><kbd>w</kbd> (<i><samp>E w</samp></i>, <samp>magit-ediff-show-working-tree</samp>)</dt>
<dd>Muestra los cambios en un archivo entre <samp>HEAD</samp> y el árbol de trabajo usando Ediff.</dd>
<dt><kbd>E</kbd><kbd>c</kbd> (<i><samp>E c</samp></i>, <samp>magit-ediff-show-commit</samp>)</dt>
<dd>Muestra los cambios de un archivo introducidos por una confirmación mediante Ediff.</dd>
<dt><kbd>E</kbd><kbd>z</kbd> (<i><samp>E z</samp></i>, <samp>magit-ediff-show-stash</samp>)</dt>
<dd>Muestra los cambios que no se han cofirmado de un archivo que se ha ocultado (stashing) usando Ediff.</dd>
<dt>Opción de Usuario: <samp>magit-ediff-dwim-resolve-function</samp></dt>
<dd>
Esta opción controla qué función usa magit-ediff-dwim para resolver conflictos. Una de las siguientes: <samp>magit-ediff-resolve-rest</samp>, <samp>magit-ediff-resolve-all</samp> o
<samp>magit-git-mergetool</samp>; las cuales se discuten arriba.
</dd>
<dt>Opción de Usuario: <samp>magit-ediff-dwim-show-on-hunks</samp></dt>
<dd>
Esta opción controla a qué comando llama <samp>magit-ediff-dwim</samp> cuando el punto está en trozos (hunks) no confirmados. Cuando es nil, siempre ejecuta
<samp>magit-ediff-stage</samp>. En caso contrario, usa <samp>magit-ediff-show-staged</samp> y <samp>magit-ediff-show-unstaged</samp> para mostrar los cambios agregados o no al área de
preparación (staged y unstaged), respectivamente.
</dd>
<dt>Opción de Usuario: <samp>magit-ediff-show-stash-with-index</samp></dt>
<dd>
Esta opción controla si <samp>magit-ediff-show-stash</samp> incluye un búfer que contenga el estado del archivo en el índice en el momento en que se creó el stash. Esto permite saber
qué cambios en el stash se realizaron por etapas.
</dd>
<dt>Opción de Usuario: <samp>magit-ediff-quit-hook</samp></dt>
<dd>
Este gancho (hook) se ejecuta después de salir de una sesión Ediff que se creó usando un comando Magit. Las funciones del hook se ejecutan dentro del buffer de control de Ediff,
y no deberían cambiar el buffer actual.
</dd>
<dd>
Es similar a <samp>ediff-quit-hook</samp> pero tiene en cuenta las necesidades de Magit. El <samp>ediff-quit-hook</samp> regular es ignorado por las sesiones Ediff que fueron creadas
usando un comando Magit.
</dd>
</dl>
<h2 id="bufer_de_referencias">Búfer de Referencias<a href="#bufer_de_referencias"></a></h2>
<dl>
<dt><kbd>y</kbd> (<i><samp>y</samp></i>, <samp>magit-show-refs</samp>)</dt>
<dd>Este comando lista las ramas y etiquetas en un búfer dedicado.</dd>
<dd>
Sin embargo, si este comando se invoca de nuevo desde este búfer o si se invoca con un argumento de prefijo, entonces actúa como un comando de prefijo transitorio, que vincula
los siguientes comandos de sufijo y algunos argumentos de infijo.
</dd>
</dl>
<p>
Todos los siguientes comandos de sufijo listan exactamente las mismas ramas y etiquetas. La única diferencia es la característica opcional que puede activarse cambiando el valor de
<samp>magit-refs-show-commit-count</samp> (ver más abajo). Estos comandos especifican una rama o confirmación diferente con la que se comparan todas las demás referencias.
</p>
<dl>
<dt><kbd>y</kbd><kbd>y</kbd> (<i><samp>y y</samp></i>, <samp>magit-show-refs-head</samp>)</dt>
<dd>
Este comando lista las ramas y etiquetas en un buffer dedicado. Cada referencia se compara con <samp>HEAD</samp>.
</dd>
<dt><kbd>y</kbd><kbd>c</kbd> (<i><samp>y c</samp></i>)</dt>
<dd>
Este comando lista las ramas y etiquetas en un buffer dedicado. Cada referencia se compara con la rama actual o <samp>HEAD</samp> si está separada.
</dd>
<dt><kbd>y</kbd><kbd>o</kbd> (<i><samp>y o</samp></i>, <samp>magit-show-refs-other</samp>)</dt>
<dd>
Este comando lista las ramas y etiquetas en un buffer dedicado. Cada referencia se compara con una rama leída por el Usuario.
</dd>
<dt><kbd>y</kbd><kbd>r</kbd> (<i><samp>y r</samp></i>, <samp>magit-refs-set-show-commit-count</samp>)</dt>
<dd>
Este comando cambia para qué refs se muestra el recuento de confirmaciones.
</dd>
<dt>Opción de Usuario: <samp>magit-refs-show-commit-count</samp></dt>
<dd>
Muestra o no los recuentos de confirmaciones en los buffers del modo Magit-Refs.
<ul>
<li><samp>all</samp>: muestra los recuentos de ramas y etiquetas.</li>
<li><samp>branch</samp>: muestra los recuentos sólo de las ramas.</li>
<li><samp>nil</samp>: no muestra nunca los recuentos.</li>
</ul>
</dd>
<dd>El valor por defecto es nulo porque cualquier otra cosa puede resultar muy costosa.</dd>
<dt>Opción de Usuario: <samp>magit-refs-pad-commit-counts</samp></dt>
<dd>Si se rellenan todos los recuentos de confirmaciones en todos los lados en los buffers del modo Magit-Refs.</dd>
<dd>
Si es nulo (nil), algunos recuentos de confirmaciones se muestran justo al lado de una de las ramas que aparecen junto al recuento, sin ningún espacio intermedio. Esto puede
quedar mal si las caras de los nombres de las ramas se parecen demasiado a <samp>magit-dimmed</samp>.
</dd>
<dd>Si esto no es nil, entonces se colocan espacios a ambos lados de todos los recuentos de confirmaciones.</dd>
<dt>Opción de Usuario: <samp>magit-refs-show-remote-prefix</samp></dt>
<dd>Muestra o no el prefijo de la remota en las listas de ramas remotas.</dd>
<dd>Muestra el prefijo es redundante porque el nombre de la remota ya se muestra en el encabezado que precede a la lista de sus ramas.</dd>
<dt>Opción de Usuario: <samp>magit-refs-primary-column-width</samp></dt>
<dd>
Anchura de la columna primaria en los buffers <samp>magit-refs-mode</samp>. La columna primaria es la columna que contiene el nombre de la rama de la que trata la fila actual.
</dd>
<dd>
Si es un número entero, la columna tendrá ese ancho. Si no, tiene que ser una constante de celda de dos enteros. El primero especifica la anchura mínima, el segundo la anchura
máxima. En ese caso, la anchura real se determina utilizando la longitud de los nombres de las ramas locales mostradas. (Las ramas remotas y las etiquetas no se tienen en cuenta
al calcular la anchura óptima).
</dd>
<dt>Opción de Usuario: <samp>magit-refs-focus-column-width</samp></dt>
<dd>Anchura de la columna de enfoque en buffers <samp>magit-refs-mode</samp>.</dd>
<dd>
La columna de enfoque es la primera columna, que marca una rama (normalmente la rama actual) como la rama enfocada usando <samp>*</samp> o <samp>@</samp>. Para cada otra referencia, esta
columna muestra opcionalmente cuántas confirmaciones están por delante de la rama enfocada y <samp>&lt;</samp>, o si no está por delante entonces las confirmaciones detrás de las que
está y <samp>&gt;</samp>, o si no está detrás de ninguna, un <samp>=</samp>.
</dd>
<dd>
Esta columna también puede mostrar sólo <samp>*</samp> o <samp>@</samp> para la rama enfocada, en cuyo caso esta opción se ignora. Use <kbd>L</kbd><kbd>v</kbd> (<samp>L v</samp>) para
cambiar la verbosidad de esta columna.
</dd>
<dt>Opción de Usuario: <samp>magit-refs-margin</samp></dt>
<dd>Esta opción especifica si el margen se muestra inicialmente en las memorias intermedias del modo Magit-Refs y cómo se formatea.</dd>
<dd>
Este valor tiene la forma <samp>(INIT STYLE WIDTH AUTHOR AUTHOR-WIDTH)</samp>.
<ul>
<li>Si INIT no es nulo, entonces el margen se muestra inicialmente.</li>
<li>
STYLE controla el formato de la fecha del autor o del confirmador (commiter). Puede ser <samp>age</samp> (para mostrar la edad de la confirmación), <samp>age-abbreviated</samp>
(para abreviar la unidad de tiempo a un carácter), o una cadena (adecuada para <samp>format-time-string</samp>) para mostrar la fecha real. La opción
<samp>magit-log-margin-show-committer-date</samp> controla qué fecha se muestra.
</li>
<li>WIDTH controla la anchura del margen. Esto existe por compatibilidad futura y actualmente el valor no debe cambiarse.</li>
<li>AUTHOR controla si el nombre del autor también se muestra por defecto.</li>
<li>AUTHOR-WIDTH debe ser un número entero. Cuando se muestra el nombre del autor, esto especifica cuánto espacio se usa para hacerlo.</li>
</ul>
</dd>
<dt>Opción de Usuario: <samp>magit-refs-margin-for-tags</samp></dt>
<dd>
Esta opción especifica si se muestra información sobre las etiquetas en el margen y está desactivada por defecto porque es lenta si hay muchas etiquetas.
</dd>
</dl>
<p>
Las siguientes variables controlan cómo se muestran las referencias individuales. Si cambia una de estas variables (especialmente la parte "%c"), debería cambiar también las otras
para mantener las cosas alineadas. Se soportan las siguientes secuencias %:
<ul>
<li><samp>%a</samp> Número de confirmaciones (commits) que esta referencia tiene sobre aquella con la que comparamos.</li>
<li><samp>%b</samp> Número de confirmaciones que la referencia con la que comparamos tiene sobre ésta.</li>
<li>
<samp>%c</samp> Número de commits que esta ref tiene sobre aquella con la que comparamos. Para la referencia con la que se comparan todas las demás referencias es "@", si es la
rama actual, o "#" en caso contrario.
</li>
<li><samp>%C</samp> Para la referencia con la que se comparan todas las demás referencias es "@", si es la rama actual, o "#" en caso contrario. Para todas las demás refs " ".</li>
<li><samp>%h</samp> Hash del tip de esta ref.</li>
<li><samp>%m</samp> Resumen de la confirmación (commit) del tip de esta ref.</li>
<li><samp>%n</samp> Nombre de esta ref.</li>
<li><samp>%u</samp> Upstream de esta rama local.</li>
<li><samp>%U</samp> Corriente arriba (upstream) e información adicional de esta rama local vs. información adicional corriente arriba.</li>
</ul>
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-refs-filter-alist</samp></dt>
<dd>
El objetivo de esta opción es no mostrar determinadas referencias en función de su nombre. Si no desea mostrar ninguna referencia de un tipo determinado, debe eliminar la función
correspondiente del gancho <samp>magit-refs-sections</samp>.
</dd>
<dd>
Esta lista controla qué etiquetas y ramas no se muestran en los buffers del modo <samp>magit-refs</samp>. Si es <samp>nil</samp>, se mostrarán todas las referencias (sujeto a
<samp>magit-refs-sections-hook</samp>).
</dd>
<dd>
Todas las claves se prueban en orden hasta que una coincide. Entonces se usa su valor y se ignoran los elementos subsiguientes. Si el valor no es nulo, se muestra la referencia;
de lo contrario, no. Si ningún elemento coincide, se muestra la referencia.
</dd>
<dd>
Una clave puede ser una expresión regular que debe coincidir con el nombre de la referencia o una función que toma el nombre de la referencia como único argumento y devuelve un
booleano. Una rama remota como "origin/master" se muestra como "master", pero para esta comparación se usa la primera.
</dd>
<dt><kbd>RET</kbd> (<i><samp>RET</samp></i>, <samp>magit-visit-ref</samp>)</dt>
<dd>Este comando visita la referencia o revisión en el punto en otro buffer. Si no hay revisión en el punto o con un argumento prefijo, entonces solicita una.</dd>
<dd>
Esta orden se comporta igual que <samp>magit-show-commit</samp> como se ha descrito anteriormente, excepto si el punto está en una referencia en un búfer <samp>magit-refs-mode</samp>, en
cuyo caso el comportamiento puede ser diferente, pero sólo si ha personalizado la opción <samp>magit-visit-ref-behavior</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-visit-ref-behavior</samp></dt>
<dd>Esta opción controla cómo se comporta <samp>magit-visit-ref</samp> en los buffers del <samp>modo magit-refs</samp>.</dd>
<dd>
Por defecto, <samp>magit-visit-ref</samp> se comporta como <samp>magit-show-commit</samp>, en todos los buffers, incluyendo los buffers <samp>magit-refs-mode</samp>. Cuando el tipo de la
sección en el punto es <samp>commit</samp> (confirmación), "RET" está vinculado a <samp>magit-show-commit</samp>, y cuando el tipo es rama o etiqueta, entonces está vinculado a
<samp>magit-visit-ref</samp>.
</dd>
<dd>
"RET" es una de las claves más esenciales de Magit y al menos por defecto debería comportarse de forma consistente en todo Magit, especialmente porque los Usuarios aprenden
rápidamente que hace algo muy inofensivo; muestra más información sobre la cosa en el punto en otro buffer.
</dd>
<dd>
Sin embargo, "RET" solía comportarse de forma diferente en los buffers del modo <samp>magit-refs</samp>, haciendo cosas sorprendentes, algunas de las cuales no pueden describirse
realmente como "visita esta cosa". Si ya se ha acostumbrado a este comportamiento, puede restaurarlo añadiendo uno o más de los siguientes símbolos al valor de esta opción. Pero
tenga en cuenta que al hacerlo no sólo introduce incoherencias, sino que también pierde algo de funcionalidad y puede que tenga que recurrir a <kbd>Alt</kbd>-<kbd>x</kbd>
<samp>magit-show-commit</samp> (<samp>M-x magit-show-commit</samp>) para recuperarla.
</dd>
<samp>magit-visit-ref</samp> busca estos símbolos en el orden en que se describen aquí. Si la presencia de un símbolo se aplica a la situación actual, los símbolos que siguen no
afectan al resultado.
<li><samp>focus-on-ref</samp>
<dd>
Con un argumento de prefijo actualiza el buffer para mostrar los recuentos de confirmaciones y listas de confirmaciones de cherries relativas a la referencia en el punto
en lugar de relativas al buffer actual o <samp>HEAD</samp>.
</dd>
<dd>En lugar de añadir este símbolo, considere pulsar "<kbd>Ctrl</kbd>-<kbd>u</kbd> (<samp>C-u</samp>) y/o <kbd>RET</kbd> (<samp>RET</samp>)".</dd>
</li>
<li><samp>create-branch</samp>
<dd>Si el punto está en una rama remota, entonces crea una nueva rama local con el mismo nombre, usa la rama remota como su upstream, y luego comprueba la rama local.</dd>
<dd>En lugar de añadir este símbolo, considera pulsar "<kbd>b</kbd><kbd>c</kbd> <kbd>RET</kbd><kbd>RET</kbd> (<samp>b c RET RET</samp>)", como haría en otros buffers.</dd>
</li>
<li><samp>checkout-any</samp>
<dd>Comprueba la referencia en el punto. Si esa referencia es una etiqueta o una rama remota, entonces esto resulta en un <samp>HEAD</samp> independiente.</dd>
<dd>En lugar de añadir este símbolo, considera pulsar "<kbd>b</kbd><kbd>b</kbd> <kbd>RET</kbd> (<samp>b b RET</samp>)", como se haría en otros buffers.</dd>
</li>
<li><samp>checkout-branch</samp>
<dd>Comprueba la rama local en el punto</dd>
<dd>En lugar de añadir este símbolo, considere pulsar "<kbd>b</kbd><kbd>b</kbd> <kbd>RET</kbd> (<samp>b b RET</samp>)", como haría en otros buffers.</dd>
</li>
</dl>
<p><a href="#@GENDOC:secciones_de_referencias@" onclick="c('@GENDOC:secciones_de_referencias@')">Secciones de Referencias</a></p>
<h2 id="bisecting">Bisecting<a href="#bisecting"></a></h2>
<div class="info"><p><span>Nota</span></p><p>
En <samp>git</samp>, <i>Bisecting</i> usa la búsqueda binaria para encontrar la confirmación que introdujo un error
</p></div>
<dl>
<dt><kbd>B</kbd> (<i><samp>B</samp></i>, <samp>magit-bisect</samp>)</dt>
<dd>Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoque un sufijo.</dd>
</dl>
<p>Cuando la bisección no está en curso, el transitorio presenta los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>B</kbd><kbd>B</kbd> (<i><samp>B B</samp></i>, <samp>magit-bisect-start</samp>)</dt>
<dd>Inicia una sesión de bisección.</dd>
<dd>
Bisectar un fallo significa encontrar la confirmación que lo introdujo. Este comando inicia una sesión de bisección pidiendo dos confirmaciones: una buena y una mala, ambas
conocidas. Si está bisectando un cambio que no es una regresión, puede seleccionar términos alternativos que sean conceptualmente más adecuados que "malo" y "bueno", pero los
argumentos infijos para hacerlo están desactivados por defecto.
</dd>
<dt><kbd>B</kbd><kbd>s</kbd> (<i><samp>B s</samp></i>, <samp>magit-bisect-run</samp>)</dt>
<dd>Bisecta automáticamente ejecutando comandos después de cada paso.</dd>
</dl>
<p>Si la bisección está en curso, el transitorio presenta en su lugar los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>B</kbd><kbd>b</kbd> (<i><samp>B b</samp></i>, <samp>magit-bisect-bad</samp>)</dt>
<dd>Marca la confirmación actual como mala. Úselo después de haber comprobado que la confirmación contiene el error en cuestión.</dd>
<dt><kbd>B</kbd><kbd>g</kbd> (<i><samp>B g</samp></i>, <samp>magit-bisect-good</samp>)</dt>
<dd>Marca la confirmación actual como buena. Úselo después de haber comprobado que la confirmación no contiene el error en cuestión.</dd>
<dt><kbd>B</kbd><kbd>m</kbd> (<i><samp>B m</samp></i>, <samp>magit-bisect-mark</samp>)</dt>
<dd>
Marca la confirmación actual con uno de los términos bisect. Este comando proporciona una alternativa a <samp>magit-bisect-bad</samp> y <samp>magit-bisect-good</samp> y es útil cuando se
usan términos distintos de "bad" y "good". Este sufijo está desactivado por defecto.
</dd>
<dt><kbd>B</kbd><kbd>k</kbd> (<i><samp>B k</samp></i>, <samp>magit-bisect-skip</samp>)</dt>
<dd>
Omite la confirmación actual. Úselo si por alguna razón la confirmación actual no es una buena confirmación para probar. Este comando permite a Git elegir uno diferente.
</dd>
<dt><kbd>B</kbd><kbd>r</kbd> (<i><samp>B r</samp></i>, <samp>magit-bisect-reset</samp>)</dt>
<dd>Después de bisectar, limpia el estado de bisección y vuelve a la <samp>HEAD</samp> original.</dd>
</dl>
<p>Por defecto, el búfer de estado muestra información sobre la sesión bisect en curso.</p>
<dl>
<dt>Opción de Usuario. <samp>magit-bisect-show-graph</samp></dt>
<dd>Esta opción controla si se muestra un gráfico para el registro de confirmaciones que aún tienen que ser bisectadas.</dd>
</dl>
<h2 id="visitar_archivos_y_blobs">Visitar archivos y blobs<a href="#visitar_archivos_y_blobs"></a></h2>
<p>
Magit proporciona varios comandos que visitan un archivo o blob (la versión de un archivo que se almacena en una determinada confirmación). En realidad proporciona varios
<b>grupos</b> de tales comandos y las diversas variantes dentro de cada grupo.
</p>
<p>Véase <a href="#@GENDOC:comandos_para_buffers_que_visitan_archivos@" onclick="c('@GENDOC:comandos_para_buffers_que_visitan_archivos@')">Comandos para buffers que visitan archivos</a>.</p>
<h3 id="comandos_de_visita_de_proposito_general">Comandos de Visita de Propósito General<a href="#comandos_de_visita_de_proposito_general"></a></h3>
<p>
Estos comandos pueden usarse en cualquier lugar para abrir cualquier blob. Actualmente no hay teclas vinculadas a estos comandos por defecto, pero es probable que eso cambie.
</p>
<dl>
<dt>Comando: <samp>magit-find-file</samp></dt>
<dd>
Este comando lee un nombre de archivo y una revisión del Usuario y visita la nota correspondiente en un búfer. El búfer se muestra en la ventana seleccionada.
</dd>
<dt>Comando: <samp>magit-find-file-other-window</samp></dt>
<dd>
Este comando lee un nombre de archivo y una revisión del Usuario y visita el blob respectivo en un buffer. El búfer se muestra en otra ventana.
</dd>
<dt>Comando: <samp>magit-find-file-other-frame</samp></dt>
<dd>
Este comando lee un nombre de archivo y una revisión del Usuario y visita la nota correspondiente en un búfer. El búfer se muestra en otro marco.
</dd>
</dl>
<h3 id="visitar_archivos_y_blobs_desde_un_diff">Visitar archivos y Blobs desde un Diff<a href="#visitar_archivos_y_blobs_desde_un_diff"></a></h3>
<p>Estos comandos sólo pueden usarse cuando el punto está dentro de un diff.</p>
<dl>
<dt><kbd>RET</kbd> (<i><samp>RET</samp></i>, <samp>magit-diff-visit-file</samp>)</dt>
<dd>Este comando visita la versión apropiada del fichero del que trata el diff en cuestión.</dd>
<dd>
Este comando visita la versión del árbol de trabajo del fichero apropiado. La posición del punto dentro del diff determina qué fichero se visita. La versión visitada depende de
los cambios sobre los que trata el diff.
<ol>
<li>
Si el diff muestra cambios no confirmados (es decir, cambios que se han preparados o no), entonces visita el fichero en el árbol de trabajo (es decir, el mismo fichero
"real" que visitaría <samp>find-file</samp>. En todos los demás casos, visita un "blob" (es decir, la versión de un archivo almacenada en alguna confirmación).
</li>
<li>
Si el punto está en una línea eliminada, entonces visita el "blob" para el primer padre de la confirmación que eliminó esa línea, es decir, la última confirmación en la
que todavía existe esa línea.
</li>
<li>
Si el punto está en una línea añadida o contextual, entonces visita la nota que añade esa línea, o si el diff muestra más de una confirmación, entonces visita la nota de
la última de esas confirmaciones.
</li>
</ol>
</dd>
<dd>En el búfer de visita de ficheros, este comando va a la línea que corresponde a la línea en la que se encuentra ese punto en el diff.</dd>
<dd>La memoria intermedia se muestra en la ventana seleccionada. Con un argumento de prefijo, la memoria intermedia se muestra en otra ventana.</dd>
<dt>Opción de Usuario: <samp>magit-diff-visit-previous-blob</samp></dt>
<dd>
Esta opción controla si <samp>magit-diff-visit-file</samp> puede visitar la nota anterior. Cuando es <samp>t</samp> (por defecto) y el punto está en una línea eliminada en un diff para
un cambio confirmado, entonces <samp>magit-diff-visit-file</samp> visita la nota de la última revisión que todavía tenía esa línea.
</dd>
<dd>
Actualmente esto sólo está soportado para cambios confirmados, para cambios preparados o no, <samp>magit-diff-visit-file</samp> siempre visita el fichero en el árbol de trabajo.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>RET</kbd> (<i><samp>C-return</samp></i>, <samp>magit-diff-visit-file-worktree</samp>)</dt>
<dd>
Este comando visita la versión del árbol de trabajo del fichero correspondiente. La ubicación del punto dentro del diff determina qué archivo se está visitando. A diferencia de
<samp>magit-diff-visit-file</samp>, siempre visita el archivo "real" en el árbol de trabajo, es decir, la "versión actual" de dicho archivo.
</dd>
<dd>
En el búfer de visita de archivos este comando va a la línea que corresponde a la línea en la que se encuentra ese punto en el diff. Las líneas que se han añadido o eliminado en
el árbol de trabajo, el índice y otros commits intermedios se tienen en cuenta automáticamente.
</dd>
<dd>El buffer se muestra en la ventana seleccionada. Con un argumento prefijo, la memoria intermedia se muestra en otra ventana.</dd>
</dl>
<p>
Existen variantes de los dos comandos anteriores que visitan el archivo en otra ventana o en otro marco. Si prefiere este comportamiento, puede cambiar las combinaciones de teclas
anteriores, pero tenga en cuenta que los comandos anteriores también usan otra ventana cuando se invocan con un argumento de prefijo.
</p>
<p>
Comando: <samp>magit-diff-visit-file-other-window</samp>.<br>
Comando: <samp>magit-diff-visit-file-other-frame</samp>.<br>
Comando: <samp>magit-diff-visit-worktree-file-other-window</samp>.<br>
Comando: <samp>magit-diff-visit-worktree-file-other-frame</samp>.
</p>
<h2 id="blaming">Blaming<a href="#blaming"></a></h2>
<div class="info"><p><span>Nota</span></p><p><samp>git ---blame</samp>: muestra qué revisión y autor modificaron por última vez cada línea de un archivo. Vea la <a href="https://git-scm.com/docs/git-blame" target="new">página de manual</a>
referida.</p></div>
<p>
Para iniciar blaming, invoque el comando de prefijo transitorio <samp>magit-file-dispatch</samp>. Cuando se usan los atajos de teclado por defecto, esto se puede hacer pulsando
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>M</kbd>-<kbd>g</kbd> (<samp>C-c M-g</samp>). Si se usan las combinaciones recomendadas, este comando se ejecuta pulsando <kbd>Ctrl</kbd>-<kbd>c</kbd>
<kbd>f</kbd> (<samp>C-c f</samp>). Véase <a href="#@GENDOC:combinaciones_globales@" onclick="c('@GENDOC:combinaciones_globales@')">Combinaciones globales</a>.
</p>
<p>
Los comandos de sufijo de blaming pueden invocarse directamente desde el transitorio de envío de archivos. Sin embargo, si desea establecer un argumento infijo, primero debe
introducir el subprefijo de blaming.
</p>
<p>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>B</kbd> (<i><samp>C-c f B</samp></i>, <samp>magit-blame</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>b</kbd> (<i><samp>C-c f b</samp></i>, <samp>magit-blame-addition</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>B</kbd><kbd>b</kbd> (<i><samp>C-c f B b</samp></i>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>r</kbd> (<i><samp>C-c f r</samp></i>, <samp>magit-blame-removal</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>B</kbd><kbd>r</kbd> (<i><samp>C-c f B r</samp></i>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>f</kbd> (<i><samp>C-c f f</samp></i>, <samp>magit-blame-reverse</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>B</kbd><kbd>f</kbd> (<i><samp>C-c f B f</samp></i>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>e</kbd> (<i><samp>C-c f e</samp></i>, <samp>magit-blame-echo</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>B</kbd><kbd>e</kbd> (<i><samp>C-c f B e</samp></i>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>q</kbd> (<i><samp>C-c f q</samp></i>, <samp>magit-blame-quit</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>B</kbd><kbd>q</kbd> (<i><samp>C-c f B q</samp></i>)
</p>
<dd>
Cada uno de estos comandos se documenta individualmente a continuación, junto con sus combinaciones de teclas por defecto. Las combinaciones mostradas arriba son las recomendadas,
que se pueden activar siguiendo las instrucciones de <a href="#@GENDOC:combinaciones_globales@" onclick="c('@GENDOC:combinaciones_globales@')">Combinaciones globales</a>.
</dd>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>B</kbd> (<i><samp>C-c M-g B</samp></i>, <samp>magit-blame</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
</dl>
<div class="warn"><p><span>Advertencia</span></p><p>
Tenga en cuenta que no todos los siguientes sufijos están disponibles en todo momento. Por ejemplo, si el modo <samp>magit-blame</samp> no está activado, el comando cuyo propósito es
desactivar ese modo no sería de ninguna utilidad y, por lo tanto, no está disponible.
</p></div>
<dl>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>b</kbd> (<i><samp>C-c M-g b</samp></i>, <samp>magit-blame-addition</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>B</kbd><kbd>b</kbd> (<i><samp>C-c M-g B b</samp></i>)
</dt>
<dd>Este comando aumenta cada línea o trozo de líneas en el búfer que visita el fichero o blob actual con información sobre qué commit tocó esas líneas por última vez.</dd>
<dd>
Si el buffer visita una revisión de ese fichero, entonces se considera la historia hasta esa revisión. En caso contrario, se considera el historial completo del fichero,
incluyendo los cambios no confirmados.
</dd>
<dd>
Si el modo Magit-Blame ya está activado en el buffer actual, la culpabilización se hace recursivamente, visitando REVISION:ARCHIVO (usando <samp>magit-find-file</samp>), donde
REVISION es un padre de la revisión que añadió la línea o trozo de líneas actual.
</dd>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>r</kbd> (<i><samp>C-c M-g r</samp></i>, <samp>magit-blame-removal</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>B</kbd><kbd>r</kbd> (<i><samp>C-c M-g B r</samp></i>)
</dt>
<dd>
Este comando incrementa cada línea o trozo de líneas en la memoria intermedia que visita el blob actual con información sobre la revisión que lo elimina. No se puede usar en las
memorias intermedias que visitan archivos.
</dd>
<dd>Al igual que <samp>magit-blame-addition</samp>, este comando puede usarse de forma recursiva.</dd>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>f</kbd> (<i><samp>C-c M-g f</samp></i>, <samp>magit-blame-reverse</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>B</kbd> (<i><samp>C-c M-g B f</samp></i>)
<dd>
Este comando aumenta cada línea o trozo de líneas en el búfer actual que visita archivos o blobs con información sobre la última revisión en la que todavía existía una línea.
</dd>
<dd>
Al igual que <samp>magit-blame-addition</samp>, este comando puede usarse de forma recursiv.
</dd>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>e</kbd> (<i><samp>C-c M-g e</samp></i>, <samp>magit-blame-echo</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>B</kbd><kbd>e</kbd> (<i><samp>C-c M-g B e</samp></i>)
</dt>
<dd>
Este comando es como <samp>magit-blame-addition</samp> excepto que no activa el modo de sólo lectura y que inicialmente usa el estilo de visualización especificado por la opción
<samp>magit-blame-echo-style</samp>.
</dd>
</dt>
</dl>
<p>
Las siguientes combinaciones de teclas están disponibles cuando el modo Magit-Blame está activado y el modo Sólo lectura no está activado. Estos comandos también están disponibles en
otras memorias intermedias; aquí sólo se describe el comportamiento que es relevante en las memorias intermedias que visitan archivos a los que se está haciendo blaming.
</p>
<dl>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>q</kbd> (<i><samp>C-c M-g q</samp></i>, <samp>magit-blame-quit</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>B</kbd><kbd>q</kbd> (<i><samp>C-c M-g B q</samp></i>)
</dt>
<dd>Este comando desactiva el modo Magit-Blame. Si el buffer fue creado durante una blame recursivo, entonces también mata el buffer.</dd>
<dt><kbd>RET</kbd> (<i><samp>RET</samp></i>, <samp>magit-show-commit</samp>)</dt>
<dd>Este comando muestra la última confirmación que tocó la línea en el punto.</dd>
<dt><kbd>SPC</kbd> (<i><samp>SPC</samp></i>, <samp>magit-diff-show-or-scroll-up</samp>)
</dt>
<dd>Este comando actualiza la memoria intermedia de confirmaciones (commit buffer).</dd>
<dd>
Esto muestra la última confirmación que tocó la línea en el punto en el búfer apropiado, o si ese búfer ya se está mostrando en el marco actual y si ese búfer contiene
información sobre esa confirmación, entonces el búfer se desplaza hacia arriba en su lugar.
</dd>
<dt><kbd>DEL</kbd> (<i><samp>DEL</samp></i>, <samp>magit-diff-show-or-scroll-down</samp>)</dt>
<dd>Este comando actualiza la memoria intermedia de confirmaciones.</dd>
<dd>
Esto muestra la última confirmación que tocó la línea en el punto del búfer apropiado, o si ese búfer ya se está mostrando en el fotograma actual y si ese búfer contiene
información sobre esa confirmación, entonces el búfer se desplaza hacia abajo en su lugar.
</dd>
</dl>
<p>Las siguientes combinaciones de teclas están disponibles cuando están activados tanto el modo Magit-Blame como el modo Sólo lectura.</p>
<dl>
<dt><kbd>b</kbd> (<i><samp>b</samp></i>, <samp>magit-blame</samp>)</dt>
<dd>Vea más arriba.</dd>
<dt><kbd>n</kbd> (<i><samp>n</samp></i>, <samp>magit-blame-next-chunk</samp>)</dt>
<dd>Este comando pasa al siguiente trozo (next chunk).</dd>
<dt><kbd>N</kbd> (<i><samp>N</samp></i>, <samp>magit-blame-next-chunk-same-commit</samp>)</dt>
<dd>Este comando pasa al siguiente trozo de la misma confirmación.</dd>
<dt><kbd>p</kbd> (<i><samp>p</samp></i>, <samp>magit-blame-previous-chunk</samp>)</dt>
<dd>Este comando se desplaza al trozo anterior.</dd>
<dt><kbd>P</kbd> (<i><samp>P</samp></i>, <samp>magit-blame-previous-chunk-same-commit</samp>)</dt>
<dd>Este comando se desplaza al fragmento anterior de la misma confirmación.</dd>
<dt><kbd>q</kbd> (<i><samp>q</samp></i>, <samp>magit-blame-quit</samp>)</dt>
<dd>Este comando desactiva el modo Magit-Blame. Si el buffer fue creado durante un blame recursivo, entonces también mata el buffer.</dd>
<dt><kbd>Alt</kbd>-<kbd>w</kbd> (<i><samp>M-w</samp></i>, <samp>magit-blame-copy-hash</samp>)</dt>
<dd>Este comando guarda el hash de la confirmación del trozo actual en el anillo de destrucción (kill ring).</dd>
<dd>Cuando la región está activa, el comando guarda el contenido de la región en lugar del hash, como haría <samp>kill-ring-save</samp>.</dd>
<dt><kbd>c</kbd> (<i><samp>c</samp></i>, <samp>magit-blame-cycle-style</samp>)</dt>
<dd>
Este comando cambia la forma en que se visualiza la información de autoría en el bbúfer actual mediante un ciclo a través de los estilos especificados usando la opción
<samp>magit-blame-styles</samp>.
</dd>
</dl>
<p>El blaming también se controla mediante las siguientes opciones.</p>
<dl>
<dt>Opción de Usuario: <samp>magit-blame-styles</samp></dt>
<dd>Esta opción define una lista de estilos usados para visualizar la información de autoría. Por ahora, consulte su doc-string para obtener más información.</dd>
<dt>Opción de Usuario: <samp>magit-blame-echo-style</samp></dt>
<dd>
Esta opción especifica el estilo de visualización de blame usado por el comando <samp>magit-blame-echo</samp>. Debe ser un símbolo que se use como identificador de uno de los estilos
definidos en <samp>magit-blame-styles</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-blame-read-only</samp></dt>
<dd>Esta opción controla si un búfer blaming también hace que sea temporalmente de sólo lectura.</dd>
<dt>Opción de Usuario: <samp>magit-blame-disable-modes</samp></dt>
<dd>
Esta opción enumera los modos secundarios incompatibles que deben desactivarse temporalmente cuando un búfer contiene información de autoría. Se vuelven a habilitar cuando el
búfer deja de mostrar información de autoría.
</dd>
<dt>Opción de Usuario: <samp>magit-blame-goto-chunk-hook</samp></dt>
<dd>Este gancho se ejecuta cuando se mueve entre trozos.</dd>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_ejecucion_de_git" title="Ejecución de Git">Anterior</label><label class="btn next" accesskey="n" for="_manipulacion" title="Manipulación">Siguiente</label></div>
<div class="page" rel="manipulacion"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Manipulación</li></ul><hr></div>
<h1 id="manipulacion">Manipulación<a href="#manipulacion"></a></h1>
<h2 id="creando_repositorios">Creando Repositorios<a href="#creando_repositorios"></a></h2>
<dl>
<dt><kbd>I</kbd> (<i><samp>I</samp></i>, <samp>magit-init</samp>)</dt>
<dd>Este comando inicializa un repositorio y luego muestra el búfer de estado del nuevo repositorio.</dd>
<dd>
Si el directorio está debajo de un repositorio existente, entonces el Usuario tiene que confirmar que debe crearse uno nuevo dentro. Si el directorio es la raíz del repositorio
existente, tiene que confirmar que debe ser reinicializado.
</dd>
</dl>
<h2 id="clonando_un_repositorio">Clonando un Repositorio<a href="#clonando_un_repositorio"></a></h2>
<p>
Para clonar un repositorio remoto o local use C, que está ligado al comando <samp>magit-clone</samp>. Este comando puede actuar como un comando prefijo transitorio, que enlaza varios
argumentos infijos y comandos sufijos, o puede invocar a git clone directamente, dependiendo de si se usa un argumento prefijo y del valor de <samp>magit-clone-always-transient</samp>.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-clone-always-transient</samp></dt>
<dd>
Esta opción controla si el comando <samp>magit-clone</samp> actúa siempre como un comando de prefijo transitorio, independientemente de si se usa o no un argumento de prefijo. Si es
<samp>t</samp>, esa orden siempre actúa como prefijo transitorio. Si es <samp>nil</samp>, tiene que usarse un argumento de prefijo para que actúe como transitorio.
</dd>
<dt><kbd>C</kbd> (<i><samp>C</samp></i>, <samp>magit-clone</samp>)</dt>
<dd>
Este comando actúa como un comando de prefijo transitorio como se describió anteriormente o hace lo mismo que <samp>transient-clone-regular</samp> como se describe a continuación.
</dd>
<dd>Si actúa como prefijo transitorio, vincula los siguientes comandos sufijos y varios argumentos infijos.</dd>
<dt><kbd>C</kbd><kbd>C</kbd> (<i><samp>C C</samp></i>, <samp>magit-clone-regular</samp>)</dt>
<dd>Este comando crea un clon regular de un repositorio existente. El repositorio y el directorio de destino se leen desde el Usuario.</dd>
<dt><kbd>C</kbd><kbd>s</kbd> (<i><samp>C s</samp></i>, <samp>magit-clone-shallow</samp>)</dt>
<dd>
Este comando crea un clon superficial de un repositorio existente. El repositorio y el directorio de destino se leen del Usuario. Por defecto, la profundidad del historial
clonado es una única confirmación, pero con un argumento prefijo la profundidad se lee del Usuario.
</dd>
<dt><kbd>C</kbd><kbd>&gt;</kbd> (<i><samp>C &gt;</samp></i>, <samp>magit-clone-sparse</samp>)</dt>
<dd>
Este comando crea un clon de un repositorio existente e inicia una comprobación dispersa, evitando la comprobación del árbol de trabajo completo. Para añadir más directorios, use
el <samp>transitorio magit-sparse-checkout</samp> (vea <a href="#@GENDOC:sparse_checkouts@" onclick="c('@GENDOC:sparse_checkouts@')">Sparse checkouts</a>).
</dd>
<dt><kbd>C</kbd><kbd>b</kbd> (<i><samp>C b</samp></i>, <samp>magit-clone-bare</samp>)</dt>
<dd>Este comando crea un clon desnudo de un repositorio existente. El repositorio y el directorio de destino se leen desde el Usuario.</dd>
<dt><kbd>C</kbd><kbd>m</kbd> (<i><samp>C m</samp></i>, <samp>magit-clone-mirror</samp>)</dt>
<dd>Este comando crea una réplica de un repositorio existente. El repositorio y el directorio de destino se leen desde el Usuario.</dd>
</dl>
<p>Los siguientes sufijos están desactivados por defecto. Consulte <a href="#@GENDOC:activacion_y_desactivacion_transitoria_de_sufijos@" onclick="c('@GENDOC:activacion_y_desactivacion_transitoria_de_sufijos@')">Activación y desactivación (transitoria) de sufijos</a> para saber cómo activarlos.</p>
<dl>
<dt><kbd>C</kbd><kbd>d</kbd> (<i><samp>C d</samp></i>, <samp>magit-clone-shallow-since</samp>)</dt>
<dd>
Este comando crea un clon superficial de un repositorio existente. Sólo se clonan las confirmaciones posteriores a una fecha, que se lee del Usuario. El repositorio y el
directorio de destino también se leen desde el Usuario.
</dd>
<dt><kbd>C</kbd><kbd>e</kbd> (<i><samp>C e</samp></i>, <samp>magit-clone-shallow-exclude</samp>)</dt>
<dd>
Este comando crea un clon superficial de un repositorio existente. Esto lee una rama o etiqueta del Usuario. Las confirmaciones accesibles desde ahí no se clonan. El repositorio
y el directorio de destino también se leen del Usuario.
</dd>
<dt>Opción de Usuario: <samp>magit-clone-set-remote-head</samp></dt>
<dd>
Esta opción controla si al clonar se crea la referencia <samp>refs/remotes/&lt;remote&gt;/HEAD</samp> en el clon. El valor por defecto es borrar la referencia después de ejecutar <samp>git
clone</samp>, que insiste en crearla. Esto se debe a que no se ha encontrado que la referencia sea particularmente útil, ya que no se actualiza automáticamente cuando cambia el
<samp>HEAD</samp> del remoto. Establecer esta opción a <samp>t</samp> preserva el comportamiento por defecto de Git de crear la referencia.
</dd>
<dt>Opción de Usuario: <samp>magit-clone-set-remote.pushDefault</samp></dt>
<dd>
Esta opción controla si el valor de la variable Git <samp>remote.pushDefault</samp> se establece después de la clonación.
<ul>
<li>Si es <samp>t</samp>, siempre se establece sin preguntar.</li>
<li>Si es <samp>ask</samp>, se pregunta a los Usuarios cada vez que clonan un repositorio.</li>
<li>Si es <samp>nil</samp>, nunca se establece.</li>
</ul>
</dd>
<dt>Opción de Usuario: <samp>magit-clone-default-directory</samp></dt>
<dd>
Esta opción controla el nombre de directorio por defecto usado al leer el destino de una operación de clonación.
<ul>
<li>Si es <samp>nil</samp> (por defecto), se utiliza el valor del directorio por defecto.</li>
<li>Si es un directorio, se utiliza éste.</li>
<li>Si es una función, se llama a ésta con la url remota como único argumento y se utiliza el valor devuelto.</li>
</ul>
</dd>
<dt>Opción de Usuario: <samp>magit-clone-name-alist</samp></dt>
<dd>
Esta opción mapea expresiones regulares, que coinciden con nombres de repositorios, a urls de repositorios, haciendo posible que los Usuarios introduzcan nombres cortos en lugar
de urls al clonar repositorios.
</dd>
<dd>
Cada elemento tiene la forma <samp>(REGEXP HOSTNAME USUARIO)</samp>. Cuando el Usuario introduce un nombre cuando un comando de clonación pide un nombre o url, entonces se busca en
esta lista. Se utiliza el primer elemento cuyo REGEXP coincida.
</dd>
<dd>
El formato especificado por la opción <samp>magit-clone-url-format</samp> se usa para convertir el nombre en una url, usando HOSTNAME y el nombre del repositorio. Si el nombre
proporcionado contiene una barra, entonces se usa. En caso contrario, si el nombre omite el propietario del repositorio, se usará el Usuario por defecto especificado en la
entrada correspondiente.
</dd>
<dd>Si USER contiene un punto, entonces se trata como una variable Git y su valor se usa como nombre de usuario. En caso contrario, se usa como nombre de usuario.</dd>
<dt>Opción de Usuario: <samp>magit-clone-url-format</samp></dt>
<dd>
El formato especificado por esta opción se usa cuando se convierten nombres de repositorios en urls. <samp>%h</samp> es el nombre del host y <samp>%n</samp> es el nombre del repositorio,
incluyendo el nombre del propietario. El valor puede ser una cadena (que representa un único formato estático) o una lista con elementos <samp>(HOSTNAME . FORMAT)</samp> que asignan
nombres de host a formatos. Cuando se usa una lista, la clave <samp>t</samp> representa el formato por defecto.
</dd>
<dd>
Ejemplo de cadena de formato simple:
<div class="pre"><pre>
(setq magit-clone-url-format
&quot;git@%h:%n.git&quot;)
</pre></div>
</dd>
<dd>
Ejemplo de cadenas de formato by-hostname:
<div class="pre"><pre>
(setq magit-clone-url-format
'((&quot;git.example.com&quot; . &quot;git@%h:~%n&quot;)
(nil . &quot;git@%h:%n.git&quot;)))
</pre></div>
</dd>
<dt>Opción de Usuraio: <samp>magit-post-clone-hook</samp></dt>
<dd>
El gancho se ejecuta después de que el proceso Git haya finalizado con éxito la clonación del repositorio. Cuando el gancho es llamado, <samp>default-directory</samp> es let-bound al
directorio donde el repositorio ha sido clonado.
</dd>
</dl>
<h2 id="cambios_preparados_y_no_preparados_tt_staged_tt_tt_unstaged_tt">Cambios Preparados y No Preparados (<tt>staged</tt>/<tt>unstaged</tt>)<a href="#cambios_preparados_y_no_preparados_tt_staged_tt_tt_unstaged_tt"></a></h2>
<p>
Al igual que Git, Magit puede, por supuesto, preparar y retirar archivos completos del área de preparación. A diferencia de Git, Magit también permite a los Usuarios sacar del área
de preparación pedazos de archivos individuales e incluso trozos de una parte de un archivo. Para poner partes de archivos individuales y partes de archivos en el área de preparación
usando Git directamente, hay que usar la interfaz muy modal y bastante torpe de una sesión <samp>git add --interactive</samp>.
</p>
<p>
Con Magit, por otro lado, se pueden sacar del área de preparación partes individuales (hunks) simplemente moviendo el punto en la sección respectiva dentro de un diff mostrado en el
búfer de estado o en un búfer de diff separado y tecleando <samp>s</samp> o <samp>u</samp>. Para operar sólo en partes de un hunk, marque los cambios que deben ser sacados del área de
preparación usando la región y luego pulse la misma tecla que se usaría para sacarlos de esta área. Para procesar varios ficheros o partes a la vez, use una región que empiece dentro
del encabezado de la sección y termine dentro del encabezado de una sección hermana del mismo tipo.
</p>
<p>
Además de la inclusión y desvinculación del área de preparación, Magit también proporciona otras "variantes de aplicación" que también pueden operar sobre uno o varios archivos, un o
varios trozo a la vez y sobre partes de un trozo. Estas variantes de aplicación se describen en la siguiente sección.
</p>
<p>También puede usar Ediff para incluír o desvincular del área de preparación. Véase Ediffing.</p>
<dl>
<dt><kbd>s</kbd> (<i><samp>s</samp></i>, <samp>magit-stage</samp>)</dt>
<dd>Añade el cambio en el punto al área de preparación.</dd>
<dd>
Con un argumento de prefijo y un fichero (o ficheros) sin seguimiento en el punto, pone en escena el fichero pero no su contenido. De este modo, sólo se puede poner en escena un
subconjunto de los cambios del nuevo archivo.
</dd>
<dt><kbd>S</kbd> (<i><samp>S</samp></i>, <samp>magit-stage-modified</samp>)</dt>
<dd>
Añade al área de preparación (stage) todos los cambios de los archivos modificados en el árbol de trabajo y todo el contenido nuevo de los archivos rastreados. Elimina del índice
los archivos rastreados que ya no existen en el árbol de trabajo. Con un argumento de prefijo, también se preparan los archivos no seguidos previamente (pero no ignorados).
</dd>
<dt><kbd>u</kbd> (<i><samp>u</samp></i>, <samp>magit-unstage</samp>)</dt>
<dd>Elimina el cambio en el punto del área de preparación.</dd>
<dd>
Sólo pueden sacarse del área de preparación (unstaged) los cambios que previamente se han puesto ahí. Pero por defecto este comando realiza una acción algo similar a retiralos
aún cuando no estuviesen incluídos en dicha área, cuando se llama sobre un cambio confirmado: anula el cambio en el índice pero no en el árbol de trabajo.
</dd>
<dt><kbd>U</kbd> (<i><samp>U</samp></i>, <samp>magit-unstage-all</samp>)</dt>
<dd>Retira todos los cambios del área de preparación (staging area).</dd>
<dt>Opción de Usuario: <samp>magit-unstage-committed</samp></dt>
<dd>
Esta opción controla si <samp>magit-unstage</samp> "deshace" los cambios confirmados invirtiéndolos en el índice pero no en el árbol de trabajo. La alternativa es generar un error.
</dd>
<dt><kbd>Alt</kbd>-<kbd>x</kbd> <samp>magit-reverse-in-index</samp> (<i><samp>M-x magit-reverse-in-index</samp></i>)</dt>
<dd>
Este comando invierte el cambio confirmado en un punto del índice pero no del árbol de trabajo. Por defecto no hay ninguna tecla asociada directamente a este comando, pero se
ejecuta indirectamente cuando se pulsa <samp>u</samp> (<samp>magit-unstage</samp>) en un cambio confirmado.
</dd>
<dd>
Esto permite extraer un cambio de <samp>HEAD</samp>, dejándolo en el árbol de trabajo, para que pueda ser confirmado más tarde usando una confirmación separada. Un flujo de trabajo
típico sería:
<ol>
<li>Opcionalmente, asegúrese de que no hay cambios no confirmados.</li>
<li>Visite la confirmación <samp>HEAD</samp> y navegue hasta el cambio que no debería haber sido incluido en esa confirmación.</li>
<li>Escriba <kbd>u</kbd> (<samp>magit-unstage</samp>) para revertirlo en el índice. Esto asume que <samp>magit-unstage-committed-changes</samp> no es nulo.</li>
<li>Escriba <kbd>c</kbd><kbd>e</kbd> para extender <samp>HEAD</samp> con los cambios incluídos en el área de preparación, sumándolos los que ya estaban incluídos
anteriormente.</li>
<li>Opcionalmente, incluya en el área de preparación los cambios restantes usando <kbd>s</kbd> o <kbd>S</kbd> y, a continuación, escriba <kbd>c</kbd><kbd>c</kbd> para crear
una nueva confirmación.</li>
</ol>
</dd>
<dt><kbd>Alt</kbd>-<kbd>x</kbd> <samp>magit-reset-index</samp> (<i><samp>M-x magit-reset-index</samp></i>)</dt>
<dd>Restablece el índice a alguna confirmación. Dicha confirmación se lee del Usuario y por defecto es la confirmación en el punto, si no la hay, por defecto es <samp>HEAD</samp>.</dd>
</dl>
<p>Vea <a href="#@GENDOC:incluir_en_area_de_preparacion_a_partir_de_buferes_que_estan_visitando_archivos@" onclick="c('@GENDOC:incluir_en_area_de_preparacion_a_partir_de_buferes_que_estan_visitando_archivos@')">Incluír en área de preparación a partir de búferes que están visitando archivos.</a></p>
<h3 id="area_de_preparacion_staging_area_desde_archivo_visitado_en_el_buffer">Área de preparación (staging area) desde archivo visitado en el buffer<a href="#area_de_preparacion_staging_area_desde_archivo_visitado_en_el_buffer"></a></h3>
<p>
La inclusión o exclusión detallada al/desde (el) área de preparación debe hacerse desde el estado o desde un búfer diff, pero también es posible eliminar todos los cambios realizados
en el archivo visitado en el búfer actual desde dentro de ese búfer.
</p>
<dl>
<dt><kbd>Alt</kbd>-<kbd>x</kbd> <samp>magit-stage-file</samp> ( <i><samp>M-x magit-stage-file</samp></i> )</dt>
<dd>
Cuando se invoca dentro de un búfer que visita un archivo, pone en el área de preparación a todos los cambios de ese archivo. En un buffer Magit, se pone en escena el archivo en
cuestión, si existe. En caso contrario, solicita un fichero para ser preparado. Con un argumento de prefijo, siempre pide al Usuario un archivo, incluso en un archivo que está
siendo visitado por un buffer o cuando hay una sección de archivos en el punto.
</dd>
<dt><kbd>Alt</kbd>-<kbd>x</kbd> <samp>magit-unstage-file</samp> ( <i><samp>M-x magit-unstage-file</samp></i> )</dt>
<dd>
Cuando se invoca desde un buffer que visita un archivo, deshace todos los cambios en ese archivo. En un buffer Magit, saca del área de preparación al archivo en el punto si lo
hay. En caso contrario, solicita un fichero para ser desafectado de dicha área. Con un argumento de prefijo, siempre pide al Usuario un archivo, incluso en un buffer que visita
archivos o cuando hay una sección de archivo en el punto.
</dd>
</dl>
<h2 id="aplicacion">Aplicación<a href="#aplicacion"></a></h2>
<p>
Magit proporciona varias formas de aplicar un parche: preparado (stage), sin preparar (unstage), descartar (discard), revertir (reverse) y una forma llamada aplicación regular
(regular apply). Al menos cuando se opera sobre un trozo, todas ellas se implementan usando git apply, que es por lo que se llaman variantes de aplicación.
<ul>
<li>Preparación (stage). Aplica en el índice un cambio que haya en el árbol de trabajo . El cambio también permanece en el árbol de trabajo.</li>
<li>Sacar del área de preparación (unstage). Elimina una modificación en el índice. La modificación permanece en el árbol de trabajo.</li>
<li>Descartar. A un cambio preparado, lo elimina del árbol de trabajo y del índice. A un cambio no preparado, lo elimina sólo del árbol de trabajo.</li>
<li>
Revertir (reverse). Anula un cambio en el árbol de trabajo. Se pueden anular tanto los cambios confirmados como los cambios por etapas. Los cambios no confirmados no se
pueden anular. En su lugar, deséchelos.
</li>
<li>
Aplicar. Aplica un cambio al árbol de trabajo. Tanto los cambios confirmados como los cambios por etapas pueden ser aplicados. Los cambios no preparados no pueden aplicarse,
puesto que ya se han aplicado.
</li>
</ul>
</p>
<p>
En la sección anterior se han descrito los comandos para incluir en el área de preparación o sacar de ella. A continuación se describen los comandos que implementan las variantes de
aplicación restantes.
</p>
<dl>
<dt><kbd>a</kbd> (<i><samp>a</samp></i>, <samp>magit-apply</samp>)</dt>
<dd>Aplica el cambio en el punto al árbol de trabajo.</dd>
<dd>Con un argumento de prefijo se vuelve a una fusión de 3 vías. Al hacerlo, el cambio se aplica también al índice.</dd>
<dt><kbd>k</kbd> (<i><samp>k</samp></i>, <samp>magit-discard</samp>)</dt>
<dd>Elimina en el punto el cambio que haya en el árbol de trabajo.</dd>
<dd>
En un trozo o fichero con conflictos sin resolver, pregunta qué lado mantener (descartando el otro). Si el punto está dentro del texto de un lado, entonces conserva ese lado sin
preguntar.
</dd>
<dt><kbd>v</kbd> (<i><samp>v</samp></i>, <samp>magit-reverse</samp>)</dt>
<dd>Revierte el cambio del árbol de trabajo en un punto.</dd>
<dd>Con un argumento de prefijo, retrocede a una fusión de 3 vías. Al hacerlo, el cambio se aplica también al índice.</dd>
</dl>
<p>Con un argumento prefijo, todas las variantes de apply intentan una fusión a tres vías cuando es apropiado (es decir, cuando <samp>git apply</samp> se usa internamente).</p>
<h2 id="confirmando">Confirmando<a href="#confirmando"></a></h2>
<p>
Cuando el Usuario inicia una confirmación (un commit), Magit llama a <samp>git commit</samp> sin ningún argumento, por lo que Git tiene que obtenerlo del Usuario. Ello crea el archivo
<samp>.git/COMMIT_EDITMSG</samp> y luego abre ese archivo en un editor. Magit se encarga de que ese editor sea Emacsclient. Una vez que el Usuario termina la sesión de edición, el
Emacsclient sale y Git crea el commit usando el contenido del archivo como mensaje.
</p>
<h3 id="iniciando_una_confirmacion">Iniciando una Confirmación<a href="#iniciando_una_confirmacion"></a></h3>
<dl>
<dt><kbd>c</kbd> (<i><samp>c</samp></i>, <samp>magit-commit</samp>)</dt>
<dd>
Cuando el Usuario inicia una confirmación, Magit llama a <samp>git commit</samp> sin ningún argumento, por lo que Git tiene que obtenerlo del Usuario. Crea el archivo
<samp>.git/COMMIT_EDITMSG</samp> y luego abre ese archivo en un editor. Magit se encarga de que ese editor sea Emacsclient. Una vez que el Usuario termina la sesión de edición, se
cierra Emacsclient y Git crea la confirmación usando el contenido del archivo como mensaje.
</dd>
<dt><kbd>c</kbd><kbd>c</kbd> (<i><samp>c c</samp></i>, <samp>magit-commit-create</samp>)</dt>
<dd>Crea una nueva confirmación en <samp>HEAD</samp>. Con un argumento de prefijo, en su lugar modifica la confirmación en <samp>HEAD</samp>.</dd>
<dt><kbd>c</kbd><kbd>a</kbd> (<i><samp>c a</samp></i>, <samp>magit-commit-amend</samp>)</dt>
<dd>Modifica el último commit.</dd>
<dt><kbd>m e</kbd> (<i><samp>c e</samp></i>, <samp>magit-commit-extended</samp>)</dt>
<dd>
Modifica la última confirmación, sin editar el mensaje. Con un argumento prefijo se mantiene la fecha del autor de la confirmación (commiter), en caso contrario se cambia. La
opción <samp>magit-commit-extend-override-date</samp> puede usarse para invertir el significado del argumento prefijo.
</dd>
<dd>De forma no interactiva, respeta el argumento opcional OVERRIDE-DATE e ignora la opción.</dd>
<dt><kbd>c</kbd><kbd>w</kbd> (<i><samp>c w</samp></i>, <samp>magit-commit-reword</samp>)</dt>
<dd>
Reordena la última confirmación, ignorando los cambios por etapas. Con un argumento prefijo se mantiene la fecha del committer, en caso contrario se cambia. La opción
<samp>magit-commit-reword-override-date</samp> puede usarse para invertir el significado del argumento prefijo.
</dd>
<dd>Respeta de forma no interactiva el argumento opcional OVERRIDE-DATE e ignora la opción.</dd>
<dt><kbd>c</kbd><kbd>f</kbd> (<i><samp>c f</samp></i>, <samp>magit-commit-fixup</samp>)</dt>
<dd>Crea una confirmación de corrección.</dd>
<dd>
Con un argumento prefijo, es necesario notificar el objetivo de la confirmación. De lo contrario, la confirmación en el punto puede usarse sin aclaración dependiendo del valor de
la opción <samp>magit-commit-squash-confirm</samp>.
</dd>
<dt><kbd>c</kbd><kbd>F</kbd> (<i><samp>c F</samp></i>, <samp>magit-commit-instant-fixup</samp>)</dt>
<dd>Crea una confirmación de corrección y vuelve a reorganizar (rebase) al instante.</dd>
<dt><kbd>c</kbd><kbd>s</kbd> (<i><samp>c s</samp></i>, <samp>magit-commit-squash</samp>)</dt>
<dd>Crea una confirmación de un aplastamiento (squash commit), sin editar el mensaje squash.</dd>
<dd>
Con un argumento prefijo, se debe aclarar el objetivo de esta confirmación. De lo contrario, la confirmación en el punto puede usarse sin aclarar nada dependiendo del valor de la
opción <samp>magit-commit-squash-confirm</samp>.
</dd>
<dt><kbd>c</kbd><kbd>S</kbd> (<i><samp>c S</samp></i>, <samp>magit-commit-instant-squash</samp>)</dt>
<dd>Crea una confirmación de aplastamiento (squash commit) y reorganiza (rebase) al instante.</dd>
<dt><kbd>c</kbd><kbd>A</kbd> (<i><samp>c A</samp></i>, <samp>magit-commit-augment</samp>)</dt>
<dd>Crea una confirmación de aplastamiento (un squash commit), editando el mensaje squash.</dd>
<dd>
Con un argumento prefijo, la confirmación (el commit) de destino tiene que ser reafirmada. De lo contrario, el commit en el punto puede usarse sin confirmación dependiendo del
valor de la opción <samp>magit-commit-squash-confirm</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-commit-ask-to-stage</samp></dt>
<dd>
Se pregunta si incluír en el área de preparación (staged area) a todos los cambios aún no incorporados en dicha área (unstaged) cuando se confirma sin haber incluído nada.
</dd>
<dt>Opción de Usuario: <samp>magit-commit-show-diff</samp></dt>
<dd>Define si el diff relevante se muestra automáticamente al confirmar.</dd>
<dt>Opción de Usuario: <samp>magit-commit-extend-override-date</samp></dt>
<dd>Define si el uso de <samp>magit-commit-extend</samp> cambia la fecha de confirmación.</dd>
<dt>Opción de Usuario: <samp>magit-commit-reword-override-date</samp></dt>
<dd>Define si el uso de <samp>magit-commit-reword</samp> cambia la fecha de confirmación.</dd>
<dt>Opción de Usuario: <samp>magit-commit-squash-confirm</samp></dt>
<dd>
Define si la confirmación a la que se dirige squash y fixup tiene que ser confirmada. Si no es nulo, la confirmación en el punto (si existe) se usa por defecto. En caso
contrario, debe confirmarse. Esta opción sólo afecta a <samp>magit-commit-squash</samp> y <samp>magit-commit-fixup</samp>. Las variantes "instantáneas" siempre requieren confirmación
porque es más difícil de recuperar si se comete un error durante su uso.
</dd>
<dt>Opción de Usuario: <samp>magit-post-commit-hook</samp></dt>
<dd>Gancho que se ejecuta después de crear una confirmación sin que el Usuario edite un mensaje.</dd>
<dd>
Este gancho es ejecutado por <samp>magit-refresh</samp> si esta orden es miembro de <samp>magit-post-commit-hook-commands</samp>. Esto sólo incluye comandos llamados
<samp>magit-commit-*</samp> que no requieren que el Usuario edite el mensaje de confirmación en un buffer.
</dd>
<dd>Véase también <samp>git-commit-post-finish-hook</samp>.</dd>
<dt>Opción de Usuario: <samp>magit-commit-diff-inhibit-same-window</samp></dt>
<dd>Define si inhibir el uso de la misma ventana cuando se muestra diff al confirmar.</dd>
<dd>
Cuando se escribe una confirmación, se muestra automáticamente un diff de los cambios a confirmar. La idea es que el diff se muestre en una ventana diferente del mismo marco y
para la mayoría de los Usuarios eso simplemente funciona. En otras palabras, la mayoría de los Usuarios pueden ignorar completamente esta opción porque su valor no supone ninguna
diferencia.
</dd>
<dd>
Sin embargo para los Usuarios que configuraron Emacs para que nunca cree una nueva ventana incluso cuando el paquete explícitamente intente hacerlo, mostrar dos nuevos buffers
significa necesariamente que el primero es inmediatamente reemplazado por el segundo. En nuestro caso, el búfer de mensajes es inmediatamente reemplazado por el búfer de
diferencias, lo cual es, por supuesto, altamente indeseable.
</dd>
<dd>
Una solución consiste en suprimir esta configuración de Usuario en este caso concreto. Los Usuarios tienen que activar explícitamente esta opción. No podemos habilitar la
solución incondicionalmente porque esto causaría problemas a otros Usuarios: si el marco es demasiado pequeño o los ajustes relevantes demasiado agresivos, el buffer de
diferencias (diff) acabaría mostrándose en un nuevo marco.
</dd>
<dd>Vea <a href="https://github.com/magit/magit/issues/4132" target="new">https://github.com/magit/magit/issues/4132</a>.</dd>
</dl>
<h3 id="edicion_de_los_mensajes_de_confirmacion">Edición de los Mensajes de Confirmación<a href="#edicion_de_los_mensajes_de_confirmacion"></a></h3>
<p>
Después de iniciar una confirmación como se describe en la sección anterior, aparecen dos nuevos búferes. Uno muestra los cambios que están a punto de ser confirmados, mientras que
el otro se usa para escribir el mensaje.
</p>
<p>
Los mensajes de confirmación se editan en una sesión de edición -en segundo plano git está esperando a que el editor, en nuestro caso <samp>emacsclient</samp>- guarde el mensaje de
confirmación en un archivo (en la mayoría de los casos <samp>.git/COMMIT_EDITMSG</samp>) y luego regrese. Si el editor vuelve con un estado de salida distinto de cero, entonces git no
crea la confirmación. Así que los comandos más importantes son los de finalizar y abortar la confirmación.
</p>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>c</kbd> (<i><samp>C-c C-c</samp></i>, <samp>with-editor-finish</samp>)</dt>
<dd>Finaliza la sesión de edición actual devolviendo el código de salida 0. A continuación, Git crea la confirmación usando el mensaje que encuentra en el archivo.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>k</kbd> (<i><samp>C-c C-k</samp></i>, <samp>with-editor-cancel</samp>)</dt>
<dd>Cancela la sesión de edición actual devolviendo el código de salida 1. Git cancela la confirmación, pero deja el archivo intacto.</dd>
</dl>
<p>
Además de ser utilizados por git commit, los mensajes también pueden almacenarse en un anillo que persiste hasta que se cierra Emacs. Por defecto, el mensaje se almacena al principio
y al final de una sesión de edición (independientemente de si la sesión ha terminado con éxito o ha sido cancelada). A veces es útil recuperar mensajes de ese anillo.
</p>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>s</kbd> (<i><samp>C-c M-s</samp></i>, <samp>git-commit-save-message</samp>)</dt>
<dd>Guarda el contenido del búfer actual en el anillo de mensajes de confirmación.</dd>
<dt><kbd>Alt</kbd>-<kbd>p</kbd> (<i><samp>M-p</samp></i>, <samp>git-commit-prev-message</samp>)</dt>
<dd>
Ciclo hacia atrás a través del anillo de mensajes de confirmación, después de guardar el mensaje actual en el anillo. Con un prefijo numérico <i>ARG</i>, retrocede <i>ARG</i>
comentarios.</dd>
</dl>
<p>
Por defecto, el diff (las diferencias) de los cambios que están a punto de ser confirmados se muestra automáticamente al invocar la confirmación. Para evitarlo, elimine
<samp>magit-commit-diff de server-switch-hook</samp>.
</p>
<p>
Cuando se modifica una confirmación existente puede ser útil mostrar los cambios que están a punto de ser añadidos a esa confirmación o mostrar esos cambios junto a los que ya han
sido confirmados.
</p>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>d</kbd> (<i><samp>C-c C-d</samp></i>, <samp>magit-diff-while-committing</samp>)</dt>
<dd>
Al confirmar, muestra los cambios que están a punto de confirmarse. Al modificar, si se vuelve a invocar el comando, se muestra sólo los cambios nuevos o todos los cambios que se
van a confirmar.
</dd>
</dl>
<h4 id="uso_de_la_pila_de_revision">Uso de la pila de revisión<a href="#uso_de_la_pila_de_revision"></a></h4>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>w</kbd> (<i><samp>C-c C-w</samp></i>, <samp>magit-pop-revision-stack</samp>)</dt>
<dd>
Este comando inserta una representación de una revisión en el buffer actual. Puede usarse dentro de buffers empleados para escribir mensajes de confirmación, pero también en
otros buffers como los que se usan para editar correos electrónicos o archivos ChangeLog.
</dd>
<dd>
Por defecto, este comando extrae la última revisión añadida a la pila <samp>magit-revision-stack</samp> y la inserta en el búfer actual según el formato
<samp>magit-pop-revision-stack-format</samp>. Las revisiones pueden colocarse en la pila usando <samp>magit-copy-section-value</samp> y <samp>magit-copy-buffer-revision</samp>.
</dd>
<dd>
Si la pila está vacía o con un argumento prefijo, en su lugar lee una revisión en el minibuffer. Usar el historial del minibuffer permite seleccionar un elemento que se ha
extraído anteriormente o insertar una referencia o revisión arbitraria sin introducirla primero en la pila.
</dd>
<dd>
Cuando se lee la revisión desde el minibuffer, puede que no sea posible adivinar el repositorio correcto. Cuando se llama a este comando dentro de un repositorio (por ejemplo,
mientras se redacta un mensaje de confirmación), se usa ese repositorio. En caso contrario (por ejemplo, mientras redacta un correo electrónico), se usará el repositorio
registrado para el elemento superior de la pila (aunque insertemos otra revisión). Si no se llama dentro de un repositorio y con una pila vacía, o con dos argumentos prefijo,
entonces lee también el repositorio en el minibuffer.
</dd>
<dt>Opción de Usuario: <samp>magit-pop-revision-stack-format</samp></dt>
<dd>Esta opción controla cómo el comando <samp>magit-pop-revision-stack</samp> inserta una revisión en el buffer actual.</dd>
<dd>
Las entradas en la pila tienen el formato (<samp>HASH TOPLEVEL</samp>) y esta opción tiene el formato (<samp>POINT-FORMAT EOB-FORMAT INDEX-REGEXP</samp>), todos los cuales pueden ser
nulos o una cadena (aunque uno de EOB-FORMAT o POINT-FORMAT debería ser una cadena, y si INDEX-REGEXP no es nulo, entonces los dos formatos deberían serlo también).
</dd>
<dd>
Primero se usa INDEX-REGEXP para encontrar la entrada previamente insertada, buscando hacia atrás desde el punto. La primera subpartida debe coincidir con el número de índice.
Ese número se incrementa en uno, y se convierte en el número de índice de la entrada que se va a insertar. Si no desea numerar las revisiones insertadas, use <samp>nil</samp> para
INDEX-REGEXP.
</dd>
<dd>Si INDEX-REGEXP es distinto de cero, tanto POINT-FORMAT como EOB-FORMAT deben contener <samp>%N\</samp>, que se sustituye por el número determinado en el paso anterior.</dd>
<dd>Ambos formatos, si no son nulos y después de eliminar %N, se expanden usando <samp>git show --format=FORMAT ...</samp> dentro de TOPLEVEL.</dd>
<dd>
La expansión de POINT-FORMAT se inserta en el punto, y la expansión de EOB-FORMAT se inserta al final del buffer (si el buffer termina con un comentario, entonces se inserta
justo antes de eso).
</dd>
</dl>
<h4 id="pseudo_cabeceras_de_la_confirmacion">Pseudo Cabeceras de la Confirmación<a href="#pseudo_cabeceras_de_la_confirmacion"></a></h4>
<p>Algunos proyectos usan pseudocabeceras en los mensajes de confirmación. Magit colorea dichas cabeceras y proporciona algunos comandos para insertarlas.</p>
<dl>
<dt>Opción de Usuario: <samp>git-commit-known-pseudo-headers</samp></dt>
<dd>Una lista de pseudocabeceras Git a destacar.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>i</kbd> (<i><samp>C-c C-i</samp></i>, <samp>git-commit-insert-pseudo-header</samp>)</dt>
<dd>Inserta una pseudocabecera de mensaje de confirmación.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>a</kbd> (<i><samp>C-c C-a</samp></i>, <samp>git-commit-ack</samp>)</dt>
<dd>Inserta una " cabecera " reconociendo que Ud. ya ha revisado la confirmación.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>r</kbd> (<i><samp>C-c C-r</samp></i>, <samp>git-commit-review</samp>)</dt>
<dd>Inserte un cabecera reconociendo que ha revisado la confirmación.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>s</kbd> (<i><samp>C-c C-s</samp></i>, <samp>git-commit-sigoff</samp>)</dt>
<dd>Inserta un encabezado para firmar la confirmación.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>t</kbd> (<i><samp>C-c C-t</samp></i>, <samp>git-commit-test</samp>)</dt>
<dd>Inserta un encabezado reconociendo que ha verificado la confirmación.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>o</kbd> (<i><samp>C-c C-o</samp></i>, <samp>git-commit-cc</samp>)</dt>
<dd>Inserta un encabezado mencionando a alguien que pueda estar interesado.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>p</kbd> (<i><samp>C-c C-p</samp></i>, <samp>git-commit-reported</samp>)</dt>
<dd>Inserta un encabezado mencionando a la persona que informó del problema que se soluciona con la confirmación.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>i</kbd> (<i><samp>C-c M-i</samp></i>)</dt>
<dd>Inserta un encabezado mencionando a la persona que sugirió el cambio.</dd>
</dl>
<h4 id="modo_confirmacion_y_ganchos">Modo Confirmación y Ganchos<a href="#modo_confirmacion_y_ganchos"></a></h4>
<p>
<samp>git-commit-mode</samp> es un modo menor que sólo se usa para establecer ciertos enlaces clave. Esto hace posible emplear un modo mayor arbitrario en los buffers usados para editar
los mensajes de confirmación. Incluso es posible utilizar diferentes modos mayores en diferentes repositorios, lo cual es útil cuando diferentes proyectos imponen diferentes
convenciones de mensajes de confirmación.
</p>
<dl>
<dt>Opción de Usuario: <samp>git-commit-major-mode</samp></dt>
<dd>El valor de esta opción es el modo principal utilizado para editar los mensajes de confirmación de Git.</dd>
</dl>
<p>
Debido a que <samp>git-commit-mode</samp> es un modo menor, no usamos su gancho (hook) de modo para configurar el buffer, excepto para los enlaces clave. El resto de la configuración se
hace en la función <samp>git-commit-setup</samp>, que entre otras cosas ejecuta el gancho <samp>git-commit-setup-hook</samp>.
</p>
<dl>
<dt>Opción de Usuario: <samp>git-commit-setup-hook</samp></dt>
<dd>Gancho que se ejecuta al final de <samp>git-commit-setup</samp>.</dd>
</dl>
<p>Las siguientes funciones son adecuadas para este gancho:</p>
<dl>
<dt>Función: <samp>git-commit-save-message</samp></dt>
<dd>Guarda el contenido del búfer actual en el anillo de mensajes de confirmación.</dd>
<dt>Función: <samp>git-commit-setup-changelog-support</samp></dt>
<dd>Después de llamar a esta función, las entradas de ChangeLog se tratan como párrafos.</dd>
<dt>Función: <samp>git-commit-turn-on-auto-fill</samp></dt>
<dd>Activa el modo de autocompletado (<samp>auto-fill-mode</samp>).</dd>
<dt>Función: <samp>git-commit-turn-on-flyspell</samp></dt>
<dd>Activa el modo Flyspell. Evita que se comprueben los comentarios y, por último, revisa que el texto actual no sea comentario.</dd>
<dt>Función: <samp>git-commit-propertize-diff</samp></dt>
<dd>
Adecuar la diferencia mostrada (el diff) dentro del búfer del mensaje de confirmación. Git inserta tales diffs en la plantilla del mensaje de confirmación cuando se usa el
argumento <samp>--verbose</samp>. <samp>magit-commit</samp> por defecto no ofrece ese argumento porque el diff que se muestra en un buffer separado es más útil. Pero algunos Usuarios no
están de acuerdo, y por eso existe esta función.
</dd>
<dt>Función: <samp>bug-reference-mode</samp></dt>
<dd>Referencias de errores de hipervínculo en el búfer.</dd>
<dt>Función: <samp>with-editor-usage-message</samp></dt>
<dd>Muestra información de uso en el área de eco.</dd>
<dt>Opción de Usuario: </dt>
<dd>Gancho que se ejecuta después de que el Usuario haya terminado de escribir un mensaje de confirmación.</dd>
<dd>
Este gancho sólo se ejecuta después de pulsar <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>c</kbd> (<samp>C-c C-c</samp>) en un buffer utilizado para editar un mensaje de
confirmación. Si se crea una confirmación sin que el Usuario haya escrito un mensaje en un buffer, entonces este gancho no se ejecuta.
</dd>
<dd>
Este gancho no se ejecuta hasta que se haya creado la nueva confirmación. Si esto le lleva a Git más de un segundo, entonces este gancho no se ejecuta. Para ciertos comandos,
como <samp>magit-rebase-continue</samp>, este gancho nunca se ejecuta porque si lo hiciera se produciría una condición de carrera.
</dd>
<dd>Este gancho sólo se ejecuta si <samp>magit</samp> está disponible.</dd>
<dd>Vea <samp>magit-post-commit-hook</samp>.</dd>
</dl>
<h4 id="convenciones_para_mensajes_de_confirmacion">Convenciones para mensajes de confirmación<a href="#convenciones_para_mensajes_de_confirmacion"></a></h4>
<p>
Git-Commit resalta ciertas violaciones de las convenciones comúnmente aceptadas en los mensajes de confirmación. Ciertas violaciones incluso hacen que Git-Commit le pida que confirme
que: realmente quiere hacer eso. Esta molestia puede, por supuesto, ser desactivada, pero el resultado de hacer eso por lo general es que en lugar de algún código es ahora el humano
que está revisando sus confirmaciones, el que tiene que perder algo de tiempo diciéndole que las corrija.
</p>
<dl>
<dt>Opción de Usuario: <samp>git-commit-summary-max-length</samp></dt>
<dd>
La longitud máxima prevista para la línea de resumen de los mensajes de confirmación. Los caracteres que superan esta columna se colorean para indicar que se ha violado esta
preferencia.
</dd>
<dt>Opción de Usuario: <samp>git-commit-finish-query-functions</samp></dt>
<dd>Lista de funciones llamadas a consulta antes de llevar a cabo la confirmación.</dd>
<dd>
El búfer de mensajes de confirmación está activo mientras se llama a las funciones. Si alguna de ellas devuelve nil, entonces no se ejecuta la confirmación y no se elimina el
búfer. El Usuario debe solucionar el problema e intentarlo de nuevo.
</dd>
<dd>
Las funciones se llaman con un argumento. Si no es nulo, indica que el Usuario usó un argumento prefijo para forzar la finalización de la sesión a pesar de los problemas.
Normalmente, las funciones deberían respetar este deseo y devolver un valor no nulo.
</dd>
<dd>Por defecto el único miembro es <samp>git-commit-check-style-conventions</samp>.</dd>
<dt>Opción de Usuario: <samp>git-commit-check-style-conventions</samp></dt>
<dd>Esta función comprueba si se infringen determinadas convenciones básicas de estilo. Para cada violación pregunta a los Usuarios si desean continuar de todos modos.</dd>
<dt>Opción de Usuario: <samp>git-commit-style-conventions-checks</samp></dt>
<dd>
Esta opción controla qué convenciones intenta aplicar la función del mismo nombre. El valor es una lista de símbolos autoexplicativos que identifican ciertas convenciones;
segunda línea no vacía y línea de resumen demasiado larga.
</dd>
</dl>
<h2 id="modelo_de_ramificacion_branching">Modelo de Ramificación (Branching)<a href="#modelo_de_ramificacion_branching"></a></h2>
<h3 id="dos_ramas_remotas">Dos ramas remotas<a href="#dos_ramas_remotas"></a></h3>
<p>
El flujo ascendente (upstream) de una rama local es la rama en la que las confirmaciones de esa rama local se fusionarán finalmente, por lo general algo así como origin/master. Para
la rama maestra en sí, la rama upstream y la rama a la que se está empujando, suelen ser la misma rama remota. Pero para una rama de características, la rama upstream y la rama a la
que se está empujando deben ser diferentes.
</p>
<p>
Las confirmaciones de las ramas de características también deberían acabar en una rama remota como <samp>origin/master</samp> u <samp>origin/maint</samp>. Por lo tanto, dicha rama debe ser
usada como upstream. Pero las ramas de características no deben ser empujadas directamente a esas ramas. En su lugar, una rama de característica <samp>mi-característica</samp> es
generalmente empujado a <samp>mi-bifuración/mi-característica</samp> o si Usted es un contribuyente <samp>origin/mi-característica</samp>. Una vez revisada la nueva funcionalidad, el
responsable la fusiona con master. Y finalmente master (no <samp>mi-característica</samp> en sí) es empujado a <samp>origin/master</samp>.
</p>
<p>
Pero las nuevas funcionalidades rara vez son perfectas al primer intento, por lo que las ramas de funcionalidades suelen tener que revisarse, mejorarse y volverse a empujar
(re-pushed) varias veces. Por lo tanto, empujar debería ser fácil de hacer, y por esa razón muchos usuarios de Git han llegado a la conclusión de que lo mejor es usar la rama remota
a la que se está empujando la rama de características local como su upstream.
</p>
<p>
Pero por suerte Git ya hace tiempo que tiene soporte para un push-remote que puede configurarse de forma separada de la rama upstream, usando las variables
<samp>branch.&lt;name&gt;.pushRemote</samp> y <samp>remote.pushDefault</samp>. Así que ya no tenemos que elegir cuál de los dos remotos debe usarse como "el remoto".
</p>
<p>
Cada uno de los comandos transitorios fetching, pulling y pushing presenta tres comandos sufijo que actúan sobre la rama actual y alguna otra rama. De estos, <samp>p</samp> está ligado a
un comando que actúa sobre el push-remote, <samp>u</samp> está ligado a un comando que actúa sobre el upstream, y <samp>e</samp> está ligado a un comando que actúa sobre cualquier otra rama.
El búfer de estado muestra las confirmaciones no enviadas (no pushed) y no traídas (no pulled) tanto para el push-remote como para el upstream.
</p>
<p>
Es bastante sencillo configurar estos dos remotos. Los valores de todas las variables que están relacionadas con fetching, pulling y pushing (así como algunas otras variables
relacionadas con las ramas) pueden ser inspeccionadas y cambiadas usando el comando <samp>magit-branch-configure</samp>, que está disponible desde muchos comandos de prefijo transitorio
que tratan con ramas. También es posible configurar el push-remote o upstream mientras se realiza el push (ver <a href="#pushing" onclick="c('pushing')">Pushing</a>).
</p>
<div class="info"><p><span>Importante</span></p><p>
<samp>git pull</samp> es una abreviación de <samp>git fetch</samp> seguido de <samp>git merge FETCH_HEAD</samp>.<br>
O sea que, <samp>git fetch</samp> trae los cambios, pero los deja en otra rama, hasta que se hace el <samp>git merge</samp> para traerlos a la rama local.
</p></div>
<h3 id="comandos_de_rama">Comandos de Rama<a href="#comandos_de_rama"></a></h3>
<p>
El comando de prefijo transitorio de magit para ramas se usa para crear ramas y cambiar entre ellas, y para realizar cambios en las ramas existentes. No se usa para buscar, obtener
(fetch), eniar (pull), fusionar (merge), llevar a cabo rebase o empujar ramas (push), es decir, este comando trata con ramas mismas, no con las confirmaciones accesibles de ellas.
Esas características están disponibles en un comando transitorio separado.
</p>
<dl>
<dt><kbd>b</kbd> (<i><samp>b</samp></i>, <samp>magit-branch</samp>)</dt>
<dd>Este comando de prefijo transitorio une los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoca un sufijo.</dd>
<dd>Por defecto, también une y muestra los valores de algunas variables Git relacionadas con la rama y permite cambiar sus valores.</dd>
<dt>Opción de Usuario; <samp>magit-branch-direct-configure</samp></dt>
<dd>
Esta opción controla si el comando transitorio <samp>magit-branch</samp> se puede usar para cambiar directamente los valores de las variables Git. Este valor predeterminado es
<samp>t</samp> (para evitar cambiar los enlaces clave). Cuando se establece en <samp>nil</samp>, ese comando transitorio no muestra variables, y en su lugar se de usar su comando sufijo
transitorio <samp>magit-branch-configure</samp> para ver y cambiar las variables relacionadas con la rama.
</dd>
<dt><kbd>b</kbd><kbd>C</kbd> (<i><samp>b C</samp></i><samp>magit-branch-configure</samp>)<br>
<kbd>f</kbd><kbd>C</kbd> (<i><samp>f C</samp></i>)<br>
<kbd>F</kbd><kbd>C</kbd> (<i><samp>F C</samp></i>)<br>
<kbd>P</kbd><kbd>C</kbd> (<i><samp>P C</samp></i>)
</dt>
<dd>
Este comando de prefijo transitorio une los comandos que establecen el valor de las variables relacionadas con la rama y las muestra en un búfer temporal hasta que salga el
transitorio.
</dd>
<dd>Con un argumento de prefijo, este comando siempre solicita una rama.</dd>
<dd>
Sin un argumento de prefijo, esto depende de si se invocó como un sufijo de <samp>magit-branch</samp> y de <samp>magit-branch-direct-configure</samp>. Si <samp>magit-branch</samp> ya muestra
las variables para la rama actual, no es útil invocar otro transitorio que las muestra para la misma rama. En ese caso, este sistema solicita una rama.
</dd>
</dl>
<p>Las variables se describen en <a href="#@GENDOC:git_variables_de_rama@" onclick="c('@GENDOC:git_variables_de_rama@')">Git, variables de rama</a>.</p>
<dl>
<dt><kbd>b</kbd><kbd>b</kbd> (<i><samp>b b</samp></i>, <samp>magit-checkout</samp>)</dt>
<dd>
Consulta una revisión leída en el minibuffer y no muestra la rama o la revisión arbitraria en el punto. Si la revisión es una rama local, entonces esa se convierte en la rama
actual. Si es algo más, se separa <samp>HEAD</samp>. <i>Checkout</i> falla si el árbol de trabajo o el área de preparación contienen cambios.
</dd>
<dt><kbd>b</kbd><kbd>n</kbd> (<i><samp>b n</samp></i>, <samp>magit-branch-create</samp>)</dt>
<dd>
Crea una nueva rama. Se le pide al usuario una rama o una revisión arbitraria para usar como punto de partida de la nueva rama. Cuando se proporciona un nombre de rama, eso se
convierte en la rama ascendente de la nueva rama. El nombre de la nueva rama también se lee en el minibuffer.
</dd>
<dd>Véase también <samp>magit-branch-prefer-remote-upstream</samp></dd>
<dt><kbd>b</kbd><kbd>c</kbd> (<i><samp>b c</samp></i>, <samp>magit-branch-and-checkout</samp>)</dt>
<dd>Este comando crea una nueva rama como <samp>magit-branch-create</samp>, pero luego también la verifica.</dd>
<dd>Véase también la opción <samp>magit-branch-prefer-remote-upstream</samp></dd>
<dt><kbd>b</kbd><kbd>l</kbd> (<i><samp>b l</samp></i>, <samp>magit-branch-checkout</samp>)</dt>
<dd>
Este comando verifica una rama local existente o nueva. Lee un nombre de rama del usuario que ofrece todas las ramas locales y un subconjunto de ramas remotas como candidatas.
Las ramas remotas para las cuales existe una rama local con el mismo nombre se omiten de la lista de candidatos. El usuario también puede ingresar un nombre de rama completamente
nueva.
<ul>
<li>Si el usuario selecciona una rama local existente, se verifica.</li>
<li>Si el usuario selecciona una rama remota, crea y verifica una nueva rama local con el mismo nombre, y configura la rama remota seleccionada como el destino de lo que se va
a enviar.</li>
<li>Si el usuario ingresa a un nuevo nombre de rama, la crea y verifica, después de leer también el punto de partida del usuario.</li>
</ul>
</dd>
<dd>
En los últimos dos casos también se establece el flujo ascedente (upstream). Si está configurado en el punto de partida elegido o algo más depende del valor de
<samp>magit-branch-adjust-remote-upstream-alist</samp>.
</dd>
<dt><kbd>b</kbd><kbd>s</kbd> (<i><samp>b s</samp></i>, <samp>magit-branch-spinoff</samp>)</dt>
<dd>
Este comando crea y verifica una nueva rama que comienza y rastrea la rama actual. Esa rama a su vez se restablece al último confirmación que comparte con su flujo ascendente. Si
la rama actual no tiene flujo ascedente o confirmaciones sin enviar, la nueva rama se crea de todos modos y la rama actual no se toca.
</dd>
<dd>
Esto es útil para crear una rama de características después de que el trabajo ya haya comenzado en la antigua rama (probablemente pero no necesariamente como rama "maestra").
</dd>
<dd>
Si la rama actual es un miembro del valor de la opción <samp>magit-branch-prefer-remote-upstream</samp> (que ver), entonces la rama actual se usará como el punto de partida como de
costumbre, pero el flujo ascendente del punto de partida puede ser usado como el flujo ascendente de la nueva rama, en lugar del punto de partida en sí.
</dd>
<dd>
Si la opción FROM es no-nul, la rama fuente se restablece a <samp>FROM~</samp>, en lugar de la última confirmación que comparte con el flujo ascendente. Interactivamente, FROM nunca
es no-nula, si la región selecciona algunas confirmaciones, entre esas confirmaciones, FROM es la menor cantidad de confirmaciones por delante de la rama fuente.
</dd>
<dd>
La confirmación en el otro extremo de la selección en realidad no importa, todas las confirmaciones FROM y <samp>HEAD</samp> se trasladan a la nueva rama. Si FROM no es accesible
desde <samp>HEAD</samp> o es accesible desde la rama origen del flujo ascendente, entonces se plantea un error.
</dd>
<dt><kbd>b</kbd><kbd>S</kbd> (<i><samp>b S</samp></i>, <samp>magit-branch-spinout</samp>)</dt>
<dd>
Este comando se comporta como <samp>magit-branch-spinoff</samp>, excepto que no cambia la rama actual. Si hay cambios no confirmados, se comporta exactamente <samp>como
magit-branch-spinoff</samp>.
</dd>
<dt><kbd>b</kbd><kbd>x</kbd> (<i><samp>b x</samp></i>, <samp>magit-branch-reset</samp>)</dt>
<dd>Este comando restablece una rama, por defecto a la rama en el punto, a la punta de otra rama o cualquier otra confirmación.</dd>
<dd>
Cuando la rama que se reinicia es la rama actual, se lleva a cabo un reinicio duro. Si hay algún cambio no confirmado, el usuario debe confirmar el reinicio porque esos cambios
se perderían.
</dd>
<dd>Esto es útil cuando ha comenzado a trabajar en una rama de funciones, pero se da cuenta de que todo es basura y quiere comenzar de nuevo.</dd>
<dd>Al reiniciar a otra rama y se usa un argumento de prefijo, entonces la rama objetivo se establece como el flujo ascendennte de la rama que se está restableciendo.</dd>
<dt><kbd>b</kbd><kbd>k</kbd> (<i><samp>b k</samp></i>, <samp>magit-branch-delete</samp>)</dt>
<dd>
Elimina una o múltiples ramas. Si la región marca múltiples ramas, ofrece eliminarlas. De lo contrario, solicita que se elimine una sola rama, por defecto la rama en el punto.
</dd>
<dd>
De alguna manera es peligroso requerir confirmación. La opción <samp>magit-no-confirm</samp> se puede personalizar para no requerir confirmación en ciertos casos. Consulte su
documento para saber por qué se requiere confirmación de forma predeterminada en ciertos casos o si un aviso es confuso.
</dd>
<dt><kbd>b</kbd><kbd>m</kbd> (<i><samp>b m</samp></i>, <samp>magit-branch-rename</samp>)</dt>
<dd>
Cambia el nombre de una rama. La rama y el nuevo nombre se leen en el minibuffer. Con el argumento de prefijo, la rama se renombra incluso si ese nombre entra en conflicto con
una rama existente.
</dd>
<dt>Opción de Usuario: <samp>magit-branch-read-upstream-first</samp></dt>
<dd>
Configura si al crear una rama, se leerá la rama del flujo ascendente antes que el nombre de la rama que se creará. El valor predeterminado es <samp>t</samp>, y le recomiendo que lo
deje en eso.
</dd>
<dt>Opción de Usuario: <samp>magit-branch-prefer-remote-upstream</samp></dt>
<dd>Esta opción especifica si se favorecen los flujos ascendentes remotos sobre los flujos ascendentes locales al crear nuevas ramas.</dd>
<dd>
Cuando se crea una nueva rama, se sugiere un nombre de rama, confirmación o, archivos (o partes de un archivo) escondidos en el punto como el punto de partida de la nueva rama, o
si no hay tal revisión en el punto de la rama actual. En cualquier caso, el usuario puede elegir otro punto de partida.
</dd>
<dd>
Si el punto de partida elegido es una rama, entonces también se puede establecer como el flujo ascendente de la nueva rama, dependiendo del valor de la variable GIT
<samp>branch.autoSetupMerge</samp>. Por defecto, esto se hace para ramas remotas, pero no para ramas locales.
</dd>
<dd>
Es posible que prefiera usar siempre una rama remota como flujo ascendente. Si el punto de partida elegido es (1) una rama local, (2) cuyo nombre coincide con un miembro del
valor de esta opción, (3) el flujo ascendente de esa rama local es una rama remota con el mismo nombre, y (4) Esa rama remota puede ser avanzada rápidamente a la rama local,
luego la rama elegida se usa como punto de partida, pero su propio flujo ascendete (upstream) se usa como upstrem de la nueva rama.
</dd>
<dd>
Los miembros del valor de esta opción se tratan como nombres de ramas que tienen que igualar exactamente a menos que contengan un caracter que los haga inválidos como un nombre
de rama. Los caracteres recomendados para usar para desencadenar la interpretación como expresión regular son <samp>*</samp> y <samp>^</samp>. Algunos otros caracteres de los que se
puede esperar que sean inválidos, en realidad no lo son, por ejemplo, .+$ son perfectamente válidos. Más precisamente, si <samp>git check-ref-format-branch CADENA</samp> sale con
un estado distinto de cero, luego trata la CADENA como un expresión regular.
</dd>
<dd>
Suponiendo que la rama elegida cumpla estas condiciones, acabaría con:<br>
e.g.:
<div class="pre"><pre>
feature --upstream--&gt; origin/master
</pre></div>
en lugar de:<br>
<div class="pre"><pre>
feature --upstream--&gt; master --upstream--&gt; origin/master
</pre></div>
</dd>
<dd>
Lo que Usted elija es una cuestión de preferencia personal. Si prefiere lo primero, entonces debe añadir ramas como master, next y maint al valor de esta opción.
</dd>
<dt>Opción de Usuario: <samp>magit-branch-adjust-remote-upstream-alist</samp></dt>
<dd>El valor de esta opción es una lista de ramas que se usarán como flujo ascendente (upstream) al crear una rama remota.</dd>
<dd>
Cuando se crea una rama local a partir de una rama efímera localizada en una rama remota, por ejemplo, una rama de características o de revisiones, esa rama remota no debería
usarse normalmente como rama ascendente, ya que la rama push-remota ya permite acceder a ella y tener tanto la rama ascendente como la push-remota haciendo referencia a la misma
rama relacionada sería un desperdicio. En su lugar, una rama como "maint" o "master" debería usarse como upstream.
</dd>
<dd>
Esta opción permite especificar la rama que debe usarse como ascendente al bifurcar ciertas ramas remotas. El valor es una lista de la forma <samp>((UPSTREAM . RULE)...)</samp>. Se
usa el primer elemento que coincida, los siguientes se ignoran.
</dd>
<dd>UPSTREAM es la rama que se usará como upstream para las ramas especificadas por RULE. Puede ser una rama local o remota.</dd>
<dd>
RULE puede ser una expresión regular que busque ramas cuyo flujo ascendente sea el especificado por UPSTREAM. O puede ser una lista de las únicas ramas que <b>no</b> deben usar
UPSTREAM; todas las demás ramas lo harán. La coincidencia se hace después de eliminar la parte remota del nombre de la rama desde la que se está creando la rama.
</dd>
<dd>
Si usa un conjunto finito de ramas no efímeras en todos sus repositorios, podría usar algo como:<br>
<div class="pre"><pre>
((&quot;origin/master&quot; . (&quot;master&quot; &quot;next&quot; &quot;maint&quot;)))
</pre></div>
</dd>
<dd>
O si los nombres de todas sus ramas efímeras contienen una barra, al menos en algunos repositorios, un buen valor podría ser:<br>
<div class="pre"><pre>
((&quot;origin/master&quot; . &quot;/&quot;))
</pre></div>
</dd>
<dd>
Por supuesto, también se puede ajustar:<br>
<div class="pre"><pre>
((&quot;origin/maint&quot; . &quot;\\`hotfix/&quot;)
(&quot;origin/master&quot; . &quot;\\`feature/&quot;))
</pre></div>
</dd>
<dd>
UPSTREAM puede ser una rama local:<br>
<div class="pre"><pre>
((&quot;master&quot; . (&quot;master&quot; &quot;next&quot; &quot;maint&quot;)))
</pre></div>
</dd>
<dd>
Como la rama principal ya no se llama casi siempre "master", debe tener en cuenta otros nombres comunes:<br>
<div class="pre"><pre>
((&quot;main&quot; . (&quot;main&quot; &quot;master&quot; &quot;next&quot; &quot;maint&quot;))
(&quot;master&quot; . (&quot;main&quot; &quot;master&quot; &quot;next&quot; &quot;maint&quot;)))
</pre></div>
</dd>
<dt>Comando: <samp>magit-branch-orphan</samp></dt>
<dd>Este comando crea y comprueba una nueva rama huérfana con contenidos de una revisión dada.</dd>
<dt>Comando: <samp>magit-branch-or-checkout</samp></dt>
<dd>
Este comando es un híbrido entre <samp>magit-checkout</samp> y <samp>magit-branch-and-checkout</samp> y pretende sustituir al primero en <samp>magit-branch</samp>.
</dd>
<dd>
Primero pregunta al Usuario por una rama o revisión existente. Si la entrada del Usuario puede ser resuelta como una rama o revisión, entonces la comprueba, como haría
<samp>magit-checkout</samp>.
</dd>
<dd>
En caso contrario, crea y comprueba una nueva rama usando la entrada como nombre. Antes de hacerlo, lee el punto de inicio de la nueva rama. Esto es similar a lo que hace
<samp>magit-branch-and-checkout</samp>.
</dd>
<dd>
Para usar este comando en lugar de <samp>magit-checkout</samp> añada esto a su archivo init:<br>
<div class="pre"><pre>
(transient-replace-suffix 'magit-branch 'magit-checkout
'(&quot;b&quot; &quot;dwim&quot; magit-branch-or-checkout))
</pre></div>
</dd>
</dl>
<h3 id="variables_de_ramas_git">Variables de Ramas Git<a href="#variables_de_ramas_git"></a></h3>
<p>
Estas variables pueden establecerse desde el comando de prefijo transitorio <samp>magit-branch-configure</samp>. Por defecto, también pueden establecerse desde <samp>magit-branch</samp>. Vea
<a href="#comandos_de_rama" onclick="c('comandos_de_rama')">Comandos de Rama</a>.
</p>
<dl>
<dt>Variable: <samp>branch.NAME.merge</samp></dt>
<dd>
Junto con <samp>branch.NAME.remote</samp>, esta variable define la rama ascendente de la rama local denominada NAME. El valor de esta variable es la referencia completa de la
<i>rama</i> ascendente.
</dd>
<dt>Variable: <samp>branch-NAME.remote</samp></dt>
<dd>
Junto con <samp>branch.NAME.merge</samp> esta variable define la rama del flujo ascendente (upstream) de la rama local llamada NAME. El valor de esta variable es el nombre de la
<i>remota</i> del upstream.
</dd>
<dt>Variable: <samp>branch.NAME.rebase</samp></dt>
<dd>
Esta variable controla si la inserción en la rama NAME (NOMBRE) se efectúa mediante un cambio de base o mediante la fusión de la rama obtenida.
<ul>
<li>Si es <samp>true</samp> (verdadera), la extracción se realiza por reorganización (rebasing).</li>
<li>Si es <samp>false</samp>, la extracción se realiza mediante fusión (merging).</li>
<li>Si no se define, se usaa el valor de <samp>pull.rebase</samp>. El valor por defecto de esta variable es <samp>false</samp>.</li>
</ul>
</dd>
<dt>Variable: <samp>branch.NAME.pushRemote</samp></dt>
<dd>Esta variable especifica la remota a la que se suele enviar la rama denominada NAME (NOMBRE). El valor tiene que ser el nombre de una rama existente.</dd>
<dd>No es posible especificar el nombre de la <i>rama</i> a la que se envía la rama local. El nombre de la rama remota es siempre el mismo que el de la rama local.</dd>
<dd>
Si esta variable no está definida pero <samp>remote.pushDefault</samp> si está definida, se usará el valor de esta última. Por defecto, <samp>remote.pushDefault</samp> no está definida.
</dd>
<dt>Variable: <samp>branch.NAME.description</samp></dt>
<dd>Esta variable puede usarse para describir la rama denominada NAME (NOMBRE). Esa descripción se usa, por ejemplo, al convertir la rama en una serie de parches.</dd>
</dl>
<p>Las siguientes variables especifican los valores predeterminados que se usan si no se establecen las variables específicas de la rama anteriores.</p>
<dl>
<dt>Variable: <samp>pull.rebase</samp></dt>
<dd>
Esta variable especifica si la extracción se realiza por reorganización (rebase) o por fusión (merging). Puede sobrescribirse utilizando <samp>branch.NAME.rebase</samp>.
<ul>
<li>Si es <samp>true</samp> (verdadero), la extracción se efectua reorganizando (rebasing).</li>
<li>Si es <samp>false</samp> (por defecto), la extracción se lleva a cabo mediante fusión (merging).</li>
</ul>
</dd>
<dd>
Dado que nunca es una buena idea fusionar la rama del flujo ascendente (upstream) en una rama <i>feature</i><sup>1</sup> o <i>hotfix</i><sup>1</sup> y la mayoría de las ramas son
ramas de este tipo, debería considerar establecer esto a <samp>true</samp>, y <samp>branch.master.rebase</samp> a <samp>false</samp>.
<div class="info"><p><span>Importante</span></p><p>
<sup>1</sup> Rama <i>feature</i> o <i>hotfix</i> son ramas paralelas sobre las que se trabaja de forma temporal.
</p></div>
</dd>
<dt>Variable: <samp>remote.pushDefault</samp></dt>
<dd>
Esta variable especifica a qué remoto se envían normalmente las ramas locales. Se puede sobrescribir por rama usando <samp>branch.NAME.pushRemote</samp>.
</dd>
</dl>
<p>Las siguientes variables se usan durante la creación de una rama y controlan si las diversas variables específicas de la rama se establecen automáticamente en este momento.</p>
<dl>
<dt>Variable: <samp>branch.autoSetupMerge</samp></dt>
<dd>
Esta variable especifica en qué circunstancias la creación de una rama NOMBRE debe dar lugar a que se establezcan las variables <samp>branch.NOMBRE.merge</samp> y
<samp>branch.NOMBRE.remote</samp> según el punto de partida usado para crear la rama. Si el punto de partida no es una rama, estas variables nunca se establecen.
<ul>
<li>Si es <samp>always</samp> (siempre), las variables se establecen independientemente de si el punto de partida es una rama local o remota.</li>
<li>Si es <samp>true</samp> (verdadero), que es el valor por defecto), las variables se definen cuando el punto de partida es una rama remota, pero no cuando es una rama
local.</li>
<li>Si es <samp>false</samp> (falso), las variables no se fijan nunca.</li>
</ul>
</dd>
<dt>Variable: <samp>branch.autoSetupRebase</samp></dt>
<dd>
Esta variable especifica si la creación de una rama NOMBRE debe dar lugar a que la variable <samp>branch.NOMBRE.rebase</samp> se establezca en verdadero.
<ul>
<li>Si es <samp>always</samp> (siempre), la variable se establece independientemente de si el punto de partida es una rama local o remota.</li>
<li>Si es <samp>local</samp>, la variable se establece cuando el punto de partida es una rama local, pero no cuando es una rama remota.</li>
<li>Si es <samp>remote</samp> (remota), la variable se activa cuando el punto de partida es una rama remota, pero no cuando es una rama local.</li>
<li>Cuando es <samp>never</samp> (nunca) que es el valor por defecto, la variable nunca se establece.</li>
</ul>
</dd>
</dl>
<p>
Tenga en cuenta que los comandos respectivos siempre cambian los valores locales del repositorio. Si desea cambiar el valor global, que se usa cuando el valor local no está definido,
tiene que hacerlo en la línea de comandos, por ejemplo:
<div class="pre"><pre>git config --global remote.autoSetupMerge always</pre></div>
</p>
<p>
Para más información sobre estas variables, consulte <a href="http://git-scm.com/docs/git-config" target="new">git-config(1)</a>, <a href="http://git-scm.com/docs/git-branch" target="new">git-branch(1)</a>, <a href="http://git-scm.com/docs/git-checkout" target="new">git-checkout</a> y <a href="#pushing" onclick="c('pushing')">Pushing</a>.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-prefer-remote-upstream</samp></dt>
<dd>
Esta opción controla si los comandos que leen una rama del Usuario y luego la establecen como rama del flujo ascendente (upstream), ofrecen una rama local o una rama remota como
candidato de finalización por defecto, cuando tienen la opción.
</dd>
<dd>
Esto afecta a todas las órdenes que usan <samp>magit-read-upstream-branch</samp> o <samp>magit-read-starting-point</samp>, lo que incluye todas las órdenes que cambian el upstream y
muchas que crean nuevas ramas.
</dd>
</dl>
<h3 id="comandos_auxiliares_de_rama">Comandos auxiliares de rama<a href="#comandos_auxiliares_de_rama"></a></h3>
<p>Estos comandos no están disponibles por defecto en la rama transitoria <samp>magit-branch</samp>.</p>
<dl>
<dt>Comando: <samp>magit-branch-shelve</samp></dt>
<dd>
Este comando archiva (shelves) una rama. Esto se hace borrando la rama, y creando una nueva referencia "refs/shelved/BRANCH-NAME" apuntando a la misma confirmación a la que
apuntaba la rama. Si la rama eliminada tenía un reflog, éste se conserva como <i>reflog</i><sup>1</sup> de la nueva referencia.
<div class="info"><p><span>Nota</span></p><p>
<sup>1</sup> Un <i>reflog</i> es un registro de cambios (log) que <samp>git</samp> lleva a cabo en segundo plano, en donde se apuntan las referencias de su cabecera
(<samp>HEAD</samp>) y su rama en los últimos meses.
</p></div>
</dd>
<dd>Esto es útil si desea mover una rama fuera de la vista, pero no está lista para descartarla por completo todavía.</dd>
<dt>Comando: <samp>magit-branch-unshelve</samp></dt>
<dd>
Este comando libera una rama que fue previamente almacenada usando <samp>magit-branch-shelve</samp>. Esto se hace borrando la referencia "refs/shelved/BRANCH-NAME" y creando una rama
"BRANCH-NAME" apuntando a la misma confirmación (commit) a la que apuntaba la referencia borrada. Si la referencia eliminada tenía un reflog, éste se restaura como reflog de la
rama.
</dd>
</dl>
<h2 id="fusion_merging">Fusión (merging)<a href="#fusion_merging"></a></h2>
<p>
También puede revisar la página de manual de <a href="http://git-scm.com/docs/git-merge" target="new">git-merge(1)</a>. si desea información sobre cómo resolver conflictos de fusión, consulte la
siguiente sección.
</p>
<dl>
<dt><kbd>m</kbd> (<i><samp>m</samp></i>, <samp>magit-merge</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
</dl>
<p>Cuando no hay ninguna fusión en curso, el transitorio presenta los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>m</kbd><kbd>m</kbd> (<i><samp>m m</samp></i>, <samp>magit-merge-plain</samp>)</dt>
<dd>
Este comando fusiona otra rama o una revisión arbitraria en la rama actual. La rama o revisión a fusionar se lee en el minibuffer y por defecto es la rama en el punto.
</dd>
<dd>
A menos que haya conflictos o se utilice un argumento de prefijo, la confirmación de fusión resultante usa un mensaje de confirmación genérico, y el Usuario no tiene la
oportunidad de inspeccionarlo o cambiarlo antes de que se cree la confirmación. Con un argumento de prefijo esto no crea realmente la confirmación, lo que hace posible
inspeccionar cómo se resolvieron los conflictos y ajustar el mensaje de confirmación.
</dd>
<dt><kbd>m</kbd><kbd>e</kbd> (<i><samp>m e</samp></i>, <samp>magit-merge-editmsg</samp>)</dt>
<dd>
Este comando fusiona otra rama o una revisión arbitraria en la rama actual y abre un búfer de mensajes de confirmación, para que el Usuario pueda hacer ajustes. La confirmación
no se crea hasta que el Usuario termina con <samp>C-c C-c</samp>
</dd>
<dt><kbd>m</kbd><kbd>n</kbd> (<i><samp>m n</samp></i>, <samp>magit-merge-nocommit</samp>)</dt>
<dd>
Este comando fusiona otra rama o una revisión arbitraria en la rama actual, pero no crea realmente la confirmación de fusión. El Usuario puede entonces ajustar la fusión, incluso
cuando la resolución automática de conflictos ha tenido éxito y/o ajustar el mensaje de confirmación.
</dd>
<dt><kbd>m</kbd><kbd>a</kbd> (<i><samp>m a</samp></i>, <samp>magit-merge-absorb</samp>)</dt>
<dd>Este comando fusiona otra rama local en la rama actual y luego elimina la primera.</dd>
<dd>
Antes de fusionar la rama fuente, primero se fuerza su push-remote, siempre que la rama remota respectiva ya exista. Esto asegura que el pull-request respectivo (si existe) no se
atascará en alguna versión obsoleta de los commits que se están fusionando. Finalmente, si <samp>magit-branch-pull-request</samp> se usó para crear la rama fusionada, entonces la
rama remota respectiva también se elimina.
</dd>
<dt><kbd>m</kbd><kbd>i</kbd> (<i><samp>m i</samp></i>, <samp>magit-commit-into</samp>)</dt>
<dd>Este comando fusiona la rama actual con otra rama local y, a continuación, elimina la primera. Esta última se convierte en la nueva rama actual.</dd>
<dd>
Antes de fusionar la rama fuente, primero se fuerza su push-remote, siempre que la rama remota respectiva ya exista. Esto asegura que el pull-request respectivo (si existe) no se
quede atascado en alguna versión obsoleta de las confirmaciones que se están fusionando. Finalmente, si <samp>magit-branch-pull-request</samp> se usó para crear la rama fusionada,
entonces la rama remota respectiva también se elimina.
</dd>
<dt><kbd>d</kbd><kbd>s</kbd> (<i><samp>d s</samp></i>, <samp>magit-merge-squash</samp>)</dt>
<dd>
Este comando aplasta los cambios introducidos por otra rama o una revisión arbitraria en la rama actual. Esto sólo aplica los cambios realizados por los commits aplastados. No se
conserva ninguna información que permita crear una confirmación de fusión real. En lugar de este comando, probablemente debería usar un comando del transitorio apply.
</dd>
<dt><kbd>m</kbd><kbd>p</kbd> (<i><samp>m p</samp></i>, <samp>magit-merge-preview</samp>)</dt>
<dd>Este comando muestra una vista previa de la fusión de otra rama o una revisión arbitraria en la rama actual.</dd>
<dd>
Tenga en cuenta que los comandos, que normalmente cambian la forma en que se muestra un diff, no funcionan en los buffers creados por este comando, porque el comando Git
subyacente no soporta argumentos diff.
</dd>
</dl>
<p>Cuando una fusión está en curso, el transitorio presenta en su lugar los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>m</kbd><kbd>m</kbd> (<i><samp>m m</samp></i>, <samp>magit-merge</samp>)</dt>
<dd>Después de que el Usuario haya resuelto los conflictos, este comando procede con la fusión. Si no se resolvieron algunos conflictos, este comando falla.</dd>
<dt><kbd>m</kbd><kbd>a</kbd> (<i><samp>m a</samp></i>, <samp>magit-merge-abort</samp>)</dt>
<dd>Este comando aborta la operación de fusión en curso.</dd>
</dl>
<h2 id="resolucion_de_conflictos">Resolución de Conflictos<a href="#resolucion_de_conflictos"></a></h2>
<p>
Cuando se fusionan ramas (o se combina o modifica el historial) pueden producirse conflictos. Si se editan dos partes completamente diferentes del mismo archivo en dos ramas y luego
se fusiona una de estas ramas en la otra, Git puede resolverlo por sí mismo, pero si se edita la misma área de un archivo, entonces se requiere un humano para decidir cómo las dos
versiones, o "lados del conflicto", deben combinarse en una sola.
</p>
<p>
Aquí sólo podemos ofrecer una breve introducción al tema e indicarle algunas herramientas que pueden servirle de ayuda. Si es nuevo en esto, consulte la documentación de Git, así
como otros recursos.
</p>
<p>
Si un archivo tiene conflictos y Git no puede resolverlos por sí mismo, coloca ambas versiones en el archivo afectado junto con marcadores especiales cuyo propósito es denotar los
límites de la parte no resuelta del archivo y entre las diferentes versiones. Estas líneas de separación comienzan con cadenas formadas por siete veces el mismo carácter, uno de
<samp>&lt;</samp>, <samp>|</samp>, <samp>=</samp> y <samp>&gt;</samp>, y van seguidas de información sobre el origen de las respectivas versiones, por ejemplo
</p>
<div class="pre"><pre>
&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD
Toma la pastilla azul.
=======
Toma la píldora roja.
&gt;&gt;&gt;&gt;&gt;&gt;&gt; característica
</pre></div>
<p>
En este caso ha elegido tomar la píldora roja en una rama y en otra ha elegido la píldora azul. Ahora que está fusionando estas dos ramas divergentes, es imposible que Git sepa qué
píldora quiere tomar.
</p>
<p>
Para resolver ese conflicto debe crear una versión de la zona afectada del archivo manteniendo sólo uno de los lados, posiblemente editándola para introducir los cambios del otro
lado, eliminar las otras versiones así como los marcadores, y luego preparar el resultado (staged). Una posible solución podría ser:
</p>
<div class="pre"><pre>Toma las dos pastillas.</pre></div>
<p>
A veces es útil ver no sólo los dos lados del conflicto, sino también la versión "original" de antes que la misma zona del archivo se modificara dos veces en ramas diferentes. De
instrucciones a Git para que inserte también esa versión ejecutando este comando una vez:
</p>
<div class="pre"><pre>git config --global merge.conflictStyle diff3</pre></div>
<p>El conflicto anterior podría haber tenido este aspecto:</p>
<div class="pre"><pre>
&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD
Tome la píldora azul.
||||||| fusiona (merge) ascendientes comunes
Tome la píldora azul o la roja, pero no ambas.
=======
Tome la píldora roja.
&gt;&gt;&gt;&gt;&gt;&gt;&gt; característica
</pre></div>
<p>
Si ese fuera el caso, la resolución de conflictos anterior no habría sido correcta, lo que demuestra por qué puede ser útil ver la versión original junto a las versiones en conflicto.
</p>
<p>
Puede llevar a cabo la resolución de conflictos completamente a mano, pero Emacs también proporciona algunos paquetes que ayudan en el proceso: Smerge, Ediff (<a href="https://www.gnu.org/software/emacs/manual/html_node/ediff/index.html#Top" target="new">(ediff)Top</a>), y Emerge (<a href="#@GENDOC:emacs_emerge@" onclick="c('@GENDOC:emacs_emerge@')">(emacs)Emerge</a>). Magit no proporciona sus propias herramientas para la
resolución de conflictos, pero hace más cómodo el uso de Smerge y Ediff. (Ediff sustituye a Emerge, así que de cualquier forma, probablemente no se quiera usar este último ).
</p>
<p>
En el búfer de estado de Magit, los archivos con conflictos no resueltos aparecen en las secciones "Unstaged changes" (cambios no confirmados) y/o "Staged changes" (cambios
confirmados). Llevan como prefijo la palabra "unmerged" (sin fusionar), que en este contexto es esencialmente un sinónimo de "unresolved" (sin resolver).
</p>
<p>
Al pulsar <kbd>RETURN</kbd> (<samp>RET</samp>) mientras el punto se encuentra en una sección de archivo de este tipo, se muestra un búfer que visita ese archivo, activa el modo de fusión
(<samp>smerge-mode</samp>) en ese búfer y coloca el punto dentro de la primera área con conflictos. A continuación, debe resolver ese conflicto usando comandos de edición normales y/o
comandos Smerge.
</p>
<p>
Desafortunadamente Smerge no tiene un manual, pero puede obtener una lista de comandos y vinculantes teclando <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>^</kbd> <kbd>Ctrl</kbd>-<kbd>h</kbd>
<kbd>RETURN</kbd> (<samp>C-c ^ C-h RET</samp>) mientras que el punto esté en un nombre de comando para leer su documentación.
</p>
<p>
Normalmente editaría una versión y luego le diría a Smerge que mantenga sólo esa versión. Use <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>^</kbd><kbd>m</kbd> (<samp>C-c ^ m</samp>,
<samp>smerge-keep-mine</samp>) para mantener la versión <samp>HEAD</samp> o <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>^</kbd><kbd>o</kbd> (<samp>C-c ^ o</samp>, <samp>smerge-keep-other</samp>) para mantener
la versión que sigue a |||||||. A continuación, use <kbd>Ctrl</kbd>-<kbd>d</kbd> <kbd>^</kbd><kbd>n</kbd> (<samp>C-c ^ n</samp>) para pasar a la siguiente área conflictiva del mismo
archivo. Cuando haya terminado de resolver los conflictos, vuelva al búfer de estado de Magit. El archivo debería aparecer ahora como "modified" (modificado), y ya no como "unmerged"
(sin fusionar), porque fusiona automáticamente el archivo cuando se guarda el búfer después de resolver el último conflicto.
</p>
<p>
Magit ahora envuelve los comandos Smerge mencionados, permitiéndote usar estos combinaciones de teclas sin tener que ir al buffer de visita de archivos. Además <kbd>k</kbd>
(<samp>k</samp>, <samp>magit-discard</samp>) en un trozo con conflictos no resueltos pregunta qué lado mantener o, si el punto está en un lado, lo mantiene sin preguntar. De forma similar
<kbd>k</kbd> en un fichero sin resolver pregunta qué lado mantener.
</p>
<p>
Alternativamente puede usar Ediff, que usa buffers separados para las diferentes versiones del fichero. Para resolver conflictos en un fichero usando Ediff pulse e mientras point
esté sobre dicho fichero en el buffer de estado.
</p>
<p>
Ediff también puede usarse para otros fines. Para más información sobre cómo introducir Ediff desde Magit, véase <a href="#ediff" onclick="c('ediff')">Ediff</a>. Explicar cómo usar Ediff está fuera del alcance de este
manual, en su lugar vea <a href="https://www.gnu.org/software/emacs/manual/html_node/ediff/index.html#Top" target="new">(ediff)Top</a>.
</p>
<p>
Si no está seguro de si debe usar Smerge o Ediff, use el primero. Su uso es mucho más fácil de entender, y excepto para conflictos realmente complejos, el segundo suele ser excesivo.
</p>
<h2 id="reordenamiento_rebase">Reordenamiento (rebase)<a href="#reordenamiento_rebase"></a></h2>
<p>
Consulte también la página de manual de <a href="http://git-scm.com/docs/git-rebase" target="new">git-rebase(1)</a>. Para información sobre cómo resolver los conflictos que ocurren durante los
reordenamientos vea la sección anterior.
</p>
<dl>
<dt><kbd>r</kbd> (<i><samp>r</samp></i>, <samp>magit-rebase</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
</dl>
<p>Cuando no hay una reorganización en curso, el transitorio presenta los siguientes comandos de sufijo.</p>
<p>
Usando uno de estos comandos se <i>inicia</i> una secuencia de reorganización. Puede que Git se detenga en algún punto del camino, bien porque Usted se lo haya ordenado, o bien
porque la aplicación de una confirmación haya fallado debido a un conflicto. Cuando ocurre esto, el buffer de estado muestra información sobre la secuencia de reordenamiento en curso
en una sección similar a la de registro. Ver <a href="#@GENDOC:informacion_sobre_el_rebase_en_curso@" onclick="c('@GENDOC:informacion_sobre_el_rebase_en_curso@')">Información sobre el Rebase en Curso</a>.
</p>
<p>Para información sobre el upstream y el push-remote, vea <a href="#dos_ramas_remotas" onclick="c('dos_ramas_remotas')">Dos Ramas Remotas</a>.</p>
<dl>
<dt><kbd>r</kbd><kbd>p</kbd> (<i><samp>r p</samp></i>, <samp>magit-rebase-onto-pushremote</samp>)</dt>
<dd>Este comando vuelve a situar la rama actual en su push-remote (la reordena en la rama remota).</dd>
<dd>
Con un argumento prefijo o cuando el push-remote no está configurado o es inutilizable, entonces deja que el Usuario configure primero el push-remote.
</dd>
<dt><kbd>r</kbd><kbd>u</kbd> (<i><samp>r u</samp></i>, <samp>magit-rebase-onto-upstream</samp>)</dt>
<dd>Este comando hace un reordenamiento de la rama actual sobre su rama ascendente (upstream).</dd>
<dd>Con un argumento prefijo o cuando la rama ascendente no está configurada o no se puede utilizar, entonces deja que el Usuario la configure primero.</dd>
<dt><kbd>r</kbd><kbd>e</kbd> (<i><samp>r e</samp></i>, <samp>magit-rebase-branch</samp>)</dt>
<dd>
Este comando reordena la rama actual en una rama leída en el minibuffer. Todas las confirmaciones accesibles desde la cabecera pero no desde la rama TARGET seleccionada se
vuelven a reordenar.
</dd>
<dt><kbd>r</kbd><kbd>s</kbd> (<i><samp>r s</samp></i>, <samp>magit-rebase-subset</samp>)</dt>
<dd>
Este comando inicia una secuencia de rebase no interactiva para transferir los commits de START a HEAD en NEWBASE. START debe seleccionarse de una lista de confirmaciones
recientes.
</dd>
</dl>
<p>
Por defecto Magit usa el argumento <samp>--autostash</samp>, que hace que los cambios sin confirmar se almacenen en un <i>stash</i> (se oculte parte del archivo ) antes de que comience el
reordenamiento. Estos cambios se restauran una vez finalizado el proceso y, si es posible, se elimina el stash. Si el stash no se aplica limpiamente, no se elimina. En caso de que
algo vaya mal al resolver los conflictos, esto permite volver a empezar.
</p>
<p>
Aunque una de las acciones está dedicada a los reordenamientos interactivos, el transitorio también cuenta con el argumento infijo <samp>--interactive</samp>. Se puede usar para
convertir una de las otras variantes de reordenamiento no interactivo en uno interactivo.
</p>
<p>
Por ejemplo, si desea limpiar una rama de características y al mismo tiempo volver a colocarla en <samp>master</samp>, podría usar <samp>r-iu</samp>. Pero le recomendamos que lo haga en dos
pasos. En primer lugar, use <samp>ri</samp> para limpiar la rama de características, y luego en un segundo paso <samp>ru</samp> para reordenarla en master. De esta manera, si las cosas
resultan ser más complicadas de lo que pensaba y/o se comete un error y hay que empezar de nuevo, sólo tendrá que rehacer la mitad del trabajo.
</p>
<p>
Habilitar explícitamente <samp>--interactive</samp> no tendrá efecto en los siguientes comandos, ya que siempre usan ese argumento de todos modos, incluso si no está habilitado en el
transitorio.
</p>
<dl>
<dt><kbd>r</kbd><kbd>i</kbd> (<i><samp>r i</samp></i>, <samp>magit-rebase-interactive</samp>)</dt>
<dd>Este comando inicia una secuencia interactiva de reordenamiento.</dd>
<dt><kbd>r</kbd><kbd>f</kbd> (<i><samp>r f</samp></i>, <samp>magit-rebase-autosquash</samp>)</dt>
<dd>Este comando combina confirmaciones de squash y fixup con sus objetivos previstos.</dd>
<dt><kbd>r</kbd><kbd>m</kbd> (<i><samp>r m</samp></i>, <samp>magit-rebase-edit-commit</samp>)</dt>
<dd>Este comando inicia una secuencia de reordenamiento interactivo que permite al Usuario <i>editar</i> una única confirmación anterior.</dd>
<dt><kbd>r</kbd><kbd>w</kbd> (<i><t>r w</t></i>, <samp>magit-rebase-reword-commit</samp>)</dt>
<dd>Este comando inicia una secuencia de reordenamiento interactivo que permite al Usuario <i>reordenar</i> una única confirmación anterior.</dd>
<dt><kbd>r</kbd><kbd>k</kbd> (<i><samp>r k</samp></i>, <samp>magit-rebase-remove-commit</samp>)</dt>
<dd>Este comando elimina una confirmación antigua usando reordenamiento.</dd>
</dl>
<p>Cuando se está llevando a cabo un reordenamiento, el transitorio presenta en su lugar los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>r</kbd><kbd>r</kbd> (<i><samp>r r</samp></i>)</dt>
<dd>Este comando reinicia la operación de cambio de reordenamiento actual.</dd>
<dd>En algunos casos aparece un mensaje de confirmación para que lo edite. Con un argumento prefijo, el mensaje antiguo se reutiliza tal cual.</dd>
<dt><kbd>r</kbd><kbd>s</kbd> (<i><samp>r s</samp></i>, <samp>magit-rebase-skip</samp>)</dt>
<dd>Este comando omite la confirmación actual y reinicia la operación de reordenamiento en curso.</dd>
<dt><kbd>r</kbd><kbd>e</kbd> (<i><samp>r e</samp></i>, <samp>magit-rebase-edit</samp>)</dt>
<dd>Este comando permite al Usuario editar la lista de tareas pendientes de la operación de reordenamiento en curso.</dd>
<dt><kbd>r</kbd><kbd>a</kbd> (<i><samp>r a</samp></i>, <samp>magit-rebase-abort</samp>)</dt>
<dd>Este comando aborta la operación de reordenamiento actual, restaurando la rama original.</dd>
</dl>
<h3 id="secuencias_de_edicion_de_reordenamiento">Secuencias de Edición de Reordenamiento<a href="#secuencias_de_edicion_de_reordenamiento"></a></h3>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>c</kbd> (<i><samp>C-c C-c</samp></i>, <samp>with-editor-finish</samp>)</dt>
<dd>Finaliza la sesión de edición actual devolviendo el código de salida 0. A continuación, Git usará las instrucciones de reordenamiento que encuentre en el archivo.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>k</kbd> (<i><samp>C-c C-k</samp></i>, <samp>with-editor-cancel</samp>)</dt>
<dd>Cancela la sesión de edición actual devolviendo el código de salida 1. Git renuncia a iniciar la secuencia de reordenamiento.</dd>
<dt><kbd>RETURN</kbd> (<i><samp>RET</samp></i>, <samp>git-rebase-show-commit</samp>)</dt>
<dd>Muestra la confirmación en la línea actual en otro búfer y selecciona ese búfer.</dd>
<dt><kbd>SPACE</kbd> (<i><samp>SPC</samp></i>, <samp>git-rebase-show-or-scroll-up</samp>)</dt>
<dd>
Muestra la confirmación en la línea actual en otro búfer sin seleccionarlo. Si el búfer de revisión ya está visible en otra ventana del marco actual, en su lugar desplaza esa
ventana hacia arriba.
</dd>
<dt><kbd>DEL</kbd> (<i><samp>DEL</samp></i>, <samp>git-rebase-show-or-scroll-down</samp>)</dt>
<dd>
Muestra la confirmación en la línea actual en otro búfer sin seleccionarlo. Si el búfer de revisión ya está visible en otra ventana del marco actual, en su lugar desplaza esa
ventana hacia abajo.
</dd>
<dt><kbd>p</kbd> (<i><samp>p</samp></i>, <samp>git-rebase-backward-line</samp>)</dt>
<dd>Se mueve a la línea anterior.</dd>
<dt><kbd>n</kbd> (<i><samp>n</samp></i>, <samp>git-rebase-forward-line</samp>)</dt>
<dd>Se mueve a la siguiente línea.</dd>
<dt><kbd>Alt</kbd>-<kbd>p</kbd> (<i><samp>M-p</samp></i>, <samp>git-rebase-move-line-up</samp>)</dt>
<dd>Mueve la confirmación (o comando) actual hacia arriba</dd>
<dt><kbd>Alt</kbd>-<kbd>n</kbd> (<i><samp>M-n</samp></i>, <samp>git-rebase-move-line-down</samp>)</dt>
<dd>Mueve la confirmación (o comando) actual hacia abajo.</dd>
<dt><kbd>r</kbd> (<i><samp>r</samp></i>, <samp>git-rebase-reword</samp>)</dt>
<dd>Edita el mensaje de confirmación en la línea actual.</dd>
<dt><kbd>e</kbd> (<i><samp>e</samp></i>, <samp>git-rebase-edit</samp>)</dt>
<dd>Se detiene en la confirmación de la línea actual.</dd>
<dt><kbd>s</kbd> (<i><samp>s</samp></i>, <samp>git-rebase-squash</samp>)</dt>
<dd>Une la confirmación de la línea actual con la anterior y edita el mensaje.</dd>
<dt><kbd>f</kbd> (<i><samp>f</samp></i>, <samp>git-rebase-fixup</samp>)</dt>
<dd>Une la confirmación de la línea actual con la confirmación anterior, descartando el mensaje de la confirmación en curso.</dd>
<dt><kbd>k</kbd> (<i><samp>k</samp></i>, <samp>git-rebase-kill-line</samp>)</dt>
<dd>Cancela o finaliza la accion en la línea actual.</dd>
<dt><kbd>c</kbd> (<i><samp>c</samp></i>, <samp>git-rebase-pick</samp>)</dt>
<dd>Usa la confirmación de la línea actual.</dd>
<dt><kbd>x</kbd> (<i><samp>x</samp></i>, <samp>git-rebase-exec</samp>)</dt>
<dd>Inserta un comando shell que se ejecutará después de la confirmación.</dd>
<dd>
Si ya existe una orden de este tipo en la línea actual, edítela en su lugar. Con un argumento prefijo inserta un nuevo comando incluso si ya hay uno en la línea actual. Con una
entrada vacía elimina el comando de la línea actual, si existe.
</dd>
<dt><kbd>b</kbd> (<i><samp>b</samp></i>, <samp>git-rebase-break</samp>)</dt>
<dd>Inserta una acción de interrupción antes de la línea actual, indicando a Git que devuelva el control al Usuario.</dd>
<dt><kbd>y</kbd> (<i><samp>y</samp></i>, <samp>git-rebase-insert</samp>)</dt>
<dd>Lee una confirmación arbitraria y la inserta debajo de la línea actual.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>x</kbd> <kbd>u</kbd> (<i><samp>C-x u</samp></i>, <samp>git-rebase-undo</samp>)</dt>
<dd>Deshace algunos cambios anteriores. Como deshacer pero funciona en buffers de sólo lectura.</dd>
<dt>Opción de Usuario: <samp>git-rebase-auto-advance</samp></dt>
<dd>Define si se pasa a la línea siguiente después de cambiar una línea.</dd>
<dt>Opción de Usuario: <samp>git-rebase-show-instructions</samp></dt>
<dd>Establece si se deben mostrar las instrucciones de uso dentro del buffer de rebase.</dd>
<dt>Opción de Usuario: <samp>git-rebase-confirm-cancel</samp></dt>
<dd>Determina si se requiere confirmación para cancelar.</dd>
<dt></dt>
</dl>
<p>Cuando se realiza una reorganización con la opción <samp>--rebase-merges</samp>, la secuencia incluirá algunos otros tipos de acciones y los siguientes comandos se vuelven relevantes.</p>
<dl>
<dt><kbd>l</kbd> (<i><samp>l</samp></i>, <samp>git-rebase-label</samp>)</dt>
<dd>Este comando inserta una acción de etiqueta o edita la que hay en el punto.</dd>
<dt><kbd>t</kbd> (<i><samp>t</samp></i>, <samp>git-rebase-reset</samp>)</dt>
<dd>Este comando inserta una acción de reinicio o edita la que se encuentra en el punto. El prompt ofrecerá las etiquetas que están actualmente presentes en el buffer.</dd>
<dt><kbd>M</kbd><kbd>M</kbd> (<i><samp>M M</samp></i>, <samp>git-rebase-merge</samp>)</dt>
<dd>
El comando inserta una acción de fusión o edita la que se encuentra en el punto. El prompt ofrecerá las etiquetas que están actualmente presentes en el buffer. No se admite la
especificación de un mensaje para reutilizar mediante <samp>-c</samp> o <samp>-C</samp>; siempre se invocará a un editor para la fusión.
</dd>
<dt><kbd>M</kbd><kbd>t</kbd> (<i><samp>M t</samp></i>, <samp>git-rebase-merge-toggle-editmsg</samp>)</dt>
<dd>
Este comando alterna entre las opciones <samp>-C</samp> y <samp>-c</samp> de la acción de fusión en el punto. Ambas opciones especifican una confirmación cuyo mensaje debe ser
reutilizado. La variante con minúsculas indica a Git que invoque al editor al crear la fusión, permitiendo al Usuario editar el mensaje.
</dd>
</dl>
<h3 id="informacion_acerca_de_reordenamiento_en_progreso">Información acerca de Reordenamiento en progreso<a href="#informacion_acerca_de_reordenamiento_en_progreso"></a></h3>
<p>
Mientras una secuencia de reorganización (rebase) se está llevando a cabo, el búfer de estado presenta una sección que lista las confirmaciones que ya se han aplicado, así como las
confirmaciones que todavía tienen que aplicarse.
</p>
<p>
Las confirmaciones se dividen en dos mitades. Cuando el rebase se detiene en una confirmación, ya sea porque el Usuario tiene que lidiar con un conflicto o porque solicitó
explícitamente que el reordenamiento se detuviera en esa confirmación, entonces el punto se coloca en la confirmación que separa los dos grupos, es decir, en <samp>HEAD</samp>. Las
confirmaciones por encima de ella aún no se han aplicado, mientras que el <samp>HEAD</samp> y las confirmaciones por debajo de él ya se han aplicado. Entre estos dos grupos de
confirmaciones aplicadas y por aplicar, a veces hay una confirmación que ha sido eliminada.
</p>
<p>Cada confirmación va precedida de una palabra y estas palabras se muestran además en diferentes colores para indicar el estado de las confirmaciones.</p>
<p>Se usan los siguientes colores:</p>
<ul>
<li>Las confirmaciones que usan el mismo color de primer plano que la cara por defecto aún no se han aplicado.</li>
<li>
Las <i>confirmaciones amarillas</i> tienen alguna relación especial con la confirmación en la que se detuvo el rebase. Esto se usa para las palabras "join", "goal", "same" y
"work" (ver más abajo).
</li>
<li>Las <i>confirmaciones grises</i> ya se han aplicado.</li>
<li>La confirmación azul es la confirmación <samp>HEAD</samp>.</li>
<li>
La <i>confirmación verde</i> es la confirmación en la que se detuvo la secuencia rebase. Si se trata de la misma confirmación que <samp>HEAD</samp> (por ejemplo, porque aún no ha
hecho nada después de que el reordenamiento se detuviera en la confirmación, entonces esta confirmación se muestra en azul, no en verde). Sólo puede haber una confirmación verde
<b>y</b> una azul al mismo tiempo, si crea una o más confirmaciones nuevas después de que rebase se detenga en una confirmación.
</li>
<li>Las <i>confirmaciones rojas</i> se han eliminado. Se muestran sólo como referencia, por ejemplo, para facilitar la diferenciación.</li>
</ul>
<p>Por supuesto, estos colores están sujetos al tema cromático en uso.</p>
<p>Se usan las siguientes palabras:</p>
<ul>
<li>
Las confirmaciones prefijadas con <samp>pick</samp>, <samp>reword</samp>, <samp>edit</samp>, <samp>squash</samp> y <samp>fixup</samp> aún no se han aplicado. Estas palabras tienen el mismo
significado aquí que en el buffer usado para editar la secuencia de reordenamiento. Consulte <a href="#secuencias_de_edicion_de_reordenamiento" onclick="c('secuencias_de_edicion_de_reordenamiento')">Secuencias de Edición de Reordenamiento</a>. Cuando se especifica la opción
<samp>--rebase-merges</samp>, también pueden aparecer las líneas <samp>reset</samp>, <samp>label</samp> y <samp>merge</samp>.
</li>
<li>
Las confirmaciones prefijadas con <samp>done</samp> y <samp>onto</samp> ya han sido aplicadas. Es posible que dicha confirmación sea el <samp>HEAD</samp>, en cuyo caso es azul. En otro caso
es gris.
<ul>
<li>La confirmación con el prefijo <samp>onto</samp> es la confirmación sobre la que se están re-aplicando todas las demás confirmaciones. Esta confirmación en sí no tuvo que ser
re-aplicada, es la confirmación a la que el reordenamiento retrocedió antes de empezar a re-aplicar otras confirmaciones.
</li>
<li>
Las confirmaciones con el prefijo <samp>done</samp> ya han sido re-aplicadas. Esto incluye las confirmaciones que se han vuelto a aplicar, pero también las nuevas
confirmaciones que se han creado durante el reordenamiento.
</li>
</ul>
<li>
Todas las demás confirmaciones, las que no llevan el prefijo de ninguna de las palabras anteriores, están relacionadas de algún modo con la confirmación en la que se detuvo
el reordenamiento.<br>
Para determinar si se está ante una confirmación relacionada con la confirmación detenida, se comparan sus hashes, árboles (trees) y patch-ids <sup>1</sup>. El mensaje de
confirmación no se utiliza para este propósito.<br>
En general, las confirmaciones que están relacionadas con la confirmación detenida pueden tener cualquiera de los colores usados, aunque no todas las combinaciones de
color/palabra son posibles.
<div class="info"><p><span>Nota</span></p><p>
<sup>1</sup> El patch-id es un hash de los cambios introducidos por una confirmación. Difiere del hash de la confirmación en sí, que es un hash del resultado de aplicar
ese cambio (es decir, los árboles y blobs resultantes), así como información sobre el Autor y el Autor de la confirmación, el mensaje de confirmación y los hashes de los
padres de la confirmación. Por otro lado, el hash patch-id se crea sólo a partir de las líneas añadidas y eliminadas, incluso los números de línea y los cambios en los
espacios en blanco se ignoran al calcular este hash. Los patch-ids de dos confirmaciones pueden usarse para responder a la pregunta "¿Estas confirmaciones hacen el mismo
cambio?".
</p></div>
</li>
</li>
<ul>
<li>
Las palabras usadas para las confirmaciones detenidas son:
<ul>
<li>
Cuando una confirmación lleva el prefijo <samp>void</samp>, eso indica que Magit sabe con seguridad que todos los cambios de esa confirmación se han aplicado usando varias
confirmaciones nuevas. Esta confirmación ya no es accesible desde <samp>HEAD</samp>, y tampoco es una de las confirmaciones que se aplicarán al reanudar la
sesión.
</li>
<li>Cuando una confirmación lleva el prefijo <samp>join</samp>, indica que la secuencia de reordenamiento se detuvo en esa confirmación debido a un conflicto: ahora hay que
unir (fusionar) los cambios con lo que ya se ha aplicado. En cierto sentido, esta es la confirmación en la que se detuvo el rebase, pero aunque su efecto ya está en
el índice y en el árbol de trabajo (con marcadores de conflicto), la confirmación en sí no se ha aplicado todavía (no es el <samp>HEAD</samp>). Así que se muestra en
amarillo, como las otras confirmaciones que todavía tienen que aplicarse.
</li>
<li>
Cuando una confirmación lleva el prefijo <samp>stop</samp> o <samp>same</samp> con los colores <i>azul</i> o <i>verde</i>, eso indica que el reordenamiento se detuvo en esa
confirmación, que aún se aplica o se ha vuelto a aplicar, y que al menos su patch-id no ha cambiado.
<ul>
<li>
Cuando una confirmación tiene el prefijo <samp>stop</samp>, indica que rebase se detuvo en esa confirmación porque usted lo solicitó antes, y su patch-id no ha
cambiado. Incluso podría ser exactamente la misma confirmación.
</li>
<li>
Cuando una confirmación tiene el prefijo <samp>same</samp> <i>azul</i> o <i>verde</i>, indica que su árbol o hash ha cambiado, pero no su patch-id. Si es azul,
entonces es la confirmación <samp>HEAD</samp> (como siempre para el azul). Cuando es verde, entonces ya no es <samp>HEAD</samp> porque se han creado otras
confirmaciones desde entonces (pero antes de continuar el reordenamiento).
</li>
</ul>
</li>
<li>
Cuando una confirmación tiene el prefijo <samp>goal</samp>, <samp>same</samp> en <i>amarillo</i>, o <samp>work</samp>, eso indica que el reordenamiento aplicó esa confirmación
pero que luego reseteó <samp>HEAD</samp> a una confirmación anterior (probablemente para dividirla en múltiples confirmaciones), y que quedan algunos cambios sin
confirmar que probablemente (pero no necesariamente) se originan en esa confirmación.
<ul>
<li>
Cuando una confirmación lleva el prefijo <samp>goal</samp>, indica que todavía es posible crear una nueva confirmación con exactamente el mismo árbol (el "goal")
sin editar manualmente ningún fichero, confirmando el índice, o almacenando todos los cambios y confirmándolos. Este es el caso cuando el árbol original
todavía existe en el índice o el árbol de trabajo está intacto.
</li>
<li>
Cuando el prefijo <samp>same</samp> de una confirmación es <i>amarillo</i>, indica que ya no es posible crear una confirmación con exactamente el mismo árbol, pero
que todavía es posible crear una confirmación con el mismo parche-id. Este sería el caso si se creara una nueva confirmación con otros cambios, pero los
cambios de la confirmación original aún existen en el índice o árbol de trabajo sin alterar.
</li>
<li>
Cuando una confirmación lleva el prefijo <samp>work</samp>, indica que se ha restablecido <samp>HEAD</samp> a una confirmación anterior, y que hay algunos cambios
preparados y/o sin preparar (probablemente, pero no necesariamente) originados a partir de esa confirmación. Sin embargo, ya no es posible crear una nueva
confirmación con el mismo árbol o, al menos, con el mismo patch-id, porque ya se han realizado otros cambios.
</li>
</ul>
</li>
<li>
Cuando una confirmación tiene el prefijo <samp>poof</samp> o <samp>gone</samp>, eso indica que el reordenamiento aplicó esa confirmación pero que luego reseteó <samp>HEAD</samp>
a una confirmación anterior (probablemente para dividirla en múltiples confirmaciones), y que no hay cambios no comprometidos.
<ul>
<li>
Cuando una confirmación lleva el prefijo <samp>puf</samp>, indica que ya no es accesible desde <samp>HEAD</samp>, sino que ha sido reemplazada por una o más
confirmaciones, que juntas tienen exactamente el mismo efecto.
</li>
<li>
Cuando una confirmación lleva el prefijo , indica que ya no es accesible desde <samp>HEAD</samp> y que tampoco podemos determinar si sus cambios siguen
vigentes en uno o más confirmaciones nuevas. Puede ser, pero si es así, entonces también debe haber otros cambios que hacen que sea imposible saberlo con
certeza.
</li>
</ul>
</li>
</ul>
</li>
</ul>
</ul>
<p>No se preocupe si no entiende todo lo anterior. No pasa nada, adquirirá una comprensión lo suficientemente buena con la práctica.</p>
<p>
Para otras operaciones de secuencias como "cherry-picking", se muestra una sección similar, pero carecen de algunas de las características descritas anteriormente, debido a
limitaciones en los comandos git usados para implementarlas. Lo más importante es que estas secuencias sólo soportan "elegir" una confirmación, pero no otras acciones como
"reescribir", y no hacen un seguimiento de las confirmaciones que ya se han aplicado.
</p>
<h2 id="cherry_picking">Cherry Picking<a href="#cherry_picking"></a></h2>
<p>Vea también <a href="http://git-scm.com/docs/git-cherry-pick" target="new">git-cherry-pick</a></p>
<dl>
<dt><kbd>A</kbd> (<i><samp>A</samp></i>, <samp>magit-cherry-pick</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
</dl>
<p>Cuando no se está realizando ningún cherry-pick o revert, el transitorio presenta los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>A</kbd><kbd>A</kbd> (<i><samp>A A</samp></i>, <samp>magit-cherry-copy</samp>)</dt>
<dd>
Este comando copia COMMITS (confirmaciones) de otra rama a la rama actual. Si la región selecciona varias confirmaciones, éstas se copian sin preguntar. En caso contrario, se
pregunta al Usuario por una confirmación o rango, por defecto la confirmación en el punto.
</dd>
<dt><kbd>A</kbd><kbd>a</kbd> (<i><samp>A a</samp></i>, <samp>magit-cherry-apply</samp>)</dt>
<dd>
Este comando aplica los cambios en las confirmaciones de otra rama a la rama actual. Si la región selecciona múltiples confirmaciones, entonces se usan esas, sin preguntar. En
caso contrario, se pregunta al Usuario por una confirmación o rango, usando por defecto la confirmación en el punto.
</dd>
<dd>Este comando también tiene un enlace de nivel superior, que puede invocarse sin usar el transitorio escribiendo <samp>a</samp> en el nivel superior.</dd>
</dl>
<p>
Los siguientes comandos no sólo aplican algunas confirmaciones a una rama, sino que también las eliminan de otra rama. La eliminación se realiza usando <samp>git-update-ref</samp> o, si
es necesario, <samp>git-rebase</samp>. Tanto aplicar confirmaciones como eliminarlas usando git-rebase puede llevar a conflictos. Si esto ocurre, entonces estos comandos se abortan y no
sólo tendrá que resolver los conflictos, sino también terminar el proceso de la misma manera que lo haría si estos comandos no existieran en absoluto.
</p>
<dl>
<dt><kbd>A</kbd><kbd>h</kbd> (<i><samp>A h</samp></i>, <samp>magit-cherry-harvet</samp>)</dt>
<dd>
Este comando mueve los COMMITS (confirmaciones) seleccionados que deben estar ubicados en otra BRANCH (rama) a la rama actual en su lugar, eliminándolos de la primera. Cuando
este comando tiene éxito, la rama actual es la misma que antes.
</dd>
<dd>
Aplicar las confirmaciones en la rama actual o eliminarlas de la otra rama puede provocar conflictos. Cuando esto ocurre, este comando se detiene y debe resolver los conflictos y
finalizar el proceso manualmente.
</dd>
<dt><kbd>A</kbd><kbd>d</kbd> (<i><samp>A d</samp></i>, <samp>magit-cherry-donate</samp>)</dt>
<dd>
Este comando mueve los COMMITS (confirmaciones) seleccionados de la rama actual a otra BRANCH (rama) existente, eliminándolos de la primera. Cuando este comando tiene éxito,
entonces la misma rama es actual como antes. Se permite que <samp>HEAD</samp> se desprenda inicialmente.
</dd>
<dd>
Aplicar las confirmaciones en la otra rama o eliminarlas de la rama actual puede provocar conflictos. Cuando esto sucede, entonces este comando se detiene y hay que resolver los
conflictos y luego terminar el proceso manualmente.
</dd>
<dt><kbd>A</kbd><kbd>n</kbd> (<i><samp>A n</samp></i>, <samp>magit-cherry-spinout</samp>)</dt>
<dd>
Este comando mueve los COMMITS (confirmaciones) seleccionados de la rama actual a una nueva rama BRANCH, eliminándolos de la anterior. Cuando este comando tiene éxito, la rama
actual es la misma que antes.
</dd>
<dd>
Aplicar las confirmaciones en la otra rama o eliminarlas de la rama actual puede provocar conflictos. Cuando esto sucede, este comando se detiene y debe resolver los conflictos y
finalizar el proceso manualmente.
</dd>
<dt><kbd>A</kbd><kbd>s</kbd> (<i><samp>A s</samp></i>, <samp>magit-cherry-spinoff</samp>)</dt>
<dd>
Este comando mueve los COMMITS (confirmaciones) seleccionados de la rama actual a una nueva rama BRANCH, eliminándolos de la primera. Cuando este comando tiene éxito, la nueva
rama se comprueba.
</dd>
<dd>
Aplicar las confirmaciones en la otra rama o eliminarlas de la rama actual puede provocar conflictos. Cuando esto sucede, este comando se detiene y tiene que resolver los
conflictos y luego terminar el proceso manualmente.
</dd>
</dl>
<p>Cuando se está realizando un cherry-pick o una reversión, el transitorio presenta en su lugar los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>A</kbd><kbd>A</kbd> (<i><samp>A A</samp></i>, <samp>magit-sequence-continue</samp>)</dt>
<dd>Reanuda la secuencia actual de cherry-pick o la revierte.</dd>
<dt><kbd>A</kbd><kbd>s</kbd> (<i><samp>A s</samp></i>, <samp>magit-sequence-skip</samp>)</dt>
<dd>Omite la parada en la confirmación durante una secuencia cherry-pick o revierte.</dd>
<dt><kbd>A</kbd><kbd>a</kbd> (<i><samp>A a</samp></i>, <samp>magit-sequence-abort</samp>)</dt>
<dd>Aborta la secuencia actual de cherry-pick o la revierte. Esto descarta todos los cambios realizados desde el inicio de la secuencia.</dd>
</dl>
<h3 id="revertir">Revertir<a href="#revertir"></a></h3>
<dl>
<dt><kbd>V</kbd> (<i><samp>V</samp></i>, <samp>magit-revert</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
</dl>
<p>Cuando no se está realizando ningún cherry-pick o revert, el transitorio cuenta con los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>V</kbd><kbd>V</kbd> (<i><samp>V V</samp></i>, <samp>magit-revert-and-commit</samp>)</dt>
<dd>
Revierte una confirmación creando una nueva. Pregunta por una confirmación, por defecto la que está en el punto. Si la región selecciona múltiples confirmaciones, entonces
revierte todas ellas, sin preguntar.
</dd>
<dt><kbd>V</kbd><kbd>v</kbd> (<i><samp>V v</samp></i>, <samp>magit-revert-no-commit</samp>)</dt>
<dd>
Revierte una confirmación aplicándola en sentido inverso al árbol de trabajo. Pregunta por una confirmación, por defecto la que está en el punto. Si la región selecciona múltiples
confirmaciones, entonces revierte todas ellas, sin preguntar.
</dd>
</dl>
<p>Cuando se está llevando a cabo un cherry-pick o una reversión, en su lugar el transitorio presenta los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>V</kbd><kbd>A</kbd> (<i><samp>V A</samp></i>, <samp>magit-sequence-continue</samp>)</dt>
<dd>Reanuda el actual cherry-pick o revierte la secuencia.</dd>
<dt><kbd>V</kbd><kbd>s</kbd> (<i><samp>V s</samp></i>, <samp>magit-sequence-skip</samp>)</dt>
<dd>Omite la parada en la confirmación durante un cherry-pick o revierte la secuencia.</dd>
<dt><kbd>V</kbd><kbd>a</kbd> (<i><samp>V a</samp></i>, <samp>magit-sequence-abort</samp>)</dt>
<dd>Aborta el cherry-pick en curso o revierte la secuencia actual. Esto descarta todos los cambios realizados desde el inicio de la secuencia.</dd>
</dl>
<h2 id="reinicio">Reinicio<a href="#reinicio"></a></h2>
<p>También vea la <a href="http://git-scm.com/docs/git-reset" target="new">página de manual</a> de git.</p>
<dl>
<dt><kbd>x</kbd> (<i><samp>x</samp></i>, <samp>magit-reset-quickly</samp>)</dt>
<dd>
Restablece el <samp>HEAD</samp> y el índice a alguna confirmación leída del Usuario y por defecto a la confirmación en el punto, y posiblemente también restablece el árbol de
trabajo. Con un argumento prefijo reinicia el árbol de trabajo, de lo contrario no lo haga.
</dd>
<dt><kbd>X</kbd><kbd>m</kbd> (<i><samp>X m</samp></i>, <samp>magit-reset-mixed</samp>)</dt>
<dd>
Restaura el <samp>HEAD</samp> y el índice a alguna confirmación leída del Usuario y por defecto a la confirmación en el punto. El árbol de trabajo se mantiene como está.
</dd>
<dt><kbd>X</kbd><kbd>s</kbd> (<i><samp>X s</samp></i>, <samp>magit-reset-soft</samp>)</dt>
<dd>Restablece el <samp>HEAD</samp> a alguna confirmación leída del Usuario y por defecto a la confirmación en el punto. El índice y el árbol de trabajo se mantienen tal cual.</dd>
<dt><kbd>X</kbd><kbd>h</kbd> (<i><samp>X h</samp></i>, <samp>magit-reset-hard</samp>)</dt>
<dd>Restaura el <samp>HEAD</samp>, el índice y el árbol de trabajo a alguna confirmación leída por el Usuario y por defecto a la confirmación en el punto.</dd>
<dt><kbd>X</kbd><kbd>k</kbd> (<i><samp>X k</samp></i>, <samp>magit-reset-keep</samp>)</dt>
<dd>
Restablece el <samp>HEAD</samp>, el índice y el árbol de trabajo a alguna confirmación leída del Usuario y por defecto a la confirmación en el punto. Los cambios no confirmados se
mantienen tal cual.
</dd>
<dt><kbd>X</kbd><kbd>i</kbd> (<i><samp>X i</samp></i>, <samp>magit-reset-index</samp>)</dt>
<dd>
Restaura el índice a alguna confirmación leída por el Usuario y por defecto a la confirmación en el punto. Mantener el <samp>HEAD</samp> y el árbol de trabajo como están, así que si
la confirmación se refiere al <samp>HEAD</samp>, entonces esto efectivamente deshace todos los cambios.
</dd>
<dt><kbd>X</kbd><kbd>w</kbd> (<i><samp>X w</samp></i>, <samp>magit-reset-worktree</samp>)</dt>
<dd>Restablece el árbol de trabajo a alguna confirmación leída del Usuario y por defecto a la confirmación en el punto. Mantenga el <samp>HEAD</samp> y el índice como están.</dd>
<dt><kbd>X</kbd><kbd>f</kbd> (<i><samp>X f</samp></i>, )</dt>
<dd>Actualiza el fichero en el árbol de trabajo y el índice al contenido desde una revisión. Tanto la revisión como el fichero se leen desde el Usuario.</dd>
</dl>
<h2 id="stashing">Stashing<a href="#stashing"></a></h2>
<p>Sería útil consultar también la <a href="http://git-scm.com/docs/git-stash" target="new">pagina de manual</a> de git al respecto.</p>
<dl>
<dt><kbd>z</kbd> (<i><samp>z</samp></i>, <samp>magit-stash</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dt><kbd>z</kbd><kbd>z</kbd> (<i><samp>z z</samp></i>, <samp>magit-stash-both</samp>)</dt>
<dd>
Crea un stash del índice y del árbol de trabajo (los oculta). Los archivos sin seguimiento se incluyen según los argumentos infix. Un argumento prefijo equivale a
<samp>--include-untracked</samp> mientras que dos argumentos prefijo equivalen a <samp>--all</samp>.
</dd>
<dt><kbd>z</kbd><kbd>i</kbd> (<i><samp>z i</samp></i>, <samp>magit-stash-index</samp>)</dt>
<dd>Crea un stash sólo del índice. Los cambios no organizados y no rastreados no se almacenan.</dd>
<dt><kbd>z</kbd><kbd>w</kbd> (<i><samp>z w</samp></i>, <samp>magit-stash-worktree</samp>)</dt>
<dd>
Crea un alijo de cambios sin preparar en el árbol de trabajo. Los ficheros sin seguimiento se incluyen según los argumentos infix. Un argumento prefijo equivale a
<samp>--include-untracked</samp> mientras que dos argumentos prefijo equivalen a <samp>--all</samp>.
</dd>
<dt><kbd>z</kbd><kbd>x</kbd> (<i><samp>z x</samp></i>, <samp>magit-stash-keep-index</samp>)</dt>
<dd>
Crea un stash del índice y del árbol de trabajo, manteniendo intacto el índice. Los archivos sin seguimiento se incluyen según los argumentos de infijo. Un argumento prefijo
equivale a <samp>--include-untracked</samp> mientras que dos argumentos prefijo equivalen a <samp>--all</samp>.
</dd>
<dt><kbd>z</kbd><kbd>Z</kbd> (<i><samp>z Z</samp></i>, <samp>magit-snapshot-both</samp>)</dt>
<dd>
Crea una instantánea del índice y del árbol de trabajo. Los archivos sin seguimiento se incluyen según los argumentos infijos. Un argumento prefijo equivale a
<samp>--include-untracked</samp> mientras que dos argumentos prefijo equivalen a <samp>--all</samp>.
</dd>
<dt><kbd>z</kbd><kbd>I</kbd> (<i><samp>z I</samp></i>, <samp>magit-snapshot-index</samp>)</dt>
<dd>Crea una instantánea sólo del índice. Los cambios no almacenados y no rastreados no se almacenan.</dd>
<dt><kbd>z</kbd><kbd>W</kbd> (<i><samp>z W</samp></i>, <samp>magit-snapshot-worktree</samp>)</dt>
<dd>
Crea una instantánea de los cambios no rastreados en el árbol de trabajo. Los archivos sin seguimiento se incluyen según los argumentos infijos. Un argumento prefijo equivale a
<samp>--include-untracked</samp> mientras que dos argumentos prefijo equivalen a <samp>--all</samp>.
</dd>
<dt><kbd>z</kbd><kbd>a</kbd> (<i><samp>z a</samp></i>, <samp>magit-stash-apply</samp>)</dt>
<dd>Aplica un stash al árbol de trabajo. Intenta preservar el índice del stash. Si eso falla porque hay cambios por etapas, aplica sin preservar el índice stash.</dd>
<dt><kbd>z</kbd><kbd>p</kbd> (<i><samp>z p</samp></i>, <samp>magit-stash-pop</samp>)</dt>
<dd>
Aplica un stash al árbol de trabajo y lo elimina de la lista de stash. Intenta conservar el índice del stash. Si esto falla porque hay cambios por etapas, aplica sin mantener el
índice stash y no elimina el stash.
</dd>
<dt><kbd>z</kbd><kbd>k</kbd> (<i><samp>z k</samp></i>, <samp>magit-stash-drop</samp>)</dt>
<dd>Elimina un stash de la lista de stash. Cuando la región está activa, ofrece soltar todos los stash contenidos.</dd>
<dt><kbd>z</kbd><kbd>v</kbd> (<i><samp>z v</samp></i>, <samp>magit-stash-show</samp>)</dt>
<dd>Muestra todos los diffs de un stash en un buffer.</dd>
<dt><kbd>z</kbd><kbd>b</kbd> (<i><samp>z b</samp></i>, <samp>magit-stash-branch</samp>)</dt>
<dd>Crea y extrae una nueva rama de un stash existente. La nueva rama comienza en la confirmación que estaba vigente cuando se creó el stash.</dd>
<dt><kbd>z</kbd><kbd>B</kbd> (<i><samp>z B</samp></i>, <samp>magit-stash-branch-here</samp>)</dt>
<dd>
Crea y comprueba una nueva rama a partir de un stash existente. Usa la rama actual o <samp>HEAD</samp> como punto de partida de la nueva rama. A continuación, aplicar el stash,
dejándolo caer si se aplica limpiamente.
</dd>
<dt><kbd>z</kbd><kbd>f</kbd> (<i><samp>z f</samp></i>, <samp>magit-stash-format-patch</samp>)</dt>
<dd>Crea un parche a partir de STASH.</dd>
<dt><kbd>k</kbd> (<i><samp>k</samp></i>, <samp>magit-stash-clear</samp>)</dt>
<dd>Elimina todos los stashes guardados en el reflog de REF borrando REF.</dd>
<dt><kbd>z</kbd><kbd>l</kbd> (<i><samp>z l</samp></i>, <samp>magit-stash-alist</samp>)</dt>
<dd>Lista todos los stashes de un buffer.</dd>
<dt>Opción de Usuario: <samp>magit-stashes-margin</samp></dt>
<dd>Esta opción especifica si el margen se muestra inicialmente en los buffers de stashes y cómo se formatea.</dd>
<dd>
El valor tiene la forma <samp>(INIT STYLE WIDTH AUTHOR AUTHOR-WIDTH)</samp>.
<ul>
<li>Si INIT no es nulo, entonces el margen se muestra inicialmente.</li>
<li>
STYLE controla el formato de la fecha del autor o del confirmador. Puede ser <samp>age</samp> (para mostrar la edad de la confirmación), <samp>age-abbreviated</samp> (para
abreviar la unidad de tiempo a un carácter), o una cadena (adecuada para <samp>format-time-string</samp>) para mostrar la fecha real. La opción
<samp>magit-log-margin-show-committer-date</samp> controla qué fecha se muestra.
</li>
<li>WIDTH controla la anchura del margen. Esto existe por compatibilidad futura y actualmente el valor no debe cambiarse.</li>
<li>AUTHOR controla si el nombre del autor también se muestra por defecto.</li>
<li>AUTHOR-WIDTH debe ser un número entero. Cuando se muestra el nombre del autor, esto especifica cuánto espacio se usa para hacerlo.</li>
</ul>
</dd>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_inspeccion" title="Inspección">Anterior</label><label class="btn next" accesskey="n" for="_transferencia" title="Transferencia">Siguiente</label></div>
<div class="page" rel="transferencia"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Transferencia</li></ul><hr></div>
<h1 id="transferencia">Transferencia<a href="#transferencia"></a></h1>
<h2 id="remotos">Remotos<a href="#remotos"></a></h2>
<h3 id="comandos_remotos">Comandos Remotos<a href="#comandos_remotos"></a></h3>
<p>
El comando de prefijo transitorio <samp>magit-remote</samp> se usa para añadir remotas y hacer cambios en remotas existentes. Esta orden sólo se ocupa de las remotas en sí, no de las
ramas ni de la transferencia de confirmaciones. Estas funciones están disponibles en otras órdenes transitorias.
</p>
<p>Vea la <a href="http://git-scm.com/docs/git-remote" target="new">página de manual</a> de git.</p>
<dl>
<dt><kbd>M</kbd> (<i><samp>M</samp></i>, <samp>magit-remote</samp>)</dt>
<dd>Este comando de prefijo transitorio vincula los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoque un sufijo.</dd>
<dd>Por defecto, también enlaza y muestra los valores de algunas variables Git relacionadas con el remoto y permite cambiar sus valores.</dd>
<dt>Opción de Usuario: <samp>magit-remote-direct-configure</samp></dt>
<dd>Esta opción controla si las variables Git relacionadas con el remoto son accesibles directamente desde el transitorio <samp>magit-remote</samp>.</dd>
<dd>
Si <samp>t</samp> (el valor por defecto) y una rama local se descarga, entonces <samp>magit-remote</samp> presenta las variables para la remota ascendente de esa rama, o si <samp>HEAD</samp>
se descarga, para origen, siempre que exista.
</dd>
<dd>Si es <samp>nil</samp>, hay que usar <samp>magit-remote-configure</samp> para hacerlo.</dd>
<dt><kbd>M</kbd><kbd>C</kbd> (<i><samp>M C</samp></i>, <samp>magit-remote-configure</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula comandos que establecen el valor de variables relacionadas con remotas y las muestra en un búfer temporal hasta que se sale del
transitorio.
</dd>
<dd>Con un argumento de prefijo, este comando siempre solicita un remoto.</dd>
<dd>
Sin un argumento de prefijo, depende de si se invocó como sufijo de <samp>magit-remote</samp> y de la opción <samp>magit-remote-direct-configure</samp>. Si <samp>magit-remote</samp> ya
muestra las variables para el ascendente, no tiene sentido invocar otro transitorio que las muestre para el mismo remoto. En ese caso, este comando solicita una remota.
</dd>
</dl>
<p>Las variables se describen en <a href="#variables_git_remotas" onclick="c('variables_git_remotas')">Variables Git remotas.</a></p>
<dl>
<dt><kbd>M</kbd><kbd>a</kbd> (<i><samp>M a</samp></i>, <samp>magit-remote-add</samp>)</dt>
<dd>Este comando añade un repositorio remoto y obtiene toda la información que está en él (git fetch). El nombre remoto y la url se leen en el minibuffer.</dd>
<dt><kbd>M</kbd><kbd>r</kbd> (<i><samp>M r</samp></i>, <samp>magit-remote-rename</samp>)</dt>
<dd>Este comando cambia el nombre de una rama remota. Tanto el nombre antiguo como el nuevo se leen en el minibuffer.</dd>
<dt><kbd>M</kbd><kbd>u</kbd> (<i><samp>M u</samp></i>, <samp>magit-remote-set-url</samp>)</dt>
<dd>Este comando cambia la url de una rama remota. Tanto la remota como la nueva url se leen en el minibuffer.</dd>
<dt><kbd>M</kbd><kbd>k</kbd> (<i><samp>M k</samp></i>, <samp>magit-remote-remove</samp>)</dt>
<dd>Este comando borra un repositorio remoto, leído en el minibuffer.</dd>
<dt><kbd>M</kbd><kbd>p</kbd> (<i><samp>M p</samp></i>, <samp>magit-remote-prune</samp>)</dt>
<dd>Este comando elimina ramas de seguimiento remoto obsoletas para una lectura remota en el minibuffer.</dd>
<dt><kbd>M</kbd><kbd>P</kbd> (<i><samp>M P</samp></i>, <samp>magit-remote-prune-refspecs</samp>)</dt>
<dd>Esta orden elimina las refspecs obsoletas para una lectura remota en el minibuffer.</dd>
<dd>
Una refspec está obsoleta si ya no existe al menos una rama en el remoto que sería obtenida debido a esa refspec. Una refspec obsoleta es problemática porque su existencia
provoca que Git se niegue a realizar la búsqueda de acuerdo con las refspecs obsoletas restantes.
</dd>
<dd>
Si sólo quedan refspecs obsoletos, este comando ofrece eliminar el remoto o sustituir los refspecs obsoletos por el refspec por defecto ("+refs/heads/*:refs/remotes/REMOTE/*").
</dd>
<dd>Este comando también elimina las ramas de seguimiento remoto que se crearon debido a las refspecs ahora obsoletas. Las demás ramas obsoletas no se eliminan.</dd>
<dt>Opción de Usuario: <samp>magit-remote-add-set-remote.pushDefault</samp></dt>
<dd>Esta opción controla si se pregunta al Usuario sobre si quiere establecer <samp>remote.pushDefault</samp> después de añadir un control remoto.</dd>
<dd>
Si es <samp>ask</samp>, siempre se pregunta al Usuario. Si <samp>ask-if-unset</samp>, sólo se pregunta al Usuario si la variable no está ya establecida. Si es <samp>nil</samp>, no se
pregunta al Usuario y no se establece la variable. Si el valor es una cadena, la variable se establece sin preguntar, siempre que el nombre del remoto añadido sea igual a esa
cadena y la variable no esté ya establecida.
</dd>
</dl>
<h3 id="variables_git_remotas">Variables Git remotas<a href="#variables_git_remotas"></a></h3>
<p>
Estas variables pueden establecerse desde el comando de prefijo transitorio <samp>magit-remote-configure</samp>. Por defecto, también se pueden configurar desde <samp>magit-remote</samp>.
Ver <a href="#comandos_remotos" onclick="c('comandos_remotos')">Comandos Remotos</a>.
</p>
<dl>
<dt>Variable: <samp>remote.NOMBRE.url</samp></dt>
<dd>Esta variable especifica la url de la remota denominada NOMBRE. Puede tener múltiples valores.</dd>
<dt>Variable: <samp>remote.NAME.fetch</samp></dt>
<dd>La refspec usada cuando se obtiene del nombre remoto NAME. Puede tener varios valores.</dd>
<dt>Variable: <samp>remote.NOMBRE.pushurl</samp></dt>
<dd>
Esta variable especifica la url usada para enviar al remoto llamado NOMBRE. Si no se especifica, se utiliza <samp>remote. NOMBRE.url</samp> en su lugar. Puede tener varios
valores.
</dd>
<dt>Variable: <samp>remote.NOMBRE.push</samp></dt>
<dd>La refspec usada cuando se envía al nombre remoto NOMBRE. Puede tener varios valores.</dd>
<dt>Variable: <samp>remote.NOMBRE.tagOpts</samp></dt>
<dd>
Esta variable especifica qué etiquetas se obtienen por defecto. Si el valor es <samp>--no-tags</samp>, no se obtiene ninguna etiqueta. Si el valor es <samp>--tags</samp>, se obtendrán
todas las etiquetas. Si esta variable no tiene ningún valor, sólo se obtendrán las etiquetas accesibles desde las ramas obtenidas.
</dd>
</dl>
<h2 id="fetching">Fetching<a href="#fetching"></a></h2>
<p>
Consulte también la página de manual de <a href="http://git-scm.com/docs/git-fetch" target="new">git-fetch(1)</a>. Para más información sobre el upstream y el push-remote, vea <a href="#dos_ramas_remotas" onclick="c('dos_ramas_remotas')">Dos ramas remotas</a>.
</p>
<dl>
<dt><kbd>f</kbd> (<i><samp>f</samp></i>, <samp>magit-fetch</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dt><kbd>f</kbd><kbd>p</kbd> (<i><samp>f p</samp></i>, <samp>magit-fetch-from-pushremote</samp>)</dt>
<dd>Este comando obtiene información del push-remote actual.</dd>
<dd>Con un argumento prefijo o cuando el push-remote no está configurado o es inutilizable, entonces deja que el Usuario configure primero el push-remote.</dd>
<dt><kbd>f</kbd><kbd>u</kbd> (<i><samp>f u</samp></i>, <samp>magit-fetch-from-upstream</samp>)</dt>
<dd>Este comando busca en el ascendente (upstream) de la rama actual.</dd>
<dd>
Si el upstream está configurado para la rama actual y nombra un remoto existente, entonces lo utiliza. Si no, intenta usar otro remoto: Si sólo hay configurado un directorio
remoto, se utiliza éste. Si existe un remoto llamado "origen", se usará ese.
</dd>
<dd>Si no se puede determinar ningún remoto, este comando no está disponible desde el prefijo transitorio <samp>magit-fetch</samp> y al invocarlo directamente se produce un error.</dd>
<dt><kbd>f</kbd><kbd>e</kbd> (<i><samp>f e</samp></i>, <samp>magit-fetch-other</samp>)</dt>
<dd>Este comando obtiene información de un repositorio leído desde el minibuffer.</dd>
<dt><kbd>f</kbd><kbd>o</kbd> (<i><samp>f o</samp></i>, <samp>magit-fetch-branch</samp>)</dt>
<dd>Este comando obtiene una rama desde una remota, ambas se leen desde el minibuffer.</dd>
<dt><kbd>f</kbd><kbd>r</kbd> (<i><samp>f r</samp></i>, <samp>magit-fetch-refspec</samp>)</dt>
<dd>Este comando obtiene información de un remoto usando una refspec explícita, ambas leídas del minibuffer.</dd>
<dt><kbd>f</kbd><kbd>a</kbd> (<i><samp>f a</samp></i>, <samp>magit-fetch-all</samp>)</dt>
<dd>Este comando busca en todas los remotos.</dd>
<dt><kbd>f</kbd><kbd>m</kbd> (<i><samp>f m</samp></i>, <samp>magit-submodule-fetch</samp>)</dt>
<dd>Este comando recupera todos los submódulos. Con un prefijo como argumento, obtiene todas los remotos de todos los submódulos.</dd>
<dt>Opción de Usuario: <samp>magit-pull-or-fetch</samp></dt>
<dd>
Por defecto, los comandos fetch y pull están disponibles desde un comando prefijo transient separado. Establecerlo a <samp>t</samp> añade algunos (pero no todos) de los comandos
sufijo anteriores al transient <samp>magit-pull</samp>.
</dd>
<dd>
Si lo hace, es posible que también desee cambiar la vinculación de teclas para estos comandos prefijo, por ejemplo:
<div class="pre"><pre>
(setq magit-pull-or-fetch t)
(define-key magit-mode-map &quot;f&quot; 'magit-pull) ; era magit-fetch
(define-key magit-mode-map &quot;F&quot; nil) ; era magit-pull
</pre></div>
</dd>
</dl>
<h2 id="pulling">Pulling<a href="#pulling"></a></h2>
<p>
Consulta la página de manual de <a href="http://git-scm.com/docs/git-pull" target="new">git-pull(1</a>). Para más información sobre la rama ascendente (upstream) y el push-remote, vea <a href="#dos_ramas_remotas" onclick="c('dos_ramas_remotas')">Dos ramas
remotas</a>.
</p>
<dl>
<dt><kbd>F</kbd> (<i><samp>F</samp></i>, <samp>magit-pull</samp>)</dt>
<dd>Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoque un sufijo.</dd>
<dt><kbd>F</kbd><kbd>p</kbd> (<i><samp>F p</samp></i>, <samp>magit-pull-from-pushremote</samp>)</dt>
<dd>Este comando obtiene información del push-remote de la rama actual.</dd>
<dd>Con un argumento prefijo o cuando el push-remote no está configurado o no se puede usar, entonces deja que el Usuario configure primero el push-remote.</dd>
<dt><kbd>F</kbd><kbd>u</kbd> (<i><samp>F u</samp></i>, <samp>magit-pull-from-upstream</samp>)</dt>
<dd>Este comando extrae de la rama ascendente (upstream) de la rama actual.</dd>
<dd>Con un argumento prefijo o cuando el upstream no está configurado o no es utilizable, entonces deja que el Usuario configure primero el upstream.</dd>
<dt><kbd>F</kbd><kbd>e</kbd> (<i><samp>F e</samp></i>, <samp>magit-pull-branch</samp>)</dt>
<dd>Este comando obtiene información de una rama leída en el minibuffer.</dd>
</dl>
<h2 id="pushing">Pushing<a href="#pushing"></a></h2>
<p>
Consulte también la página de manual de <a href="http://git-scm.com/docs/git-push" target="new">git-push(1)</a>. Para más información sobre la rama ascedente (upstream) y el push-remote, vea <a href="#@GENDOC:dos_ramas_remotos@" onclick="c('@GENDOC:dos_ramas_remotos@')">Dos
ramas remotos</a>.
</p>
<dl>
<dt><kbd>P</kbd> (<i><samp>P</samp></i>, <samp>magit-push</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dt><kbd>P</kbd><kbd>p</kbd> (<i><samp>P p</samp></i>, <samp>magit-push-current-to-pushremote</samp>)</dt>
<dd>Este comando empuja la rama actual a su push-remote.</dd>
<dd>Con un argumento prefijo o cuando el push-remote no está configurado o es inutilizable, entonces deja que el Usuario configure primero el push-remote.</dd>
<dt><kbd>P</kbd><kbd>u</kbd> (<i><samp>P u</samp></i>, <samp>magit-push-current-to-stream</samp>)</dt>
<dd>Este comando empuja la rama actual a su rama upstream.</dd>
<dd>Con un argumento prefijo o cuando la rama ascendente no está configurada o no se puede utilizar, entonces deja que el Usuario configure primero la rama ascendente.</dd>
<dt><kbd>P</kbd><kbd>e</kbd> (<i><samp>P e</samp></i>, <samp>magit-push-current</samp>)</dt>
<dd>Este comando empuja la rama actual a una rama leída en el minibuffer.</dd>
<dt><kbd>P</kbd><kbd>o</kbd> (<i><samp>P o</samp></i>, <samp>magit-push-other</samp>)</dt>
<dd>Este comando empuja una rama arbitraria o una confirmación a algún lugar. Tanto el origen como el destino se leen en el minibuffer.</dd>
<dt><kbd>P</kbd><kbd>r</kbd> (<i><samp>P r</samp></i>, <samp>magit-push-refspecs</samp>)</dt>
<dd>Este comando envía una o varias refspecs a una remota, que se leen en el minibuffer.</dd>
<dd>Para utilizar varias refspecs, sepárelas con comas. La finalización sólo está disponible para la parte anterior a los dos puntos, o cuando no se usan dos puntos.</dd>
<dt><kbd>P</kbd><kbd>m</kbd> (<i><samp>P m</samp></i>, <samp>magit-push-matching</samp>)</dt>
<dd>Este comando empuja todas las ramas coincidentes a otro repositorio.</dd>
<dd>
Si sólo existe un repositorio remoto, entonces envíelo a ese repositorio. Si no, pide un repositorio remoto, ofreciendo por defecto el repositorio remoto configurado para la rama
actual.
</dd>
<dt><kbd>P</kbd><kbd>t</kbd> (<i><samp>P t</samp></i>, <samp>magit-push-tagas</samp>)</dt>
<dd>Este comando empuja todas las etiquetas a otro repositorio.</dd>
<dd>
Si sólo existe un repositorio remoto, lo envía a ese repositorio. Si no, pide un repositorio remoto, ofreciendo por defecto el repositorio remoto configurado para la rama actual.
</dd>
<dt><kbd>P</kbd><kbd>T</kbd> (<i><samp>P T</samp></i>, <samp>magit-push-tag</samp>)</dt>
<dd>Este comando empuja una etiqueta a otro repositorio.</dd>
</dl>
<p>
Uno de los argumentos de infijo, <samp>--force-with-lease</samp>, merece una palabra de advertencia. Se pasa sin un valor, lo que significa "permite un push forzado siempre que las ramas
de rastreo remoto coincidan con sus homólogas en el extremo remoto". Si ha configurado una herramienta para realizar búsquedas automáticas (Magit por sí mismo no proporciona tal
funcionalidad), usar <samp>--force-with-lease</samp> puede ser peligroso porque en realidad no controla ni conoce el estado de las referencias de rastreo remoto. En ese caso, se debería
considerar establecer push.useForceIfIncludes a true (disponible desde Git 2.30).
</p>
<p>
Existen dos comandos push más, que por defecto no están disponibles desde el transitorio push. Consulte sus doc-strings para obtener instrucciones sobre cómo añadirlos al transitorio.
</p>
<dl>
<dt>Comando: <samp>magit-push-implicity</samp> <i>argumento</i></dt>
<dd>Este comando empuja a algún sitio sin usar una refspec explícita.</dd>
<dd>
Simplemente ejecuta <samp>git push -v [ARGS]</samp>. ARGS son los argumentos infijos. No se usan argumentos refspec explícitos. En su lugar, el comportamiento depende de al menos
estas variables Git: <samp>push.default</samp>, <samp>remote.pushDefault</samp>, <samp>branch.&lt;branch&gt;.pushRemote</samp>, <samp>branch.&lt;branch&gt;.remote</samp>, <samp>branch.&lt;branch&gt;.merge</samp>, y
<samp>remote.&lt;remote&gt;.push</samp>.
</dd>
<dd>
Si añade este sufijo a un prefijo transitorio sin especificar explícitamente la descripción, se intenta predecir lo que hará este comando. Por ejemplo:
<div class="pre"><pre>
(transient-insert-suffix 'magit-push \&quot;p\&quot;
'(\&quot;i\&quot; magit-push-implicitly))&quot;
</pre></div>
</dd>
<dt>Comando: <samp>magit-push-remote</samp> <i>argumento remoto</i></dt>
<dd>Este comando envía al remoto REMOTE sin usar una refspec explícita. El remoto se lee en el minibuffer.</dd>
<dd>
Este comando simplemente ejecuta <samp>git push -v [ARGS] REMOTE</samp>. ARGS son los argumentos infijos. No se usan argumentos refspec. En su lugar, el comportamiento depende de al
menos estas variables Git: <samp>push.default</samp>, <samp>remote.pushDefault</samp>, <samp>branch.&lt;branch&gt;.pushRemote</samp>, <samp>branch.&lt;branch&gt;.remote</samp>,
<samp>branch.&lt;branch&gt;.merge</samp>, y <samp>remote.&lt;remote&gt;.push</samp>.
</dd>
</dl>
<h2 id="parches_planos">Parches Planos<a href="#parches_planos"></a></h2>
<dl>
<dt><kbd>W</kbd> (<i><samp>W</samp></i>, <samp>magit-patch</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dt><kbd>W</kbd><kbd>c</kbd> (<i><samp>W c</samp></i>, <samp>magit-patch-create</samp>)</dt>
<dd>
Este comando crea parches para un conjunto de confirmaciones (commits). Si la región marca varios commits, entonces crea parches para todos ellos. De lo contrario, funciona como
un comando prefijo transitorio, que cuenta con varios argumentos infijos y se invoca a sí mismo como un comando sufijo. Cuando este comando se invoca como sufijo de sí mismo,
entonces crea un parche usando los argumentos infijos especificados.
</dd>
<dt><kbd>W</kbd><kbd>a</kbd> (<i><samp>W a</samp></i>, <samp>magit-patch-apply</samp>)</dt>
<dd>
Este comando aplica un parche. Se trata de un comando prefijo transitorio, que presenta varios argumentos infijos y se invoca a sí mismo como comando sufijo. Cuando este comando
se invoca como sufijo de sí mismo, entonces aplica un parche usando los argumentos infijos especificados.
</dd>
<dt><kbd>W</kbd><kbd>s</kbd> (<i><samp>W s</samp></i>, <samp>magit-patch-save</samp>)</dt>
<dd>Este comando crea un parche a partir del diff actual.</dd>
<dd>Dentro de los buffers <samp>magit-diff-mode</samp> o <samp>magit-revision-mode</samp>, <samp>C-x C-w</samp> también está ligado a este comando.</dd>
</dl>
<p>También es posible guardar un archivo de parche plano usando <samp>C-x C-w</samp> dentro de un búfer <samp>magit-diff-mode</samp> o <samp>magit-revision-mode</samp>.</p>
<h2 id="parches_de_maildir">Parches de Maildir<a href="#parches_de_maildir"></a></h2>
<p>
Consulte también la página de manual <a href="http://git-scm.com/docs/git-am" target="new">git-am(1)</a> y la página de manual <a href="http://git-scm.com/docs/git-apply" target="new">git-apply(1)</a>.
</p>
<dl>
<dt><kbd>w</kbd> (<i><samp>w</samp></i>, <samp>magit-am</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dt><kbd>w</kbd><kbd>w</kbd> (<i><samp>w w</samp></i>, <samp>magit-am-apply-patches</samp>)</dt>
<dd>
Este comando aplica uno o más parches. Si la región marca archivos, éstos se aplican como parches. De lo contrario, lee un nombre de archivo en el minibuffer, por defecto el
archivo en el punto.
</dd>
<dt><kbd>w</kbd><kbd>m</kbd> (<i><samp>w m</samp></i>, <samp>magit-am-apply-maildir</samp>)</dt>
<dd>Este comando aplica parches desde un maildir.</dd>
<dt><kbd>w</kbd><kbd>a</kbd> (<i><samp>w a</samp></i>, <samp>magit-patch-apply</samp>)</dt>
<dd>
Este comando aplica un parche simple. Para una descripción más detallada, consulte Parches simples. Este comando sólo está disponible desde el transitorio magit-am por razones
históricas.
</dd>
</dl>
<p>Cuando una operación "am" está en curso, el transitorio presenta en su lugar los siguientes comandos de sufijo.</p>
<dl>
<dt><kbd>w</kbd><kbd>w</kbd> (<i><samp>w w</samp></i>, <samp>magit-am-continue</samp>)</dt>
<dd>Este comando reanuda la secuencia actual de aplicación de parches.</dd>
<dt><kbd>w</kbd><kbd>s</kbd> (<i><samp>w s</samp></i>, <samp>magit-am-skip</samp>)</dt>
<dd>Este comando omite la parada en patch durante una secuencia de aplicación de parches.</dd>
<dt><kbd>w</kbd><kbd>a</kbd> (<i><samp>w a</samp></i>, <samp>magit-am-abort</samp>)</dt>
<dd>Este comando aborta la secuencia actual de aplicación de parches. Esto descarta todos los cambios introducidos desde que se inició la secuencia.</dd>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_manipulacion" title="Manipulación">Anterior</label><label class="btn next" accesskey="n" for="_otros" title="Otros">Siguiente</label></div>
<div class="page" rel="otros"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Otros</li></ul><hr></div>
<h1 id="otros">Otros<a href="#otros"></a></h1>
<h2 id="etiquetado">Etiquetado<a href="#etiquetado"></a></h2>
<p>Vea la <a href="http://git-scm.com/docs/git-tag" target="new">página de manual</a> git correspondiente.</p>
<dl>
<dt><kbd>t</kbd> (<i><samp>t</samp></i>, <samp>magit-tag</samp>)</dt>
<dd>
Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se invoque
un sufijo.
</dd>
<dt><kbd>t</kbd><kbd>t</kbd> (<i><samp>t t</samp></i>, <samp>magit-tag-create</samp>)</dt>
<dd>Este comando crea una nueva etiqueta con el NOMBRE dado en REV. Con un argumento prefijo crea una etiqueta anotada.</dd>
<dt><kbd>t</kbd><kbd>r</kbd> (<i><samp>t r</samp></i>, <samp>magit-tag-release</samp>)</dt>
<dd>Este comando crea una etiqueta de lanzamiento. Asume que las etiquetas de versión coinciden con <samp>magit-release-tag-regexp</samp>.</dd>
<dd>
Primero pregunta por el nombre de la nueva etiqueta usando como referencia a la etiqueta con número de versión más alto existente y dejando que el Usuario incremente la parte
deseada de la cadena de versión. Si usa etiquetas de versión o números de versión no convencionales (por ejemplo, <samp>v1.2.3-custom.1</samp>), puede configurar las variables
<samp>magit-release-tag-regexp</samp> y <samp>magit-tag-version-regexp-alist</samp>.
</dd>
<dd>
Si se activa <samp>--annotate</samp>, se solicita el mensaje de la nueva etiqueta. El mensaje de etiqueta propuesto se basa en el mensaje de la etiqueta más alta, siempre que
contenga la cadena de versión correspondiente y sustituyéndola por la cadena de versión nueva. De lo contrario, propone algo como "Foo-Bar 1.2.3", dado, por ejemplo, un TAG
"v1.2.3" y un repositorio ubicado en algo como "/ruta/a/foo-bar".
</dd>
<dt><kbd>t</kbd><kbd>k</kbd> (<i><samp>t k</samp></i>, <samp>magit-tag-delete</samp>)</dt>
<dd>
Este comando borra una o varias etiquetas. Si la región marca varias etiquetas (y nada más), ofrece borrarlas. De lo contrario, solicita que se elimine una sola etiqueta, por
defecto la etiqueta en el punto.
</dd>
<dt><kbd>t</kbd><kbd>p</kbd> (<i><samp>t p</samp></i>, <samp>magit-tag-prune</samp>)</dt>
<dd>Este comando ofrece borrar las etiquetas que faltan localmente desde REMOTE, y viceversa.</dd>
</dl>
<h2 id="notas">Notas<a href="#notas"></a></h2>
<p>Vea la <a href="http://git-scm.com/docs/git-notes" target="new">página de manual</a> de git correspondiente.</p>
<dl>
<dt><kbd>T</kbd> (<i><samp>T</samp></i>, <samp>magit-notes</samp>)</dt>
<dd>
Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se invoque
un sufijo.
</dd>
<dt><kbd>T</kbd><kbd>T</kbd> (<i><samp>T T</samp></i>, <samp>magit-notes-edit</samp>)</dt>
<dd>Edita la nota adjunta a una confirmación, por defecto a la confirmación en el punto.</dd>
<dd>Por defecto usa el valor de la variable Git <samp>core.notesRef</samp> o "refs/notes/commits" si no está definida.</dd>
<dt><kbd>T</kbd><kbd>r</kbd> (<i><samp>T r</samp></i>, <samp>magit-notes-remove</samp>)</dt>
<dd>Elimina la nota adjunta a una confirmación, usando por defecto la confirmación en el punto.</dd>
<dd>Por defecto usa el valor de la variable Git <samp>core.notesRef</samp> o "refs/notes/commits" si no está definida.</dd>
<dt><kbd>T</kbd><kbd>p</kbd> (<i><samp>T p</samp></i>, <samp>magit-notes-prune</samp>)</dt>
<dd>Elimina las notas sobre confirmaciones inaccesibles.</dd>
</dl>
<p>Es posible fusionar una referencia de nota con otra. Esto puede dar lugar a conflictos que deben resolverse en el árbol de trabajo temporal ".git/NOTES_<i>MERGE_WORKTREE</i>".</p>
<dl>
<dt><kbd>T</kbd><kbd>m</kbd> (<i><samp>T m</samp></i>, <samp>magit-notes-merge</samp>)</dt>
<dd>
Fusiona las notas de una ref leída del Usuario en la ref de notas actual. La referencia de notas actual es el valor de la variable Git <samp>core.notesRef</samp> o
"refs/notes/commits" si no está definida.
</dd>
</dl>
<p>Cuando una fusión de notas está en curso, el transitorio presenta los siguientes comandos de sufijo, en lugar de los enumerados anteriormente.</p>
<dl>
<dt><kbd>T</kbd><kbd>c</kbd> (<i><samp>T c</samp></i>, <samp>magit-notes-merge-commit</samp>)</dt>
<dd>Confirma la fusión de las notas actuales, después de resolver manualmente los conflictos.</dd>
<dt><kbd>T</kbd><kbd>a</kbd> (<i><samp>T a</samp></i>, <samp>magit-notes-merge-abort</samp>)</dt>
<dd>Abortar la fusión de notas actual.</dd>
</dl>
<p>
Las siguientes variables controlan qué notas de referencia <samp>magit-notes-*</samp>, <samp>git notes</samp> y <samp>git show</samp> actúan y muestran. Tanto los valores locales como los
globales se muestran y pueden modificarse.
</p>
<dl>
<dt>Variable: <samp>core.notesRef</samp></dt>
<dd>Esta variable especifica la ref de notas que se muestra por defecto y sobre la que actúan los comandos por defecto.</dd>
<dt>Variable: <samp>notes.displayRef</samp></dt>
<dd>
Esta variable especifica la referencia de notas adicional que se mostrará además de la especificada por <samp>core.notesRef</samp>. Puede tener múltiples valores y puede terminar con
<samp>*</samp> para mostrar todas las refs en el espacio de nombres <samp>refs/notes/</samp> (o <samp>**</samp> si algunos nombres contienen barras inclinadas).
</dd>
</dl>
<h2 id="submodulos">Submodulos<a href="#submodulos"></a></h2>
<p>Vea la <a href="http://git-scm.com/docs/git-submodule" target="new">página de manual</a> de git correspondiente.</p>
<h3 id="listado_de_submodulos">Listado de submódulos<a href="#listado_de_submodulos"></a></h3>
<p>
La orden <samp>magit-list-submodules</samp> muestra una lista de los submódulos del repositorio actual en un buffer separado. También es posible mostrar información sobre los submódulos
directamente en el búfer de estado del superrepositorio añadiendo <samp>magit-insert-modules</samp> al gancho <samp>magit-status-sections-hook</samp> como se describe en <a href="#secciones_del_modulo_de_estado" onclick="c('secciones_del_modulo_de_estado')">Secciones del
módulo de estado</a>.
</p>
<dl>
<dt>Comando: <samp>magit-list-submodules</samp></dt>
<dd>Este comando muestra una lista de los submódulos poblados del repositorio actual en un buffer separado.</dd>
<dd>Puede invocarse pulsando <kbd>RETURN</kbd> (<samp>RET</samp>) en la sección titulada "Módulos".</dd>
<dt>Comando: <samp>magit-submodules-list-columns</samp></dt>
<dd>Esta opción controla qué columnas muestra el comando <samp>magit-list-submodules</samp> y cómo se muestran.</dd>
<dd>Cada elemento tiene la forma (<samp>HEADER WIDTH FORMAT PROPS</samp>).</dd>
<dd>
HEADER es la cadena que se muestra en la cabecera. WIDTH es la anchura de la columna. FORMAT es una función que se llama con un argumento, la identificación del repositorio
(normalmente su nombre base), y con <samp>default-directory</samp> vinculado al nivel superior de su árbol de trabajo. Debe devolver una cadena a insertar o nil. PROPS es una lista
que soporta las claves <samp>:right-align</samp>, <samp>:pad-right</samp> y <samp>:sort</samp>.
</dd>
<dd>
La función <samp>:sort</samp> tiene una interfaz extraña descrita en el docstring de <samp>tabulated-list-get-sort</samp>. Alternativamente <samp>&lt;</samp> y <samp>magit-repolist-version&lt;</samp>
pueden ser usadas ya que esas funciones son automáticamente reemplazadas por funciones que satisfacen la interfaz. Establezca <samp>:sort</samp> como <samp>nil</samp> para inhibir la
ordenación; si no se especifica, la columna se puede ordenar utilizando el ordenador predeterminado.
</dd>
<dd>
Es posible que desee mostrar un rango de columnas numéricas usando sólo un carácter por columna y sin ningún relleno entre columnas, en cuyo caso debe utilizar un HEADER
apropiado, establecer WIDTH a 1, y establecer <samp>:pad-right</samp> a 9. Los números superiores a 9 se sustituyen por +.
</dd>
</dl>
<h2 id="submodulo_transitorio">Submódulo Transitorio<a href="#submodulo_transitorio"></a></h2>
<dl>
<dt><kbd>o</kbd> (<i><samp>o</samp></i>, <samp>magit-submodule</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
</dl>
<p>
Algunos de los siguientes comandos actúan por defecto sobre los módulos seleccionados mediante la región. En aras de la brevedad, en su descripción se habla de "los módulos
seleccionados", pero si no hay ningún módulo seleccionado, actúan sobre el módulo actual, o si el punto no está en ningún módulo, leen un único módulo sobre el que actuar. Con un
argumento prefijo, estos comandos ignoran la selección y el módulo actual y actúan sobre todos los módulos adecuados.
</p>
<dl>
<dt><kbd>o</kbd><kbd>a</kbd> (<i><samp>o a</samp></i>, <samp>magit-submodule-add</samp>)</dt>
<dd>
Este comando añade el repositorio en la URL como un módulo. PATH opcional es la ruta al módulo relativa a la raíz del superproyecto. Si es nil entonces la ruta se determina en
base a la URL.
</dd>
<dt><kbd>o</kbd><kbd>r</kbd> (<i><samp>o r</samp></i>, <samp>magit-submodule-register</samp>)</dt>
<dd>
Este comando registra los módulos seleccionados copiando sus urls desde ".gitmodules" a "$GIT_<i>DIR</i>/config". Estos valores pueden editarse antes de ejecutar
<samp>magit-submodule-populate</samp>. Si no necesita editar ninguna url, use directamente esta última.
</dd>
<dt><kbd>o</kbd><kbd>p</kbd> (<i><samp>o p</samp></i>, <samp>magit-submodule-populate</samp>)</dt>
<dd>Este comando crea el o los directorio/s de trabajo de los módulos seleccionados, comprobando las confirmaciones registradas.</dd>
<dt><kbd>o</kbd><kbd>u</kbd> (<i><samp>o u</samp></i>, <samp>magit-submodule-update</samp>)</dt>
<dd>Este comando actualiza los módulos seleccionados comprobando las confirmaciones registradas.</dd>
<dt><kbd>o</kbd><kbd>s</kbd> (<i><samp>o s</samp></i>, <samp>magit-submodule-synchronize</samp>)</dt>
<dd>Este comando sincroniza las urls de los módulos seleccionados, copiando los valores de ".gitmodules" al ".git/config" del superproyecto así como los de los módulos.</dd>
<dt><kbd>o</kbd><kbd>d</kbd> (<i><samp>o d</samp></i>, <samp>magit-submodule-unpopulate</samp>)</dt>
<dd>Este comando elimina el directorio de trabajo de los módulos seleccionados.</dd>
<dt><kbd>o</kbd><kbd>l</kbd> (<i><samp>o l</samp></i>, <samp>magit-list-submodule</samp>)</dt>
<dd>Este comando muestra una lista de los módulos del repositorio actual.</dd>
<dt><kbd>o</kbd><kbd>f</kbd> (<i><samp>o f</samp></i>, <samp>magit-fetch-modules</samp>)</dt>
<dd>Este comando recupera todos los módulos más densos.</dd>
<dd>
La opción <samp>magit-fetch-modules-jobs</samp> controla cuántos submódulos se obtienen en paralelo. También recupera el super-repositorio, porque <samp>git fetch</samp> no permite no
hacerlo. Con un argumento prefijo se obtienen todos los remotos.
</dd>
</dl>
<h2 id="subarbol">Subárbol<a href="#subarbol"></a></h2>
<p>Consulte también la página de manual <a href="http://git-scm.com/docs/git-subtree" target="new">git-subtree(1)</a>.</p>
<dl>
<dt><kbd>O</kbd> (<i><samp>O</samp></i>, <samp>magit-subtree</samp>)</dt>
<dd>Este comando de prefijo transitorio une los dos sub-transitorios; uno para importar un subárbol y otro para exportar un subárbol.</dd>
<dt><kbd>O</kbd><kbd>i</kbd> (<i><samp>O i</samp></i>, <samp>magit-subtree-import</samp>)</dt>
<dd>
Este comando de prefijo transitorio une los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se invoque un
sufijo.
</dd>
<dd>Los sufijos de este comando importan subárboles.</dd>
<dd>
Si se establece el argumento <samp>--prefix</samp>, los comandos de sufijo usan ese prefijo sin preguntar al Usuario. Si no se establece, entonces leen el prefijo en el minibuffer.
</dd>
<dt><kbd>O</kbd><kbd>i</kbd><kbd>a</kbd> (<i><samp>O i a</samp></i>, <samp>magit-subtree-add</samp>)</dt>
<dd>Este comando añade COMMIT desde REPOSITORY como un nuevo subárbol en PREFIX.</dd>
<dt><kbd>O</kbd><kbd>i</kbd><kbd>c</kbd> (<i><samp>O i c</samp>, <samp>magit-subtree-add-commit</samp></i>)</dt>
<dd>Este comando añade COMMIT como un nuevo subárbol en PREFIX.</dd>
<dt><kbd>O</kbd><kbd>i</kbd><kbd>m</kbd> (<i><samp>O i m</samp></i>, <samp>magit-subtree-merge</samp>)</dt>
<dd>Este comando fusiona COMMIT en el subárbol PREFIX.</dd>
<dt><kbd>O</kbd><kbd>i</kbd><kbd>f</kbd> (<i><samp>O i f</samp></i>, <samp>magit-subtree-pull</samp>)</dt>
<dd>Este comando extrae COMMIT de REPOSITORY al subárbol PREFIX.</dd>
<dt><kbd>O</kbd><kbd>e</kbd> (<i><samp>O e</samp></i>, <samp>magit-subtree-export</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo.
</dd>
<dd>Los sufijos de este comando exportan subárboles.</dd>
<dd>Si se establece el argumento <samp>--prefix</samp>, los comandos de sufijo usan ese prefijo sin preguntar al Usuario. Si no lo está, leen el prefijo en el minibuffer.</dd>
<dt><kbd>O</kbd><kbd>e</kbd><kbd>p</kbd> (<i><samp>O e p</samp></i>, <samp>magit-subtree-push</samp>)</dt>
<dd>Este comando extrae el historial del subárbol PREFIX y lo empuja a REF en REPOSITORIO.</dd>
<dt><kbd>O</kbd><kbd>e</kbd><kbd>s</kbd> (<i><samp>O e s</samp></i>, <samp>magit-subtree-split</samp>)</dt>
<dd>Este comando extrae el historial del subárbol PREFIX.</dd>
</dl>
<h2 id="arbol_de_trabajo">Árbol de Trabajo<a href="#arbol_de_trabajo"></a></h2>
<p>Vea también la <a href="http://git-scm.com/docs/git-worktree" target="new">página de manual</a> de git.</p>
<dl>
<dt><kbd>Z</kbd> (<i><samp>Z</samp></i>, <samp>magit-worktree</samp>)</dt>
<dd>Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoque un sufijo.</dd>
<dt><kbd>Z</kbd><kbd>b</kbd> (<i><samp>Z b</samp></i>, <samp>magit-worktree-checkout</samp>)</dt>
<dd>Comprueba BRANCH (rama) en un nuevo árbol de trabajo en PATH.</dd>
<dt><kbd>Z</kbd><kbd>c</kbd> (<i><samp>Z c</samp></i>, <samp>magit-worktree-branch</samp>)</dt>
<dd>Crea un nuevo BRANCH (una rama) y comprueba su funcionamiento en un nuevo árbol de trabajo en PATH.</dd>
<dt><kbd>Z</kbd><kbd>m</kbd> (<i><samp>Z m</samp></i>, <samp>magit-worktree-delete</samp>)</dt>
<dd>Mueve un árbol de trabajo existente a un nuevo PATH (ruta).</dd>
<dt><kbd>Z</kbd><kbd>k</kbd> (<i><samp>Z k</samp></i>, <samp>magit-worktree-status</samp>)</dt>
<dd>Borra un árbol de trabajo, por defecto el árbol de trabajo en el punto. El árbol de trabajo primario no se puede eliminar.</dd>
<dt><kbd>Z</kbd><kbd>g</kbd> (<i><samp>Z g</samp></i>, <samp>magit-worktree-status</samp>)</dt>
<dd>Muestra el estado del árbol de trabajo en el punto.</dd>
<dd>
Si no hay árbol de trabajo en el punto, lee uno en el minibuffer. Si el árbol de trabajo en el punto es aquel cuyo estado ya se está mostrando en el búfer actual, en su lugar lo
muestra en Dired.
</dd>
</dl>
<h2 id="comprobacion_de_arbol_de_trabajo_dispersa_sparse_checkout">Comprobación de árbol de trabajo dispersa (sparse checkout)<a href="#comprobacion_de_arbol_de_trabajo_dispersa_sparse_checkout"></a></h2>
<p>
Las comprobaciones dispersas permiten restringir el árbol de trabajo a un subconjunto de directorios. Consulte la página de manual <a href="http://git-scm.com/docs/git-sparse-checkout" target="new">git-sparse-checkout(1)</a>.
</p>
<p>
<b>Advertencia</b>: Git introdujo el comando <samp>git sparse-checkout</samp> en la versión 2.25 y aún lo anuncia como experimental y sujeto a cambios. La interfaz de Magit debería
considerarse igual. En particular, si Git introduce un cambio incompatible con versiones anteriores, la funcionalidad sparse checkout de Magit puede actualizarse de forma que
requiera una versión de Git más reciente.
</p>
<dl>
<dt><kbd>&gt;</kbd> (<samp>&gt;</samp>, <samp>magit-sparse-checkout</samp>)</dt>
<dd>Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoque un sufijo.</dd>
<dt><kbd>&gt;</kbd><kbd>e</kbd> (<samp>&gt; e</samp>, <samp>magit-sparse-checkout-enable</samp>)</dt>
<dd>Este comando inicializa una comprobación dispersa que sólo incluye los archivos del directorio de nivel superior.</dd>
<dd>
Tenga en cuenta que <samp>magit-sparse-checkout-set</samp> y <samp>magit-sparse-checkout-add</samp> inicializan automáticamente una salida dispersa si es necesario. Sin embargo, puede
que quiera llamar a <samp>magit-sparse-checkout-enable</samp> explícitamente para reinicializar una sparse checkout después de llamar a <samp>magit-sparse-checkout-disable</samp>, para
pasar argumentos adicionales a <samp>git sparse-checkout init</samp>, o para ejecutar la inicialización de forma asíncrona.
</dd>
<dt><kbd>&gt;</kbd><kbd>s</kbd> (<samp>&gt; s</samp>, <samp>magit-sparse-checkout-set</samp>)</dt>
<dd>
Este comando toma una lista de directorios y configura la comprobación dispersa para incluir sólo los archivos en esos subdirectorios. Cualquier directorio incluido previamente
se excluye a menos que se encuentre en la lista de directorios proporcionada.
</dd>
<dt><kbd>&gt;</kbd><kbd>a</kbd> (<samp>&gt; a</samp>, <samp>magit-sparse-checkout-add</samp>)</dt>
<dd>
Esta orden es como <samp>magit-sparse-checkout-set</samp>, pero añade la lista de directorios especificada al conjunto de directorios que ya está incluido en la comprobación dispersa.
</dd>
<dt><kbd>&gt;</kbd><kbd>r</kbd> (<samp>&gt; r</samp>, <samp>magit-sparse-checkout-reapply</samp>)</dt>
<dd>
Este comando aplica los patrones de comprobación dispersos configurados actualmente al árbol de trabajo. Esto es útil si se han extraído archivos excluidos después de operaciones
como la fusión (merging) o una reorganización (rebasing).
</dd>
<dt><kbd>&gt;</kbd><kbd>d</kbd> (<samp>&gt; d</samp>, <samp>magit-sparse-checkout-disable</samp>)</dt>
<dd>Este comando restaura la comprobación completa. Para volver a la comprobación dispersa anterior, llame a <samp>magit-sparse-checkout-enable</samp>.</dd>
</dl>
<p>
Un sparse checkout también puede iniciarse cuando se clona un repositorio usando el comando <samp>magit-clone-sparse</samp> en el transitorio <samp>magit-clone</samp> (ver <a href="#clonando_un_repositorio" onclick="c('clonando_un_repositorio')">Clonando un
repositorio</a>).
</p>
<p>
Si desea que el búfer de estado indique cuándo se activa una comprobación dispersa, añada la función <samp>magit-sparse-checkout-insert-header</samp> a <samp>magit-status-headers-hook</samp>.
</p>
<h2 id="bundle_paquete">Bundle (paquete)<a href="#bundle_paquete"></a></h2>
<p>Vea también la <a href="http://git-scm.com/docs/git-bundle" target="new">página de manual</a> de git referida.</p>
<dl>
<dt>Comando: <samp>magit-bundle</samp></dt>
<dd>
Este comando de prefijo transitorio enlaza varios comandos de sufijo para ejecutar subcomandos de <samp>git bundle</samp> y los muestra en un búfer temporal hasta que se invoque un
sufijo.
</dd>
</dl>
<h2 id="comandos_comunes">Comandos comunes<a href="#comandos_comunes"></a></h2>
<dl>
<dt>
Comando: <samp>magit-switch-to-repository-buffer</samp><br>
Comando: <samp>magit-switch-to-repository-buffer-other-window</samp><br>
Comando: <samp>magit-switch-to-repository-buffer-other-frame</samp><br>
Comando: <samp>magit-display-repository-buffer</samp>
<dd>Estos comandos leen cualquier búfer Magit existente que pertenezca al repositorio actual del usuario y luego cambian al búfer seleccionado (sin refrescarlo).</dd>
<dd>La última variante usa <samp>magit-display-buffer</samp> para hacerlo y, por tanto, respeta <samp>magit-display-buffer-function</samp>.</dd>
</dt>
</dl>
<p>
Estos son algunos de los comandos que se pueden usar en todos los buffers cuyos modos mayores derivan de <samp>magit-mode</samp>. Hay otros comandos comunes además de los de abajo, pero
estos no encajaban bien en ningún otro sitio.
</p>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>w</kbd> (<i><samp>C w</samp></i>, <samp>magit-copy-section-value</samp>)</dt>
<dd>
Esta orden guarda el valor de la sección actual en el anillo de muertes (<samp>kill-ring</samp>), y, siempre que la sección actual sea una sección confirmada, rama o etiqueta,
también empuja la revisión (referenciada) a la pila <samp>magit-revision-stack</samp>.
</dd>
<dd>
Cuando la sección actual es una rama o una etiqueta, y se usa un argumento de prefijo, guarda la revisión en el extremo del anillo de muertes en lugar del nombre de referencia.
</dd>
<dd>
Cuando la región está activa, este comando la guarda en el <samp>kill-ring</samp>, como lo haría <samp>kill-ring-save</samp>, en lugar de comportarse como se ha descrito anteriormente.
Si se usa un argumento de prefijo y la región está dentro de un trozo, elimina la columna del marcador de diferencias y mantiene sólo las líneas añadidas o eliminadas,
dependiendo del signo del argumento de prefijo.
</dd>
<dt><kbd>Alt</kbd>-<kbd>w</kbd> (<i><samp>M w</samp></i>, <samp>magit-copy-buffer-revision</samp>)</dt>
<dd>
Este comando guarda en el <samp>kill-ring</samp> la revisión que se está mostrando en el búfer actual y también la empuja a la pila <samp>magit-revision-stack</samp>. Está pensado
principalmente para su uso en buffers <samp>magit-revision-mode</samp>, los únicos buffers en los que siempre es inequívoco qué revisión debe guardarse exactamente.
</dd>
<dd>
La mayoría de los otros buffers Magit suelen mostrar más de una revisión, de una forma u otra, por lo que este comando tiene que seleccionar una de ellas, y esa elección puede no
ser siempre la que pensamos que hubiera sido la mejor elección.
</dd>
</dl>
<p>
Fuera de Magit, <samp>M-w</samp> y <samp>C-w</samp> suelen estar vinculados a <samp>kill-ring-save</samp> y <samp>kill-region</samp>, estos comandos también serían útiles en los buffers de Magit.
Por lo tanto, cuando la región está activa, estos dos comandos se comportan como <samp>kill-ring-save</samp> en lugar de como se ha descrito anteriormente.
</p>
<h2 id="modos_de_limpieza">Modos de limpieza<a href="#modos_de_limpieza"></a></h2>
<p>
Git mantiene los cambios <b>confirmados</b> el tiempo suficiente para que los Usuarios puedan recuperar los cambios que hayan borrado accidentalmente. Para ello, no recoge los
objetos confirmados pero ya no referenciados (garbage) durante un cierto periodo de tiempo, por defecto 30 días.
</p>
<p>
Pero Git <b>no</b> hace un seguimiento de los cambios <b>sin confirmar</b>· en el árbol de trabajo y ni siquiera en el índice (el área de preparación (staging area)). Debido a que
Magit hace que sea tan conveniente modificar los cambios no confirmados, también hace que sea fácil dispararse en el pie en el proceso.
</p>
<p>
Por esa razón, Magit proporciona un modo global que guarda los archivos <b>rastreados</b> en referencias de trabajo en curso después o antes de determinadas acciones. (En la
actualidad, los archivos no rastreados nunca se guardan y, por razones técnicas, no se guarda nada antes de que se haya creado la primera confirmación).
</p>
<p>
Se usan dos referencias de trabajo en curso separadas para seguir el estado del índice y del árbol de trabajo: <samp>refs/wip/index/&lt;branchref&gt;</samp> y
<samp>refs/wip/wtree/&lt;branchref&gt;</samp>, donde <samp>&lt;branchref&gt;</samp> es la referencia completa de la rama actual, por ejemplo, <samp>refs/heads/master</samp>. Cuando se separa la
<samp>HEAD</samp>, se usa <samp>HEAD</samp> en lugar de <samp>&lt;branchref&gt;</samp>.
</p>
<p>La consulta de otra rama (o la separación de <samp>HEAD</samp>) provoca el uso de diferentes <i>wip refs</i> (referencias a las limpiezas) para los cambios posteriores.</p>
<dl>
<dt>Opción de Usuario: <samp>magit-wip-mode</samp></dt>
<dd>
Cuando este modo está activado, los cambios no confirmados se confirman en las referencias de trabajo en curso dedicadas siempre que sea apropiado (es decir, cuando de otro modo,
la pérdida de datos sería una posibilidad ).
</dd>
<dd>Establecer esta variable directamente no tiene efecto; use la interfaz personalizada para hacerlo o llame a la función de modo correspondiente.</dd>
<dd>
Por razones históricas, este modo está implementado sobre otros cuatro modos <samp>magit-wip-*</samp>, que también pueden usarse individualmente, si se desea un control más preciso
sobre cuándo se actualizan las referencias wip; pero esto se desaconseja. Ver Legacy Wip Modes.
</dd>
</dl>
<p>
Para ver el registro de una rama y sus wip refs use los comandos <samp>magit-wip-log</samp> y <samp>magit-wip-log-current</samp>. Debería usar <samp>--graph</samp> cuando use estos comandos.
</p>
<dl>
<dt>Comando: <samp>magit-wip-log</samp></dt>
<dd>Este comando muestra el log de una rama y sus wip refs. Con un argumento prefijo negativo sólo se muestra la referencia wip del árbol de trabajo.</dd>
<dd>
El valor numérico absoluto del argumento prefix controla cuántas "ramas" de cada wip ref se muestran. Esto sólo es relevante si el valor de <samp>magit-wip-merge-branch</samp> es
<samp>nil</samp>.
</dd>
<dt>Comando: <samp>magit-wip-log-current</samp></dt>
<dd>Este comando muestra el log de la rama actual y sus wip refs. Con un argumento prefijo negativo sólo se muestra la referencia wip del árbol de trabajo.</dd>
<dd>
El valor numérico absoluto del argumento prefix controla cuántas "ramas" de cada wip ref se muestran. Esto sólo es relevante si el valor de <samp>magit-wip-merge-branch</samp> es
<samp>nil</samp>.
</dd>
<dt><kbd>X</kbd><kbd>w</kbd> (<i><samp>X w</samp></i>, <samp>magit-reset-worktree</samp>)</dt>
<dd>
Este comando restablece el árbol de trabajo a alguna confirmación del usuario leída y por defecto a la confirmación en el punto, mientras que mantiene el <samp>HEAD</samp> y el
índice como están.
</dd>
<dd>
Esto puede usarse para restaurar archivos al estado confirmado en un wip ref. Tenga en cuenta que esto descartará cualquier cambio sin confirmar que pudiera haber existido antes
de invocar este comando (pero, por supuesto, sólo después de confirmarlo en el árbol de trabajo wip ref).
</dd>
</dl>
<p>
Tenga en cuenta que incluso si activa <samp>magit-wip-mode</samp> esto no le dará una protección perfecta. El escenario más probable para perder cambios a pesar del uso de
<samp>magit-wip-mode</samp> es hacer un cambio fuera de Emacs y luego destruirlo también fuera de Emacs. En un escenario así, Magit, siendo un paquete de Emacs, no tuvo la oportunidad de
evitar que se disparara en el pie.
</p>
<p>
Cuando no esté seguro de si Magit ha confirmado un cambio en los wip refs, puede solicitar explícitamente que se confirmen todos los cambios en todos los ficheros rastreados.
</p>
<dl>
<dt><kbd>Alt</kbd>-<kbd>x</kbd> <samp>magit-wip-commit</samp> (<i><samp>M-x magit-wip-commit</samp></i>)</dt>
<dd>
Este comando confirma todos los cambios de todos los ficheros rastreados en el índice y en las referencias de trabajo en curso del árbol de trabajo. Al igual que los modos
descritos anteriormente, no confirma los archivos no seguidos, pero comprueba todos los archivos seguidos en busca de cambios. Use este comando cuando sospeche que los modos
pueden haber pasado por alto un cambio hecho fuera de Emacs/Magit.
</dd>
<dt>Opción de Usuario: <samp>magit-wip-namespace</samp></dt>
<dd>
El espacio de nombres usado para las referencias de trabajo en curso. Debe terminar con una barra. Los wip refs se llaman <samp>&lt;namespace&gt;index/&lt;branchref&gt;</samp> y
<samp>&lt;namespace&gt;wtree/&lt;branchref&gt;</samp>. Cuando se crean instantáneas mientras la cabecera (<samp>HEAD</samp>) está separada, se usa <samp>HEAD</samp> en lugar de <samp>&lt;branchref&gt;</samp>.
</dd>
<dt>Opción de Usuario: <samp>magit-wip-mode--lighter</samp></dt>
<dd>Modo de línea para <samp>magit-wip--mode</samp>.</dd>
</dl>
<h3 id="grafico_de_barrido">Gráfico de barrido<a href="#grafico_de_barrido"></a></h3>
<p>Esta opción controla si la rama actual se fusiona en las refs de wip después de crear una nueva confirmación en la rama.</p>
<p>
Si no es nula y la rama actual tiene nuevas confirmaciones, entonces se fusiona en la referencia wip antes de crear una nueva confirmación wip. Esto facilita la inspección del
historial de wip y las confirmaciones wip nunca son recolectadas.
</p>
<p>
Si es nil y la rama actual tiene nuevas confirmaciones, la referencia wip se reinicia en el extremo de la rama antes de crear una nueva confirmación wip. Con esta configuración, las
confirmaciones wip son, eventualmente, recogidos de la basura.
</p>
<p>
Cuando <samp>magit-wip-merge-branch</samp> es <samp>t</samp>, el historial tiene el siguiente aspecto:
<div class="pre"><pre>
*--*--*--*--*--* refs/wip/index/refs/heads/master
/ / /
A-----B-----C refs/heads/master
</pre></div>
</p>
<p>
Cuando <samp>magit-wip-merge-branch</samp> es nil, la creación de una confirmación en la rama real y luego hacer un cambio hace que las referencias wip sean recreadas para bifurcarse
desde la nueva confirmación. Pero las confirmaciones antiguas en las wip refs no se pierden. Siguen estando disponibles en el reflog. Para que sea más fácil ver cuándo se ha cambiado
el punto de bifurcación de una wip ref, se crea una confirmación adicional con el mensaje "restart autosaving" (las confirmaciones <samp>xxO</samp> de abajo son este tipo de
confirmaciones).
</p>
<p>
Comenzando por:
<div class="pre"><pre>
BI0---BI1 refs/wip/index/refs/heads/master
/
A---B refs/heads/master
\
BW0---BW1 refs/wip/wtree/refs/heads/master
</pre></div>
</p>
<p>
y confirmando los cambios por etapas y editando y guardando un archivo resultaría en:
<div class="pre"><pre>
BI0---BI1 refs/wip/index/refs/heads/master
/
A---B---C refs/heads/master
\ \
\ CW0---CW1 refs/wip/wtree/refs/heads/master
\
BW0---BW1 refs/wip/wtree/refs/heads/master@{2}
</pre></div>
</p>
<p>
El punto de bifurcación del índice wip ref no se cambia hasta que algún cambio está siendo puesto en escena. De la misma forma, el hecho de comprobar una rama o crear una
confirmación no cambia el punto de bifurcación de la wip ref del árbol de trabajo. Los puntos de bifurcación no se ajustan hasta que realmente hay un cambio que debe ser confirmado
en la respectiva wip ref.
</p>
<h3 id="modos_de_limpieza_heredados">Modos de limpieza heredados<a href="#modos_de_limpieza_heredados"></a></h3>
<p>Se recomienda usar el modo <samp>magit-wip-mode</samp> e ignorar la existencia de los siguientes modos, que se conservan por razones históricas.</p>
<p>Establecer las siguientes variables directamente no tiene efecto; use la interfaz personalizada para hacerlo o llame a las respectivas funciones de modo.</p>
<dl>
<dt>Opción de Usuario: <samp>magi-wip-after-save-mode</samp></dt>
<dd>
Cuando este modo está habilitado, guardar un buffer que visita un archivo rastreado en un repositorio Git provoca que su estado actual sea enviado al árbol de trabajo wip ref
para la rama actual.
</dd>
<dt>Opción de Usuario: <samp>magit-wip-after-apply-mode</samp></dt>
<dd>
Cuando este modo está habilitado, la aplicación de un cambio a un archivo rastreado en un repositorio Git (es decir, su inclusión en área de preparación o (staging), sacar dicho
archivo del área de preparación (unstaging), descartar, revertir, y aplicar regularmente los cambios a dicho archivo) hace que su estado actual sea enviado al índice y / o árbol
de trabajo wip refs para la rama actual.
</dd>
</dl>
<p>
Si sólo se editan archivos usando Emacs y sólo se interactúa con Git usando Magit, entonces los dos modos anteriores deberían ser suficientes para proteger todos y cada uno de los
cambios de pérdidas accidentales. En la práctica, nadie hace eso. Existen dos modos adicionales que hacen confirmación a los wip refs antes de hacer cambios que podrían causar la
pérdida de cambios anteriores.
</p>
<dl>
<dt>Opción de Usuario: <samp>magit-wip-before-change-mode</samp></dt>
<dd>Cuando este modo está activado, ciertos comandos confirman los cambios existentes en los archivos a los que van a realizar cambios.</dd>
<dt>Opción de Usuario: <samp>magit-wip-initial-backup-mode</samp></dt>
<dd>
Cuando se activa este modo, la versión actual de un archivo se guarda en el árbol de trabajo wip ref antes de que el búfer que visita ese archivo se guarde por primera vez desde
que se creó el búfer.
</dd>
<dd>
De este modo, se realiza una copia de seguridad de la misma versión del archivo que guardaría <samp>backup-buffer</samp>. Mientras que <samp>backup-buffer</samp> usa un archivo de copia
de seguridad, este modo usa el mismo worktree wip ref que usan los otros modos de Magit Wip. Al igual que <samp>backup-buffer</samp>, sólo lo hace una vez; a menos que mate el buffer
y vuelva a visitar el archivo, sólo se creará una copia de seguridad por sesión de Emacs.
</dd>
<dd>
Este modo ignora las variables que afectan a <samp>backup-buffer</samp> y puede usarse junto a esa función, lo cual es recomendable porque sólo hace copias de seguridad de los
archivos que se rastrean en un repositorio Git.
</dd>
<dt>Opción de Usuario: <samp>magit-wip-after-save-local-mode-lighter</samp></dt>
<dd>Modo de línea para <samp>magit-wip-after-save-local-mode</samp>.</dd>
<dt>Opción de Usuario: <samp>magit-wip-after-apply-mode-lighter</samp></dt>
<dd>Modo de línea para <samp>magit-wip-after-apply-mode</samp></dd>
<dt>Opción de Usuario: <samp>magit-wip-before-change-mode-lighter</samp></dt>
<dd>Modo de línea para <samp>magit-wip-before-change-mode</samp>.</dd>
<dt>Opción de Usuario: <samp>magit-wip-initial-backup-mode-lighter</samp></dt>
<dd>Modo de línea para <samp>magit-wip-initial-backup-mode</samp>.</dd>
</dl>
<h2 id="comandos_para_buferes_que_visitan_archivos">Comandos para búferes que visitan archivos<a href="#comandos_para_buferes_que_visitan_archivos"></a></h2>
<p>
Por defecto, Magit define unas pocas combinaciones globales de teclas. Estos enlaces son un compromiso entre no proporcionar ningún enlace y proporcionar los mejores enlaces que me
hubiera gustado usar en su lugar. Magit no puede proporcionar el conjunto de combinaciones recomendadas por defecto porque esas secuencias de teclas están estrictamente reservadas
para combinaciones añadidas por el usuario. Vea también <a href="#@GENDOC:global_bindings@" onclick="c('@GENDOC:global_bindings@')">Global Bindings</a> y <a href="#@GENDOC:elisp_key_binding_conventions@" onclick="c('@GENDOC:elisp_key_binding_conventions@')">(elisp)Key Binding Conventions</a>.
</p>
<p>
Para usar los bindings recomendados, añada esto a su fichero init y reinicie Emacs:
<div class="pre"><pre>
(setq magit-define-global-key-bindings 'recommended)
</pre></div>
</p>
<p>
Si no desea que Magit añada ningún enlace al mapa de teclado global, añada esto a su archivo init y reinicie Emacs:
<div class="pre"><pre>
(setq magit-define-global-key-bindings nil)
</pre></div>
</p>
<p>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd> (<i><samp>C-c f</samp></i>, <samp>magit-file-dispatch</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>s</kbd> (<i><samp>C-c f s</samp></i>, <samp>magit-stage-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>s</kbd> (<i><samp>C-c f s</samp></i>, <samp>magit-stage-buffer-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>u</kbd> (<i><samp>C-c f u</samp></i>, <samp>magit-unstage-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>u</kbd> (<i><samp>C-c f u</samp></i>, <samp>magit-unstage-buffer-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>,</kbd><kbd>x</kbd> (<i><samp>C-c f , x</samp></i>, <samp>magit-file-untrack</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>,</kbd><kbd>r</kbd> (<i><samp>C-c f , r</samp></i>, <samp>magit-file-rename</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>,</kbd><kbd>k</kbd> (<i><samp>C-c f , k</samp></i>, <samp>magit-file-delete</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>,</kbd><kbd>c</kbd> (<i><samp>C-c f , c</samp></i>, <samp>magit-file-checkout</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>D</kbd> (<i><samp>C-c f D</samp></i>, <samp>magit-diff</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>d</kbd> (<i><samp>C-c f d</samp></i>, <samp>magit-diff-buffer-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>L</kbd> (<i><samp>C-c f L</samp></i>, <samp>magit-log</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>l</kbd> (<i><samp>C-c f l</samp></i>, <samp>magit-log-buffer-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>t</kbd> (<i><samp>C-c f t</samp></i>, <samp>magit-log-trace-definition</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>M</kbd> (<i><samp>C-c f M</samp></i>, <samp>magit-log-merged</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>B</kbd> (<i><samp>C-c f B</samp></i>, <samp>magit-blame</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>b</kbd> (<i><samp>C-c f b</samp></i>, <samp>magit-blame-additions</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>r</kbd> (<i><samp>C-c f r</samp></i>, <samp>magit-blame-removal</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>f</kbd> (<i><samp>C-c f f</samp></i>, <samp>magit-blame-reverse</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>m</kbd> (<i><samp>C-c f m</samp></i>, <samp>magit-blame-echo</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>q</kbd> (<i><samp>C-c f q</samp></i>, <samp>magit-blame-quit</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>p</kbd> (<i><samp>C-c f p</samp></i>, <samp>magit-blob-previous</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>n</kbd> (<i><samp>C-c f n</samp></i>, <samp>magit-blob-next</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>v</kbd> (<i><samp>C-c f v</samp></i>, <samp>magit-find-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>V</kbd> (<i><samp>C-c f V</samp></i>, <samp>magit-blob-visit-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>g</kbd> (<i><samp>C-c f g</samp></i>, <samp>magit-status-here</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>G</kbd> (<i><samp>C-c f G</samp></i>, <samp>magit-display-repository-buffer</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>c</kbd> (<i><samp>C-c f c</samp></i>, <samp>magit-commit</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>f</kbd><kbd>e</kbd> (<i><samp>C-c f e</samp></i>, <samp>magit-edit-line-commit</samp>)
</p>
<p>
Cada uno de estos comandos se documenta individualmente más abajo, junto con sus combinaciones de teclas por defecto. Las combinaciones mostradas arriba son las recomendadas, que
puede activar siguiendo las instrucciones que se leen a continuación.
</p>
<dl>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> (<i><samp>C-c M-g</samp></i>, <samp>magit-file-dispatch</samp>)</dt>
<dd>Este comando de prefijo transitorio enlaza los siguientes comandos de sufijo y los muestra en un búfer temporal hasta que se invoque un sufijo.</dd>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>s</kbd> (<i><samp>C-c M-g s</samp></i>, <samp>magit-stage-file</samp>)<br>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>u</kbd> (<i><samp>C-c M-g u</samp></i>, <samp>magit-unstage-buffer-file</samp>)
</dt>
<dd>Deshace todos los cambios del archivo que se está visitando en el búfer actual. Cuando no se visita un archivo, se usa el primer comando, que solicita uno.</dd>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>,</kbd><kbd>x</kbd> (<i><samp>C-c M-g , x</samp></i>, <samp>magit-file-untrack</samp>)
</dt>
<dd>Este comando deshace el seguimiento de un archivo leído por el usuario, por defecto en el archivo visitado.</dd>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>,</kbd><kbd>r</kbd> (<i><samp>C-c M-g , r</samp></i>, <samp>magit-file-rename</samp>)
</dt>
<dd>Este comando renombra un archivo leído del usuario, por defecto el archivo visitado.</dd>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>,</kbd><kbd>k</kbd> (<i><samp>C-c M-g , k</samp></i>, <samp>magit-file-delete</samp>)
</dt>
<dd>Este comando borra un archivo leído por el usuario, por defecto el archivo visitado.</dd>
<dt>
<kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>,</kbd><kbd>c</kbd> (<i><samp>C-c M-g , c</samp></i>, <samp>magit-file-checkout</samp>)
</dt>
<dd>Este comando actualiza un fichero en el árbol de trabajo y el índice a los contenidos de una revisión. Tanto la revisión como el fichero son leídos por el usuario.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>D</kbd> (<i><samp>C-c M-g D</samp></i>, <samp>magit-diff</samp>)</dt>
<dd>
Este comando de prefijo transitorio une varios comandos de sufijo diff y argumentos infix y los muestra en un búfer temporal hasta que se invoque un sufijo. Véase <a href="#difusion" onclick="c('difusion')">Difusión</a>.
</dd>
<dd>
Este es el mismo comando al que se vincula <samp>d</samp> en los búferes de Magit. Si este comando se invoca desde un búfer que visita un archivo, el valor inicial de la opción
(<samp>--</samp>) que limita el diff a determinado(s) archivo(s) se establece en el archivo visitado.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>d</kbd> (<i><samp>C-c M-g d</samp></i>, <samp>magit-diff-buffer-file</samp>)</dt>
<dd>Este comando muestra el diff para el archivo de blob que visita el buffer actual.</dd>
<dt>Opción de Usuario: <samp>magit-diff-buffer-file-locked</samp>.</dt>
<dd>Esta opción controla si <samp>magit-diff-buffer-file</samp> utiliza un buffer dedicado. Vea <a href="#modos_y_buferes" onclick="c('modos_y_buferes')">Modos y Búferes</a></dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>L</kbd> (<i><samp>C-c M-g L</samp></i>, <samp>magit-log</samp>)</dt>
<dd>
Este comando de prefijo transitorio une varios comandos de sufijo de registro y argumentos de infijo y los muestra en un búfer temporal hasta que se invoque un sufijo. Véase
<a href="#registros" onclick="c('registros')">Registros</a>.
</dd>
<dd>
Se trata del mismo comando al que se vincula <samp>l</samp> en los búferes de Magit. Si este comando se invoca desde una memoria intermedia que visita un archivo, el valor inicial de
la opción (<samp>--</samp>) que limita el registro a determinados archivos se establece en el archivo visitado.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>l</kbd> (<i><samp>C-c M-g l</samp></i>, <samp>magit-log-buffer-file</samp>)</dt>
<dd>
Este comando muestra el registro del archivo o blob que visita el búfer actual. Los renombramientos se siguen cuando se usa un argumento de prefijo o cuando <samp>--follow</samp> es
un argumento de registro activo. Cuando la región está activa, el registro se restringe al intervalo de líneas seleccionado.
</dd>
<dt>Opción de Usuario: <samp>magit-log-buffer-file-locked</samp></dt>
<dd>Esta opción controla si <samp>magit-log-buffer-file</samp> utiliza un búfer dedicado. Consulte <a href="#modos_y_buferes" onclick="c('modos_y_buferes')">Modos y Búferes</a>.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>t</kbd> (<i><samp>C-c M-g t</samp></i>)</dt>
<dd>Este comando muestra el registro de la definición en el punto.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>M</kbd> (<i><samp>C-c M-g M</samp></i>, <samp>magit-log-merged</samp>)</dt>
<dd>
Este comando lee una confirmación y una rama y muestra un registro de la fusión de la primera en la segunda. Muestra múltiples confirmaciones incluso en el caso de una fusión
rápida.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>B</kbd> (<i><samp>C-c M-g B</samp></i>, <samp>magit-blame</samp>)</dt>
<dd>
Este comando de prefijo transitorio enlaza todos los comandos de sufijo de notas (blaming) junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta
que se invoque un sufijo.
</dd>
<dd>Para obtener más información sobre este comando y los siguientes, consulte <a href="#blaming" onclick="c('blaming')">Blaming</a>.</dd>
<dd>
Además del subtransitorio <samp>magit-blame</samp>, el transitorio de envío también vincula varios comandos de sufijo de notas directamente. Consulte <a href="#blaming" onclick="c('blaming')">Blaming</a> para obtener
información sobre estos comandos y sus vínculos.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>p</kbd> (<i><samp>C-c M-g p</samp></i>, <samp>magit-blob-previous</samp>)</dt>
<dd>Este comando visita el blob anterior que modificó el archivo actual.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>n</kbd> (<i><samp>C-c M-g n</samp></i>, <samp>magit-blob-next</samp>)</dt>
<dd>Este comando visita el siguiente blob que modificó el archivo actual.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>v</kbd> (<i><samp>C-c M-g v</samp></i>, <samp>magit-find-file</samp>)</dt>
<dd>Este comando lee una revisión y un archivo y visita el blob correspondiente.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Atl</kbd>-<kbd>g</kbd> <kbd>V</kbd> (<i><samp>C-c M-g V</samp></i>, <samp>magit-blob-visit-file</samp>)</dt>
<dd>
Este comando visita el fichero del árbol de trabajo, correspondiente al blob actual. Cuando se visita un blob o la versión desde el índice, entonces se va a la misma ubicación
del archivo respectivo en el árbol de trabajo.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>g</kbd> (<i><samp>C-c M-g g</samp></i>, <samp>magit-status-here</samp>)</dt>
<dd>
Este comando muestra el estado del repositorio actual en un buffer, como hace <samp>magit-status</samp>. Además, intenta ir a la posición en ese búfer, que corresponde a la posición
en el búfer de visita del archivo actual (si existe).
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>G</kbd> (<i><samp>C-c M-g G</samp></i>, <samp>magit-display-repository-buffer</samp>)</dt>
<dd>Este comando lee y muestra un buffer Magit perteneciente al repositorio actual, sin refrescarlo.</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>c</kbd> (<i><samp>C-c M-g c</samp></i>, <samp>magit-commit</samp>)</dt>
<dd>
Este comando de prefijo transitorio vincula los siguientes comandos de sufijo junto con los argumentos de infijo apropiados y los muestra en un búfer temporal hasta que se
invoque un sufijo. Véase <a href="#iniciando_una_confirmacion" onclick="c('iniciando_una_confirmacion')">Iniciando una Confirmación</a>.
</dd>
<dt><kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Alt</kbd>-<kbd>g</kbd> <kbd>e</kbd> (<i><samp>C-c M-g e</samp></i>, <samp>magit-edit-line-commit</samp>)</dt>
<dd>Este comando hace editable la confirmación que añadió la línea actual.</dd>
<dd>
Con un prefijo como argumento, hace editable la confirmación que elimina la línea, si existe. La confirmación se determina usando <samp>git blame</samp> y se hace editable usando
<samp>git rebase --interactive</samp> si es accesible desde <samp>HEAD</samp>, o comprobando la confirmación (o una rama que apunte a ella) en caso contrario.
</dd>
</dl>
<h2 id="modo_menor_para_buferes_que_visitan_blobs">Modo menor para búferes que visitan blobs<a href="#modo_menor_para_buferes_que_visitan_blobs"></a></h2>
<p>
El modo <samp>magit-blob</samp> habilita ciertas características de Magit en los buffers que visitan blobs. Dichos buffers pueden crearse utilizando magit-find-file y algunos de los
comandos mencionados a continuación, que también se encargan de activar este modo menor. Actualmente este modo sólo establece unos pocos enlaces de teclas, pero podría ampliarse.
</p>
<dl>
<dt><kbd>p</kbd> (<i><samp>p</samp></i>, <samp>magit-blob-previous</samp>)</dt>
<dd>Visita el blob anterior que modificó el archivo actual.</dd>
<dt><kbd>n</kbd> (<i><samp>n</samp></i>, <samp>magit-blob-next</samp>)</dt>
<dd>Visita el siguiente blob que modificó el archivo actual.</dd>
<dt><kbd>q</kbd> (<i><samp>q</samp></i>, <samp>magit-kill-this-buffer</samp>)</dt>
<dd>Elimina el búfer actual.</dd>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_transferencia" title="Transferencia">Anterior</label><label class="btn next" accesskey="n" for="_personalizacion" title="Personalización">Siguiente</label></div>
<div class="page" rel="personalizacion"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Personalización</li></ul><hr></div>
<h1 id="personalizacion">Personalización<a href="#personalizacion"></a></h1>
<p>
Tanto Git como Emacs son altamente personalizables. Magit es tanto una porcelana de Git como un paquete de Emacs, así que tiene sentido personalizarlo usando tanto variables de Git
como opciones de Emacs. Sin embargo esta flexibilidad no viene sin problemas, incluyendo pero no limitándose a los siguientes.
</p>
<ul>
<li>
Algunas variables Git tienen automáticamente un efecto en Magit sin requerir ningún soporte explícito. A veces eso es deseable - en otros casos, rompe Magit.<br><br>
Cuando una determinada configuración de Git rompe Magit pero se quiere seguir usando esa configuración en la línea de comandos, entonces se puede lograr anulando el valor sólo
para Magit añadiendo algo como <samp>(&quot;-c&quot; &quot;some.variable=compatible-value&quot;)</samp> a <samp>magit-git-global-arguments</samp>.
</li>
<li>
Ciertos ajustes como <samp>fetch.prune=true</samp> son respetados por los comandos Magit (porque simplemente llaman al respectivo comando Git) pero su valor no se refleja en los
respectivos buffers transitorios. En este caso, el argumento <samp>--prune</samp> en <samp>magit-fetch</samp> puede estar activo o inactivo, pero eso no impide que la variable Git sea
respetada por los comandos sufijo de todos modos. Por lo tanto, el corte puede ocurrir a pesar de que los argumentos <samp>--prune</samp> se muestren de una manera que parezca
indicar que no ocurrirá ningún corte.
</li>
</ul>
<p>Tengo la intención de abordar estas cuestiones y otras similares en una de las próximas versiones.</p>
<h2 id="configuracion_por_repositorio">Configuración por repositorio<a href="#configuracion_por_repositorio"></a></h2>
<p>Magit puede configurarse a nivel de repositorio usando tanto variables Git como opciones Emacs.</p>
<p>
Para establecer una variable Git sólo para un repositorio, simplemente establécela en <samp>/ruta/al/repositorio/.git/config</samp> en lugar de <samp>$HOME/.gitconfig</samp> o
<samp>/etc/gitconfig</samp>. Ver la página de manual de <a href="http://git-scm.com/docs/git-config" target="new">git-config(1)</a>.
</p>
<p>
De forma similar, las opciones de Emacs pueden establecerse sólo para un repositorio editando <samp>/ruta/al/repo/.dir-locals.el</samp>. Ver (emacs)Variables de directorio. Por ejemplo,
para desactivar los refrescos automáticos de los buffers de visita de ficheros en un único repositorio, use esto:
</p>
<div class="pre"><pre>
/ruta/al/repo/.dir-locals.el
((nil . ((magit-refresh-buffers . nil))))
</pre></div>
<p>
Puede que sólo sea costoso insertar cierta información en los buffers Magit para repositorios que son excepcionalmente grandes, en cuyo caso puede desactivar los inserctores de
sección respectivos sólo para ese repositorio:
</p>
<div class="pre"><pre>
/ruta/a/etiqueta/invertida/repo/.dir-locals.el
((magit-status-mode
. ((eval . (magit-disable-section-inserter 'magit-insert-tags-header)))))
</pre></div>
<dl>
<dt>Función: <samp>magit-disable-section-inserter</samp> <i>fn</i></dt>
<dd>Esta función desactiva el inserctor de secciones FN en el repositorio actual. Sólo está pensada para su uso en <samp>.dir-locals.el</samp> y <samp>.dir-locals-2.el</samp>.</dd>
</dl>
<p>
Si desea aplicar la misma configuración a varios repositorios, pero no a todos, entonces mantener sincronizados los archivos de configuración locales de los repositorios se
convertiría rápidamente en una molestia. Para evitarlo, puede crear ficheros de configuración para ciertas clases de repositorios (por ejemplo, "repositorios enormes") y luego
incluir esos ficheros en los ficheros de configuración por repositorio. Por ejemplo:
</p>
<ul>
<li>
<div class="pre"><pre>
/ruta/al/enorme/repo/.git/config
[include]
path = /path/to/huge-gitconfig
</pre></div>
</li>
<li>
<div class="pre"><pre>
/ruta/al/enorme-gitconfig
[status]
showUntrackedFiles = no
</pre></div>
</li>
<li>
<div class="pre"><pre>
$HOME/.emacs.d/init.el
(dir-locals-set-class-variables 'huge-git-repository
'((nil . ((magit-refresh-buffers . nil)))))
(dir-locals-set-directory-class
&quot;/ruta/al/enorme/repo/&quot; 'huge-git-repository)
</pre></div>
</li>
</ul>
<h2 id="configuraciones_esenciales">Configuraciones Esenciales<a href="#configuraciones_esenciales"></a></h2>
<p>En las tres secciones siguientes se enumeran y analizan diversas variables que muchos Usuarios podrían querer personalizar, por motivos de seguridad y/o rendimiento.</p>
<h3 id="seguridad">Seguridad<a href="#seguridad"></a></h3>
<p>Esta sección discute varias variables que podría querer cambiar (o no cambiar) por razones de seguridad.</p>
<p>
Git mantiene los cambios <b>confirmados</b> el tiempo suficiente para que los Usuarios puedan recuperar los cambios que han sido borrados accidentalmente. No hace lo mismo con los
cambios <b>no confirmados</b> en el árbol de trabajo y ni siquiera en el índice (el área de preparación). Debido a que Magit hace que sea tan fácil modificar cambios no confirmados,
también hace que sea fácil dispararse en el pie en el proceso. Por esa razón, Magit proporciona tres modos globales que guardan los <b>archivos rastreados</b> en referencias de
trabajo en curso después o antes de ciertas acciones. Ver Modos de borrado.
</p>
<p>
Estos modos no están activados por defecto por cuestiones de rendimiento. En cambio, muchos comandos potencialmente destructivos requieren confirmación cada vez que se usan. En
muchos casos esto puede desactivarse añadiendo un símbolo a <samp>magit-no-confirm</samp> (ver <a href="#finalizacion_y_confirmacion" onclick="c('finalizacion_y_confirmacion')">Finalización y confirmación</a>). Si activa los distintos modos wip, debería añadir
<samp>safe-with-wip</samp> a esta lista.
</p>
<p>
Del mismo modo, no es necesario pedir confirmación antes de mover un archivo a la papelera del sistema: si ha enviado un archivo a la papelera por error, puede recuperarlo desde
allí. La opción <samp>magit-delete-by-moving-to-trash</samp> controla si se usará la papelera del sistema, que es el caso por defecto. Sin embargo, la papelera no es un elemento de
<samp>magit-no-confirm</samp>, puede que quiera cambiarlo.
</p>
<p>
Por defecto, los buffers que visitan ficheros se revierten automáticamente cuando el fichero visitado cambia en el disco. Esto no es tan arriesgado como podría parecer, pero para
tomar una decisión informada debería ver <a href="#@GENDOC:riesgo_de_revertir_automaticamente@" onclick="c('@GENDOC:riesgo_de_revertir_automaticamente@')">Riesgo de revertir automáticamente</a>.
</p>
<h3 id="rendimiento">Rendimiento<a href="#rendimiento"></a></h3>
<p>
Después de que Magit haya ejecutado <samp>git</samp> for side-effects, también refresca el buffer actual de Magit y el respectivo buffer de estado. Esto es necesario porque, de lo
contrario, podría mostrarse información obsoleta sin que el usuario se diera cuenta. Los buffers Magit se actualizan recreando su contenido desde cero, lo que hace que la
actualización sea más sencilla y menos propensa a errores, pero también más costosa. Mantener la simplicidad y recrear todo desde cero es una vieja decisión de diseño y apartarse de
ella requerirá una refactorización importante.
</p>
<p>
Planeo hacerlo a tiempo para la próxima gran versión. También tengo la intención de crear logs y diffs de forma asíncrona, lo que también debería ayudar mucho, pero también requiere
una refactorización importante.
</p>
<p>
Mientras tanto, puede decirle a Magit que sólo actualice automáticamente el búfer actual de Magit, pero no el búfer de estado. Si hace eso, el búfer de estado sólo se actualizará
automáticamente si es el búfer actual.
</p>
<div class="pre"><pre>
(setq magit-refresh-status-buffer nil)
</pre></div>
<p>
Debería comprobar si algún paquete de terceros ha añadido algo a <samp>magit-refresh-buffer-hook</samp>, <samp>magit-status-refresh-hook</samp>, <samp>magit-pre-refresh-hook</samp> y
<samp>magit-post-refresh-hook</samp>. Si es así, compruebe si esas adiciones afectan significativamente al rendimiento.
</p>
<p>
A Magit se le puede indicar que refresque los buffers de forma verbosa usando <kbd>Alt</kbd>-<kbd>x</kbd> <samp>magit-toggle-verbose-refresh</samp> (<samp>M-x
magit-toggle-verbose-refresh</samp>) Activar esta opción ayuda a averiguar qué secciones son cuellos de botella. La salida adicional se encuentra en el búfer <samp>*Messages*</samp>.
</p>
<p>
Magit también revierte buffers para archivos visitados localizados dentro del repositorio actual cuando el archivo visitado cambia en disco. Esto se implementa sobre el <samp>modo
auto-revert</samp> de la librería integrada <samp>autorevert</samp>. Para averiguar si esto afecta al rendimiento, compruebe si el rendimiento es significativamente peor, cuando existen
muchos buffers y/o cuando algunos buffers visitan ficheros usando TRAMP. Si es así, entonces esto debería ayudar.
</p>
<div class="pre"><pre>
(setq auto-revert-buffer-list-filter
'magit-auto-revert-repository-buffer-p)
</pre></div>
<p>Para enfoques alternativos, consulte <a href="#@GENDOC:reversion_automatica_de_buferes_que_visitan_archivos@" onclick="c('@GENDOC:reversion_automatica_de_buferes_que_visitan_archivos@')">Reversión automática de búferes que visitan archivos</a>.</p>
<p>
Si ha activado alguna función que está desactivada por defecto, debería comprobar si afecta al rendimiento de forma significativa. Es probable que no estuvieran habilitadas por
defecto porque se sabe que reducen el rendimiento al menos en repositorios grandes.
</p>
<p>
Si el rendimiento sólo es lento dentro de ciertos repositorios inusualmente grandes, puede que quiera deshabilitar ciertas características sólo por repositorio o por clase de
repositorio. Vea <a href="#configuracion_por_repositorio" onclick="c('configuracion_por_repositorio')">Configuración por repositorio</a>. Por ejemplo, lleva mucho tiempo determinar la etiqueta siguiente y la actual en repositorios con un número excepcional de
etiquetas. Por lo tanto, sería una buena idea deshabilitar <samp>magit-insert-tags-headers</samp>, como se explica en el nodo mencionado.
</p>
<h4 id="rendimiento_de_los_registros">Rendimiento de los registros<a href="#rendimiento_de_los_registros"></a></h4>
<p>
Al mostrar logs, Magit limita el número de confirmaciones mostradas inicialmente con la esperanza de que esto evite trabajo innecesario. Cuando se usa <samp>--graph</samp>,
desafortunadamente esto no tiene el efecto deseado para historiales grandes. Junio, el mantenedor de Git, dijo en la lista de correo de git (<a href=" https://www.spinics.net/lists/git/msg232230.html" target="new">https://www.spinics.net/lists/git/msg232230.html</a>): "<samp>--graph</samp> quiere calcular todo el historial y el max-count sólo afecta a
la fase de salida después de que <samp>--graph</samp> haga su cálculo".
</p>
<p>
En otras palabras, no es que Git sea lento a la hora de mostrar las diferencias, o que Magit sea lento a la hora de analizar la salida - el problema es que Git primero sale a fumar.
</p>
<p>
De hecho, solucionamos este problema limitando el número de confirmaciones no sólo mediante <samp>-&lt;N&gt;</samp>, sino también usando un rango. Pero desafortunadamente esto no siempre es
posible.
</p>
<p>Cuando se muestran más de unos pocos miles de confirmaciones, el uso de <samp>--graph</samp> puede ralentizar las cosas.</p>
<p>
Usar <samp>--color --graph</samp> es incluso más lento. Magit usa código que es parte de Emacs para convertir caracteres de control en caras. Ese código es bastante lento y esto se nota
bastante cuando se muestra un log con muchas ramas y fusiones. Por esta razón <samp>--color</samp> ya no está activado por defecto. Considere dejarlo así.
</p>
<h4 id="rendimiento_de_los_diff">Rendimiento de los Diff<a href="#rendimiento_de_los_diff"></a></h4>
<p>
Si los diffs son lentos, entonces considere desactivar algunas características opcionales referidas a ellos estableciendo todas o algunas de las siguientes variables a nil:
<samp>magit-diff-highlight-indentation</samp>, <samp>magit-diff-highlight-trailing</samp>, <samp>magit-diff-paint-whitespace</samp>, <samp>magit-diff-highlight-hunk-body</samp>, y
<samp>magit-diff-refine-hunk</samp>.
</p>
<p>
Cuando se muestra una confirmación en lugar de un diff arbitrario, se muestra información adicional. Calcular esta información puede ser bastante costoso dadas ciertas
circunstancias. Si mirar una confirmación usando el modo <samp>magit-revision</samp> lleva considerablemente más tiempo que mirar la misma confirmación en el modo <samp>magit-diff</samp>,
considere establecer <samp>magit-revision-insert-related-refs</samp> a <samp>nil</samp>.
</p>
<p>
Si se encuentra a menudo con diffs que contienen ficheros borrados, puede activar el argumento <samp>--irreversible-delete</samp>. Si lo hace, los diffs seguirán mostrando que un fichero
ha sido borrado, pero sin mostrar también todo el contenido borrado del fichero. Este argumento no está disponible por defecto, vea <a href="https://magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html#Enabling-and-Disabling-Suffixes" target="new">Activación y desactivación (transitoria) de sufijos</a>. Una vez que lo haya hecho
debería habilitarlo y guardar esa configuración, vea <a href="https://magit.vc/manual/transient/Saving-Values.html#Saving-Values" target="new">(transitorio)Guardar valores</a>. Debería hacer esto tanto
en la ventana emergente diff (<samp>d</samp>) como en la ventana emergente diff refresh (<samp>D</samp>).
</p>
<h4 id="rendimiento_del_bufer_de_referencia_refs">Rendimiento del búfer de referencia (Refs)<a href="#rendimiento_del_bufer_de_referencia_refs"></a></h4>
<p>
Cuando la actualización del "búfer de referencias" es lenta, suele deberse a que se están mostrando varios cientos de referencias. La mejor manera de solucionar esto es mostrar menos
referencias, obviamente.
</p>
<p>Si no le interesa ver la lista de etiquetas, o le interesa muy poco, empiece por no mostrarlas:</p>
<div class="pre"><pre>
(remove-hook 'magit-refs-sections-hook 'magit-insert-tags)
</pre></div>
<p>A continuación, asegúrese de que todas las ramas remotas de la lista existen realmente. Para ello, elimine las ramas que ya no existan con <samp>f-pa</samp>.</p>
<h4 id="rendimiento_de_las_confirmaciones">Rendimiento de las confirmaciones<a href="#rendimiento_de_las_confirmaciones"></a></h4>
<p>
Cuando inicia una confirmación, Magit por defecto muestra automáticamente un diff de los cambios que está a punto de confirmar. Para confirmaciones grandes esto puede llevar mucho
tiempo, lo que es especialmente molesto cuando está confirmando grandes cantidades de datos generados que en realidad no tiene intención de inspeccionar antes de confirmar. Este
comportamiento puede desactivarse usando:
</p>
<div class="pre"><pre>
(remove-hook 'server-switch-hook 'magit-commit-diff)
(remove-hook 'with-editor-filter-visit-hook 'magit-commit-diff)
</pre></div>
<p>
A continuación, puede escribir <kbd>Ctrl</kbd>-<kbd>c</kbd> <kbd>Ctrl</kbd>-<kbd>d</kbd> (<samp>C-c C-d</samp>) para mostrar el diff cuando realmente quiera verlo, pero sólo entonces.
Alternativamente, puede dejar el gancho y simplemente teclear <kbd>Ctrl</kbd>-<kbd>g</kbd> (<samp>C-g</samp>) en aquellos casos en los que se tarde demasiado en generar el diff. Si hace
eso, acabará con un búfer de diferencias roto, pero hacerlo de esta forma tiene la ventaja de que normalmente puede ver la diferencia, lo que es útil porque aumenta las
probabilidades de que detecte problemas potenciales.
</p>
<h5 id="rendimiento_de_microsoft_window">Rendimiento de Microsoft Window<a href="#rendimiento_de_microsoft_window"></a></h5>
<p>
Para actualizar el búfer de estado, <samp>git</samp> tiene que ejecutarse unas cuantas docenas de veces. Esto es problemático en Microsoft Windows, porque el sistema operativo es
excepcionalmente lento a la hora de iniciar procesos. Lamentablemente, este es un problema que sólo puede ser solucionado por el propio Microsoft, y no parecen estar particularmente
interesados en hacerlo.
</p>
<p>
Además del problema de los subprocesos, existen otros problemas de rendimiento específicos de Windows. Algunos de ellos tienen solución. Los mantenedores de "Git para Windows"
intentan mejorar el rendimiento en Windows. Utiliza siempre la última versión para beneficiarte de los últimos ajustes de rendimiento. Magit también intenta solucionar algunos
problemas específicos de Windows.
</p>
<p>Según algunas fuentes, configurar las siguientes variables de Git también puede ayudar.</p>
<div class="pre"><pre>
git config --global core.preloadindex true # default since v2.1
git config --global core.fscache true # default since v2.8
git config --global gc.auto 256
</pre></div>
<p>También debería comprobar si un programa antivirus está afectando al rendimiento.</p>
<h5 id="rendimiento_macos">Rendimiento MacOS<a href="#rendimiento_macos"></a></h5>
<p>
Antes de Emacs 26.1 los procesos hijo se creaban usando fork en macOS. Esto copiaba innecesariamente recursos GUI, lo cual es costoso. El resultado era que la bifurcación tardaba
unas 30 veces más en Darwin que en Linux, y como Magit inicia muchos procesos git eso marcaba bastante la diferencia.
</p>
<p>
Así que asegúrese de que está usando al menos Emacs 26.1, en cuyo caso se usará el vfork más rápido. (La creación de procesos hijo sigue tardando el doble en Darwin que en Linux).
Vea <a href="https://lists.gnu.org/archive/html/bug-gnu-emacs/2017-04/msg00201.html" target="new">aquí</a> para más información.
</p>
<p>
Además, <samp>git</samp> instalado desde un gestor de paquetes como <samp>brew</samp> o <samp>nix</samp> parece ser más lento que el ejecutable nativo. Compare el ejecutable de git que está
corrientdo con el que está en <samp>/usr/bin/git</samp>, y si nota una diferencia notable intente usar este último como <samp>magit-git-executable</samp>.
</p>
<h3 id="atajos_de_teclado_globales">Atajos de teclado Globales<a href="#atajos_de_teclado_globales"></a></h3>
<dl>
<dt>Opción de Usuario: <samp>magit-define-global-key-bindings</samp></dt>
<dd>
Esta opción controla qué conjunto de combinaciones de teclas de Magit, si las hay, pueden añadirse al mapa de teclas global, incluso antes de que Magit se utilice por primera vez
en la sesión actual de Emacs.
<ul>
<li>Si el valor es <samp>nil</samp>, no se añade ningún enlace.</li>
<li>
Si es por defecto (<samp>default</samp>), quizá añadir:<br>
<samp>C-x g magit-status</samp><br>
<samp>C-x M-g magit-dispatch</samp><br>
<samp>C-c M-g magit-file-dispatch</samp>
</li>
<li>
Si es recomendado (<samp>recommended</samp>), quizá añadir:<br>
<samp>C-x g magit-status</samp><br>
<samp>C-c g magit-dispatch</samp><br>
<samp>C-c f magit-file-dispatch</samp><br><br>
Estos enlaces son muy recomendables, pero no podemos usarlos por defecto, porque el espacio de nombres <samp>C-c &lt;LETTER&gt;</samp> está estrictamente reservado para enlaces
añadidos por el usuario (ver <a href="#@GENDOC:elisp_convenciones_de_enlace_de_claves@" onclick="c('@GENDOC:elisp_convenciones_de_enlace_de_claves@')">(elisp)Convenciones de enlace de claves</a>).
</li>
</ul>
</dd>
<dd>
Las vinculaciones del conjunto elegido pueden añadirse cuando se ejecuta <samp>after-init-hook</samp>. Cada vinculación se añade si, y sólo si, en ese momento ninguna otra tecla está
vinculada al mismo comando, y ningún otro comando está vinculado a la misma tecla. En otras palabras, intentamos evitar añadir vinculaciones innecesarias, así como vinculaciones
que entren en conflicto con otras vinculaciones.
</dd>
<dd>
La adición de estos enlaces se retrasa hasta después de que se ejecute <samp>init-hook</samp> para permitir a los usuarios establecer la variable en cualquier parte de su archivo
init (sin tener que asegurarse de hacerlo antes de que magit se cargue o autocargue) y para aumentar la probabilidad de que todos los enlaces de usuario potencialmente
conflictivos ya se hayan añadido.
</dd>
<dd>
Para establecer esta variable use <samp>setq</samp> o la interfaz Custom. No utilice la función <samp>customize-set-variable</samp> porque esto haría que Magit se cargara inmediatamente,
cuando se evalúa ese formulario (esto difiere de <samp>custom-set-variables</samp>, que no carga las librerías que definen las variables personalizadas).
</dd>
<dd>Establecer esta variable no tiene efecto si ya se ha ejecutado <samp>after-init-hook</samp>.</dd>
</dl><br style="clear:both;"><label class="btn prev" accesskey="p" for="_otros" title="Otros">Anterior</label><label class="btn next" accesskey="n" for="_plumbing" title="Plumbing">Siguiente</label></div>
<div class="page" rel="plumbing"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Plumbing</li></ul><hr></div>
<h1 id="plumbing">Plumbing<a href="#plumbing"></a></h1>
<p>
Las siguientes secciones describen cómo usar varias de las abstracciones del núcleo de Magit para extender el propio Magit o implementar una extensión independiente.
</p>
<p>
Algunas de las características de bajo nivel usadas por Magit han sido divididas en bibliotecas/paquetes separados, para que puedan ser usadas por otros paquetes, sin tener que
depender de Magit. Ver <a href="https://magit.vc/manual/with-editor/index.html#Top" target="new">(with-editor)Top</a> para información sobre with-editor. transient aún no tiene manual.
</p>
<p>
Si está intentando encontrar una clave sin usar que pueda vincular a un comando proporcionado por su propia extensión Magit, consulte <a href="https://github.com/magit/magit/wiki/Plugin-Dispatch-Key-Registry" target="new">https://github.com/magit/magit/wiki/Plugin-Dispatch-Key-Registry</a>.
</p>
<h2 id="llamar_a_git">Llamar a Git<a href="#llamar_a_git"></a></h2>
<p>
Magit proporciona muchas funciones especializadas para llamar a Git. Todas estas funciones están definidas en <samp>magit-git.el</samp> o <samp>magit-process.el</samp> y tienen uno de los
prefijos <samp>magit-run-</samp>, <samp>magit-call-</samp>, <samp>magit-start-</samp>, o <samp>magit-git-</samp> (que también se usa para otras cosas).
</p>
<p>
Todas estas funciones aceptan un número indefinido de argumentos, que son cadenas que especifican argumentos de línea de comandos para Git (o en algunos casos un ejecutable
arbitrario). Estos argumentos son aplanados antes de ser pasados al ejecutable; por lo que en lugar de cadenas también pueden ser listas de cadenas y los argumentos que son
<samp>nil</samp> (nulos) se descartan silenciosamente. Algunas de estas funciones también requieren un único argumento obligatorio antes de estos argumentos de línea de comandos.
</p>
<p>
A grandes rasgos, estas funciones ejecutan Git para obtener algún valor o por efectos secundarios. Las funciones que devuelven un valor son útiles para recoger la información
necesaria para rellenar un búfer Magit, mientras que las otras se usan para implementar comandos Magit.
</p>
<p>
Las funciones del grupo de <i>sólo-valor</i> siempre se ejecutan de forma sincrónica y nunca activan una actualización. Las funciones del grupo de efectos secundarios pueden
dividirse a su vez en subgrupos dependiendo de si ejecutan Git de forma sincrónica o asincrónica, y dependiendo de si activan una actualización cuando el ejecutable ha finalizado.
</p>
<h3 id="obtener_un_valor_de_git">Obtener un valor de Git<a href="#obtener_un_valor_de_git"></a></h3>
<p>
Estas funciones ejecutan Git para obtener un valor, un estado de salida o una salida. Por supuesto, también podría utilizarlas para ejecutar comandos Git que tienen efectos
secundarios, pero eso debería evitarse.
</p>
<dl>
<dt>Función: <samp>magit-git-exit-code</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve código de salida pertinente.
</dd>
<dt>Función: <samp>magit-git-success</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve <samp>t</samp> si el código de salida es <samp>0</samp>, <samp>nil</samp> en caso contrario.</dd>
<dt>Función: <samp>magit-git-failure</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve <samp>t</samp> si el código de salida es <samp>1</samp>, <samp>nil</samp> en caso contrario.</dd>
<dt>Función: <samp>magit-git-true</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve <samp>t</samp> si la primera línea impresa por git es la cadena "true", <samp>nil</samp> en caso contrario.</dd>
<dt>Función: <samp>magit-git-false</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve <samp>t</samp> si la primera línea impresa por git es la cadena "false", <samp>nil</samp> en caso contrario.</dd>
<dt>Función: <samp>magit-git-insert</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> e inserta su salida en el punto.</dd>
<dt>Función: <samp>magit-git-string</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve la primera línea de su salida. Si no hay salida o si comienza con un carácter de nueva línea, devuelve <samp>nil</samp>.</dd>
<dt>Función: <samp>magit-git-lines</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve su salida como una lista de líneas. Las líneas vacías en cualquier parte de la salida se omiten.</dd>
<dt>Función: <samp>magit-git-lines</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve su salida como una lista de líneas. Las líneas vacías en cualquier parte de la salida se omiten.</dd>
<dt>Función: <samp>magit-git-items</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Ejecuta git con <i>ARGUMENTOS</i> y devuelve su salida separada por nulos como una lista. Los elementos vacíos en cualquier parte de la salida se omiten.</dd>
<dd>
Si el valor de la opción <samp>magit-git-debug</samp> es distinto de cero y git sale con un estado de salida distinto de cero, advierte de ello en el área de eco y añade una sección
conteniendo el error estándar de git en el buffer de proceso del repositorio actual.
</dd>
<dt>Función: <samp>magit-process-git</samp> <i>DESTINO &resto de ARGUMENTOS</i></dt>
<dd>
Llama a Git sincrónicamente en un proceso separado, devolviendo su código de salida. DESTINO especifica como manejar la salida, como para <samp>call-process</samp>, excepto que los
manejadores de archivos son soportados. Activa la opción "noglob" de Cygwin durante la llamada y asegura la conversión eol de unix.
</dd>
<dt>Función: <samp>magit-process-file</samp> <i>procesos & visualización opcional del búfer de entrada &resto de ARGUMENTOS</i></dt>
<dd>
Procesa archivos de forma sincrónica en un proceso separado. Idéntico a <samp>process-file</samp> pero habilita temporalmente la opción "noglob" de Cygwin durante la llamada y
asegura la conversión eol de unix.
</dd>
</dl>
<p>
Si se produce un fallo al usar una de las funciones anteriores, suele deberse a un error -posiblemente- en la escritura, es decir, al uso de un argumento que en realidad no está
soportado. Estos errores no se suelen notificar, pero cuando se producen debemos ser capaces de depurarlos.
</p>
<dl>
<dt>Función de Usuario: <samp>magit-git-debug</samp></dt>
<dd>
Si se informa de los errores que ocurren al usar <samp>magit-git-insert</samp>, <samp>magit-git-string</samp>, <samp>magit-git-lines</samp>, o <samp>magit-git-items</samp>. Esto no genera un
error. En su lugar, se muestra un mensaje en el área de eco, y el error estándar de git se inserta en una nueva sección en el buffer de proceso del repositorio actual.
</dd>
<dt>Función: <samp>magit-git-str</samp> <i>& resto de ARGUMENTOS</i></dt>
<dd>
Esta es una variante de <samp>magit-git-string</samp> que ignora la opción <samp>magit-git-debug</samp>. Está pensada principalmente para ser usada mientras se manejan errores en
funciones que <b></b> respetan esa opción. Usar una función de este tipo mientras se maneja un error podría causar otro error más y, por tanto, llevar a una recursión infinita.
Probablemente nunca necesitará usar esta función.
</dd>
</dl>
<h3 id="llamar_a_git_para_que_surta_efecto">Llamar a Git para que surta efecto<a href="#llamar_a_git_para_que_surta_efecto"></a></h3>
<p>Estas funciones se usan para ejecutar git y producir algún efecto. La mayoría de los comandos Magit que realmente ejecutan git lo hacen usando una función de este tipo.</p>
<p>
Como no necesitamos consumir la salida de git cuando usamos estas funciones, su salida se registra en un buffer por repositorio, que puede mostrarse usando <samp>$</samp> desde un buffer
Magit o <samp>M-x magit-process</samp> en otro lugar.
</p>
<p>
Estas funciones pueden tener efecto de dos formas distintas. En primer lugar, ejecutar git puede cambiar algo, es decir, crear o empujar una nueva confirmación. En segundo lugar, ese
cambio puede requerir que los buffers de Magit se refresquen para reflejar el cambio de estado del repositorio. Pero refrescar no siempre es deseable, así que sólo algunas de estas
funciones realizan tal refresco después de que git haya vuelto.
</p>
<p>
A veces es útil ejecutar git de forma asíncrona. Por ejemplo, cuando el Usuario acaba de iniciar un push, entonces no hay razón para hacerle esperar hasta que se haya completado. En
otros casos tiene sentido esperar a que git se complete antes de dejar que el usuario haga otra cosa. Por ejemplo, después de poner en escena un cambio, es útil esperar hasta después
de la actualización, ya que también se mueve automáticamente al siguiente cambio.
</p>
<dl>
<dt>Función: <samp>magit-call-git</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Llama a git de forma sincrónica con <i>ARGUMENTOS</i>.</dd>
<dt>Función: <samp>magit-call-process</samp> <i>PROGRAMA &resto de ARGUMENTOS</i></dt>
<dd>Llama a <i>PROGRAMA</i> de forma sincrónica con <i>ARGUMENTOS</i>.</dd>
<dt>Función: <samp>magit-run-git-</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Llama a git de forma sincrónica con <i>ARGUMENTOS</i> y luego se actualiza.</dd>
<dt>Función: <samp>magit-run-git-with-input</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Llama a git sincrónicamente con <i>ARGUMENTOS</i> y envía el contenido del buffer actual a la entrada estándar.</dd>
<dd>
Si el directorio por defecto del buffer actual está en un sistema de archivos remoto, esta función en realidad ejecuta git de forma asíncrona. No obstante, espera a que el
proceso regrese, por lo que la función en sí es sincrónica.
</dd>
<dt>Función: <samp>magit-git</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Llama a git sincrónicamente con <i>ARGUMENTOS</i> sólo para efectos secundarios. Esta función no actualiza el búfer.</dd>
<dt>Función: <samp>magit-git-wash</samp> <i>lavadora &resto de ARGUMENTOS</i></dt>
<dd>
Ejecuta Git con <i>ARGUMENTOS</i>, insertando la salida limpia (lavada) en el punto. En realidad primero inserta esta salida en el punto. Si no hay salida llama a
<samp>magit-cancel-section</samp>. Si no, reduce temporalmente el buffer al texto insertado, sitúese al principio y llame a la función <i>LAVADORA</i> con <i>ARGUMENTOS</i> como
único argumento.
</dd>
</dl>
<p>Y ahora las variantes asíncronas.</p>
<dl>
<dt>Función: <samp>magit-run-git-async</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Inicia Git, prepara la actualización y devuelve el objeto de proceso. <i>ARGUMENTOS</i> se aplana y luego se usa como argumentos para Git.</dd>
<dd>Muestra los argumentos de la línea de comandos en el área de eco.</dd>
<dd>
Tras el retorno de Git se refrescan algunos buffers: el buffer que estaba activo cuando se llamó a esta función (si es un buffer Magit y sigue vivo), así como el respectivo
buffer de estado Magit. Los búferes no modificados que visitan archivos que son rastreados en el repositorio actual son revertidos si <samp>magit-revert-buffers</samp> es distinto de
<samp>nil</samp>.
</dd>
<dt>Función: <samp>magit-run-git-with-editor</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>
Exporta GIT_<i>EDITOR</i> e inicia Git. También prepara para refrescar y devuelve el objeto de proceso. <i>ARGUMENTOS</i> se aplana y luego se utiliza como argumentos para
Git.
</dd>
<dd>Muestra los argumentos de la línea de comandos en el área de eco.</dd>
<dd>
Tras el retorno de Git se refrescan algunos buffers: el buffer que estaba activo cuando se llamó a esta función (si es un buffer Magit y sigue vivo), así como el respectivo
buffer de estado Magit.
</dd>
<dt>Función: <samp>magit-start-git</samp> <i>entrada &resto de ARGUMENTOS</i></dt>
<dd>Inicia Git, prepara la actualización y devuelve el objeto del proceso.</dd>
<dd>Si <i>entrada</i> no es nulo, tiene que ser un buffer o el nombre de un buffer existente. El contenido del búfer se convierte en la entrada estándar del proceso.</dd>
<dd>
La opción <samp>magit-git-executable</samp> especifica el ejecutable de Git y la opción <samp>magit-git-global-arguments</samp> especifica argumentos constantes. Los argumentos restantes
<i>ARGUMENTOS</i> especifican argumentos para Git. Se aplanan antes de su uso.
</dd>
<dd>
Después de que Git responda, algunos búferes se actualizan: el búfer que estaba activo cuando se llamó a esta función (si es un búfer Magit y sigue activo), así como el búfer de
estado Magit correspondiente. Los búferes no modificados que visitan archivos que son rastreados en el repositorio actual son revertidos si <samp>magit-revert-buffers</samp> es
distinto de <samp>nil</samp>.
</dd>
<dt>Función: <samp>magit-start-process</samp> <i>entrada &resto de ARGUMENTOS</i></dt>
<dd>Inicia <i>PROGRAMA</i> (o <i>proceso</i>), prepara para refrescar, y devuelve el objeto de proceso.</dd>
<dd>
Si el argumento opcional <i>ENTRADA</i> no es nulo, tiene que ser un buffer o el nombre de un buffer existente. El contenido del buffer se convierte en la entrada estándar del
proceso.
</dd>
<dd>
El proceso se inicia usando <samp>start-file-process</samp> y luego se configura para usar el centinela magit-process-sentinel y el <samp>filtro magit-process-filter</samp>. La
información requerida por estas funciones se almacena en el objeto proceso. Cuando esta función regresa, el proceso aún no ha comenzado a ejecutarse, por lo que es posible anular
el centinela y el filtro.
</dd>
<dd>
Cuando el proceso regresa, <samp>magit-process-sentinel</samp> actualiza el búfer que estaba activo cuando se llamó a <samp>magit-start-process</samp> (si es un búfer Magit y sigue
vivo), así como el búfer de estado Magit correspondiente. Los búferes no modificados que visitan archivos que son rastreados en el repositorio actual son revertidos si
<samp>magit-revert-buffers</samp> es distinto de <samp>nil</samp>.
</dd>
<dt>Variable: <samp>magit-this-process</samp></dt>
<dd>El proceso hijo que está a punto de iniciarse. Puede utilizarse para cambiar el filtro y el centinela.</dd>
<dt>Variable: <samp>magit-process-raise-error</samp></dt>
<dd>Cuando es distinto de nil, <samp>magit-process-sentinel</samp> genera un error si git sale con un estado de salida distinto de cero. Para propósitos de depuración.</dd>
</dl>
<h2 id="seccion_plumbing">Sección Plumbing<a href="#seccion_plumbing"></a></h2>
<h3 id="creacion_de_secciones">Creación de Secciones<a href="#creacion_de_secciones"></a></h3>
<dl>
<dt>Función: <samp>magit-insert-section</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Inserta una sección en el punto.</dd>
<dd>
TYPE es el tipo de sección, un símbolo. Muchos comandos que actúan sobre la sección actual se comportan de forma diferente dependiendo de ese tipo. Además, si existe una variable
<samp>magit-TYPE-section-map</samp>, se usa como el mapa de teclado de todas las propiedades de texto pertenecientes a la sección (pero esto puede sobrescribirse en las
subsecciones). TYPE también puede tener la forma (eval FORM) en cuyo caso FORM evalúa en tiempo de ejecución.
</dd>
<dd>VALUE (VALOR, es opcional) es el valor de la sección, normalmente una cadena que se requiere cuando se actúa sobre la sección.</dd>
<dd>
Cuando HIDE (OCULTO, es opcional) es distinto de <samp>nil</samp>, colapsa el cuerpo de la sección por defecto, es decir, cuando se crea la sección por primera vez, pero no cuando se
refresca el buffer. En caso contrario, se expande por defecto. Esto puede sobrescribirse utilizando <samp>magit-section-set-visibility-hook</samp>. Cuando se vuelve a crear una
sección durante una actualización, se hereda la visibilidad del predecesor y se ignora HIDE (pero se sigue respetando el gancho).
</dd>
<dd>
BODY (CUERPO) es cualquier número de formularios que realmente insertan el encabezado y el cuerpo de la sección. NAME (NOMBRE, opcional), si se especifica, tiene que ser un
símbolo, que luego se vincula a la estructura de la sección que se inserta.
</dd>
<dd>
Antes de que se evalúe BODY el inicio del objeto sección se establece en el valor de punto y después de que se evalúe BODY su final se establece en el nuevo valor de punto; BODY
es responsable de mover el punto hacia adelante.
</dd>
<dd>
Si dentro de BODY resulta que la sección está vacía, entonces se puede usar <samp>magit-cancel-section</samp> para abortar y eliminar todo rastro de la sección parcialmente
insertada. Esto puede ocurrir cuando se crea una sección limpiando la salida de Git y Git en realidad no ha sacado nada esta vez.
</dd>
<dt>Función: <samp>magit-insert-heading</samp> <i>&resto de ARGUMENTOS</i></dt>
<dd>Inserta el encabezado de la sección que se está insertando actualmente.</dd>
<dd>Esta función sólo debe usarse dentro de <samp>magit-insert-section</samp>.</dd>
<dd>
Cuando se llama sin <i>ARGUMENTOS</i>, sólo establece la ranura de contenido del objeto (<samp>content</samp>) que representa la sección que se está insertando en un marcador en el
punto. La sección sólo debe contener una única línea cuando esta función se usa así.
</dd>
<dd>
Cuando se llama con <i>ARUGMENTOS</i>, que tienen que ser cadenas, entonces inserta esas cadenas en el punto. La sección no debe contener ningún texto antes de que esto ocurra y
después debe contener sólo una línea. Si la propiedad face se establece en cualquier lugar dentro de cualquiera de estas cadenas, entonces insértalas todas sin cambios. De lo
contrario, usa la cara <samp>magit-section-heading</samp> para todo el texto insertado.
</dd>
<dd>
La propiedad <samp>content</samp> de la estructura de sección es el final del encabezado (que dura de <samp>start</samp> hasta <samp>content</samp> (desde el inicio hasta el contenido)) y el
principio del cuerpo (que dura desde <samp>content</samp> hasta <samp>end</samp> (desde el contenido hasta el final)). Si el valor de content es <samp>nil</samp>, entonces la sección no tiene
encabezado y su cuerpo no se puede contraer. Si una sección tiene un encabezado, su altura debe ser exactamente de una línea, incluyendo un carácter de nueva línea al final. Esto
no es obligatorio; Usted es responsable de hacerlo correctamente. La única excepción es que esta función inserta un carácter de nueva línea si es necesario.
</dd>
<dt>Función: <samp>magit-cancel-section</samp></dt>
<dd>
Cancela la sección que se está insertando. Esto sale de la llamada más interna a <samp>magit-insert-section</samp> y elimina todos los rastros de lo que ya ha sucedido dentro de esa
llamada.
</dd>
<dt>Función: <samp>magit-define-section-jumper</samp> <i>TÍTULO SYM & VALOR OPCIONAL</i></dt>
<dd>Define una función interactiva para ir a la sección SYM. TÍTULO es el título mostrado de la sección.</dd>
</dl>
<h3 id="seleccion_de_seccion">Selección de Sección<a href="#seleccion_de_seccion"></a></h3>
<dl>
<dt>Función: <samp>magit-current-section</samp></dt>
<dd>Devuelve la sección en el punto.</dd>
<dt>Función: <samp>magit-region-section</samp> <i>& opcional MÚLTIPLE CONDICIÓN</i></dt>
<dd>Devuelve una lista de las secciones seleccionadas.</dd>
<dd>
Cuando la región está activa y constituye una selección de sección válida, devuelve una lista de todas las secciones seleccionadas. Este es el caso cuando la región comienza en
el encabezado de una sección y termina en el encabezado de la misma sección o en el de una sección hermana. Si la opción MÚLTIPLE no es nula, la región no puede comenzar y
terminar en la misma sección.
</dd>
<dd>
Si la selección no es válida, devuelve <samp>nil</samp>. En este caso, la mayoría de los comandos que pueden actuar sobre las secciones seleccionadas actuarán en su lugar sobre la
sección en el punto.
</dd>
<dd>
Cuando la región tiene el mismo aspecto que en cualquier otra memoria intermedia, la selección no es válida. Cuando la selección es válida entonces la región usa la cara
<samp>magit-section-highlight</samp>. Esto no se aplica a los diffs, donde las cosas se complican un poco más, pero incluso aquí, si la región tiene el aspecto habitual, no es una
selección válida para esta función.
</dd>
<dd>
Si la CONDICIÓN opcional no es nula, la selección no sólo tiene que ser válida, sino que además todas las secciones seleccionadas tienen que coincidir con la CONDICIÓN, o se
devolverá <samp>nil</samp>. Consulte <samp>magit-section-match</samp> para conocer las formas que puede adoptar CONDICIÓN.
</dd>
<dt>Función: <samp>magit-region-values</samp> & opcional CONDICIÓN MÚLTIPLE</dt>
<dd>Devuelve una lista de los valores de las secciones seleccionadas.</dd>
<dd>Devuelve los valores que a su vez serían devueltos por <samp>magit-region-sections</samp> (que ver).</dd>
</dl>
<h3 id="secciones_coincidentes">Secciones Coincidentes<a href="#secciones_coincidentes"></a></h3>
<dl>
<dt><kbd>Alt</kbd>-<kbd>x</kbd> <samp>magit-describe-section-briefly</samp> (<i><samp>M-x magit-describe-section-briefly</samp></i>)</dt>
<dd>Muestra información sobre la sección en el punto. Este comando está pensado para fines de depuración.</dd>
<dt>Función: <samp>magit-section-ident</samp> <i>SECCIÓN</i></dt>
<dd>Devuelve un identificador único para <i>SECCIÓN</i>. El valor devuelto tiene la forma ((TIPO . VALOR)...).</dd>
<dt>Función: <samp>magit-get-section</samp> <i>IDENTIFICACIÓN & opcional ROOT</i></dt>
<dd>Devuelve la sección identificada por <i>IDENTIFICACiÓN</i>. IDENTIFICACIÓN tiene que ser una lista como la devuelta por <samp>magit-section-ident</samp>.</dd>
<dt>Función: <samp>magit-section-match</samp> <i>CONDICIÓN & SECCIÓN opcional</i></dt>
<dd>
Devuelve <samp>t</samp> si <i>SECCIÓN</i> coincide con <i>CONDICIÓN</i>. SECCIÓN es por defecto la sección en el punto. Si no se especifica SECCIÓN y tampoco hay sección en el punto,
devuelve <samp>nil</samp>.
<ul>
<li>(<samp>CONDICIÓN...</samp>)<br>
coincide si alguna de las CONDICIONES coincide.
</li>
<li>
<samp>[CLASS...]</samp><br>
coincide si la clase de la sección es la misma que la primera CLASE o una subclase de ésta; la clase padre de la sección coincide con la segunda CLASE; y así
sucesivamente.
</li>
<li>
<samp>[* CLASS...]</samp><br>
coincide con las secciones que coinciden con <samp>[CLASS...]</samp> y también recursivamente con todas sus secciones hijas.
</li>
<li>
<samp>CLASS</samp><br>
coincide si la clase de la sección es la misma que CLASS o una subclase de ésta; independientemente de las clases de las secciones padre.
</li>
</ul>
</dd>
<dd>
Cada CLASE (CLASS) debe ser un símbolo de clase, identificando una clase que deriva de <samp>magit-section</samp>. Por compatibilidad con versiones anteriores, CLASS también puede
ser un "símbolo de tipo". Una sección coincide con un símbolo de este tipo si el valor de su ranura <samp>type</samp> es <samp>eq</samp>. Si un símbolo de tipo tiene una entrada en
<samp>magit--section-type-alist</samp>, entonces una sección también coincide con ese tipo si su clase es una subclase de la clase que corresponde al tipo según esa lista.
</dd>
<dd>
Tenga en cuenta que no es necesario especificar el linaje completo de la sección tal y como lo imprime <samp>magit-describe-section-briefly</samp>, a menos que, por supuesto, quiera
ser tan preciso.
</dd>
<dt>Función: <samp>magit-section-value-if</samp> <i>CONDICIÓN & SECCIÓN opcionl</i></dt>
<dd>
Si la SECCIÓN opcional no es nula, comprueba si coincide. Si no hay sección en el punto y SECCIÓN es nula, devuelve <samp>nil</samp>. Si la sección no coincide, también devuelve
<samp>nil</samp>.
</dd>
<dd>
Vea <samp>magit-section-match</samp> por las formas que puede adoptar la <i>CONDICIÓN</i>.
</dd>
<dt>Función: <samp>magit-section-case</samp> <i>& resto de CLÁUSULAS</i></dt>
<dd>Elija entre las cláusulas en el tipo de la sección en el punto.</dd>
<dd>
Cada <i>CLÁUSULA</i> tiene el aspecto siguiente (CONDICIÓN CUERPO...). El tipo de la sección se compara con cada CONDICIÓN; las formas del CUERPO de la primera coincidencia se
evalúan secuencialmente y se devuelve el valor de la última forma. Dentro de CUERPO el símbolo <samp>it</samp> está ligado a la sección en el punto. Si ninguna cláusula tiene éxito o
si no hay sección en el punto devuelve nil.
</dd>
<dd>
Véase <samp>magit-section-match</samp> para las formas que puede adoptar CONDICIÓN. Además, se permite una CONDICIÓN <samp>t</samp> en la cláusula final y coincide si ninguna otra
CONDICIÓN coincide, incluso si no hay sección en el punto.
</dd>
<dt>Variable: <samp>magit-root-section</samp></dt>
<dd>
La sección raíz del búfer actual. Todas las demás secciones son descendientes de esta sección. El valor de esta variable lo establece <samp>magit-insert-section</samp> y nunca debe
modificarse.
</dd>
</dl>
<p>Para las secciones relacionadas con diff existen algunas herramientas adicionales.</p>
<dl>
<dt>Función: <samp>magit-diff-type</samp> <I>&SECCIÓN opcional</i></dt>
<dd>Devuelve el tipo diff de SECCIÓN.</dd>
<dd>
El tipo devuelto es uno de los símbolos preparado (<samp>staged</samp>), sin preparar (<samp>unstaged</samp>), confirmado (<samp>committed</samp>) o sin definir (<samp>undefined</samp>). Este
tipo cumple una función similar a la del tipo general común a todas las secciones (que se almacena en la ranura <samp>type</samp> de la estructura <samp>magit-section</samp>
correspondiente), pero tiene en cuenta información adicional. Cuando SECCION no está relacionado con diffs y el búfer que la contiene tampoco es un búfer sólo para diffs,
devuelve <samp>nil</samp>.
</dd>
<dd>
Actualmente el tipo también puede ser <samp>tracked</samp> o <samp>untracked</samp> (archivos rastreados o sin rastrear), pero estos valores no se manejan explícitamente en todos los
lugares donde deberían. Una posible solución podría ser simplemente devolver nil aquí.
</dd>
<dd>
La sección tiene que ser una sección <samp>diff</samp> o <samp>hunk</samp>, o una sección cuyos hijos sean de tipo <samp>diff</samp>. Si SECCIÓN opcional es nil, devuelve el tipo diff de la
sección actual. En buffers cuyo modo principal es <samp>magit-diff-mode</samp>, SECCION se ignora y el tipo se determina por otros medios. En búferes <samp>magit-revision-mode</samp> el
tipo siempre se consigna.
</dd>
<dt>Función: <samp>magit-diff-scope</samp> <i>&SECCIÓN estricta</i></dt>
<dd>Devuelve el ámbito del diff de SECCIÓN o de la(s) sección(es) seleccionada(s).</dd>
<dd>
El "ámbito" de un diff (diff's scope) describe qué parte de un diff se selecciona, es un símbolo, uno de <samp>región</samp>, <samp>hunk</samp>, <samp>hunks</samp>, <samp>file</samp>,
<samp>files</samp> o <samp>list</samp>. No confunda esto con el "tipo" del diff, devuelto por <samp>magit-diff-type</samp>.
</dd>
<dd>
Si SECCIÓN opcional no es nulo, devuelve el ámbito de la misma, ignorando las secciones seleccionadas por la región. En caso contrario, devuelve el ámbito de la sección actual o,
si la región está activa y selecciona un grupo válido de secciones relacionadas con diff, el tipo de estas secciones, es decir, <samp>hunks</samp> o <samp>archivos</samp>. Si SECCION (o
si la sección actual que es nil) es una sección <samp>hunk</samp> y la región comienza y termina dentro del cuerpo de una esa sección, entonces el tipo es <samp>region</samp>.
</dd>
<dd>
Si la opción <i>estricta</i> es distinta de nil, devuelve nil si el tipo de diff de la sección en el punto es <samp>untracked</samp> o si la sección en el punto no es realmente un
<samp>diff</samp> sino una sección <samp>diffstat</samp>.
</dd>
</dl>
<h2 id="actualizacion_de_buferes">Actualización de Búferes<a href="#actualizacion_de_buferes"></a></h2>
<p>
Todos los comandos que crean un nuevo búfer Magit o cambian lo que se está mostrando en un búfer existente lo hacen llamando a <samp>magit-mode-setup</samp>. Entre otras cosas, esta
función establece los valores locales de <samp>default-directory</samp> (al nivel superior del repositorio), <samp>magit-refresh-function</samp> y <samp>magit-refresh-args</samp>.
</p>
<dl>
<dt>Macro: <samp>magit-mode-setup</samp> <i>BUFFER switch-func MODO refresh-func &opcional refresh-args</i></dt>
<dd>Esta función muestra y selecciona BUFFER, activa MODO y refresca una primera vez.</dd>
<dd>
Esta función muestra y opcionalmente selecciona el BUFFER llamando a <samp>magit-mode-display-buffer</samp> con BUFFER, MODO y SWITCH-FUNC como argumentos. A continuación, establece
el valor local de <samp>magit-refresh-function</samp> en REFRESH-FUNC y el de <samp>magit-refresh-args</samp> en REFRESH-ARGS. Por último, crea el contenido del búfer llamando a
REFRESH-FUNC con REFRESH-ARGS como argumentos.
</dd>
<dd>Todos los argumentos son evaluados antes de ser pasados a BUFFER.</dd>
<dt>Función: <samp>magit-mode-display-buffer</samp> <i>MODO del BUFFER &opcional SWITCH-FUNCTION</i></dt>
<dd>Esta función muestra BUFFER en alguna ventana y lo selecciona. BUFFER puede ser un buffer o una cadena, el nombre de un buffer. Se devuelve el búfer.</dd>
<dd>
A menos que BUFFER ya se muestre en el marco seleccionado, almacena la configuración anterior de la ventana como un valor local del buffer, para que pueda ser restaurado
posteriormente por <samp>magit-mode-bury-buffer</samp>.
</dd>
<dd>
El búfer se muestra y selecciona utilizando SWITCH-FUNCTION. Si es nil, se usa <samp>pop-to-buffer</samp> si el modo principal del búfer actual deriva de <samp>magit-mode</samp>. En caso
contrario, se usa <samp>switch-to-buffer</samp>.
</dd>
<dt>Variable: <samp>magit-refresh-function</samp></dt>
<dd>El valor de esta variable local del búfer es la función utilizada para actualizar el búfer actual. Se invoca con <samp>magit-refresh-args</samp> como argumentos.</dd>
<dt>Variable: <samp>magit-refreseh-args</samp></dt>
<dd>La lista de argumentos usados por <samp>magit-refresh-function</samp> para refrescar el buffer actual. <samp>magit-refresh-function</samp> se llama con estos argumentos.</dd>
<dd>
Normalmente, el valor se establece usando <samp>magit-mode-setup</samp>, pero en algunos casos también es útil proporcionar órdenes que puedan cambiar el valor. Por ejemplo, el
transitorio <samp>magit-diff-refresh</samp> puede usarse para cambiar cualquiera de los argumentos usados para mostrar el diff, sin tener que especificar de nuevo qué diferencias
deberían mostrarse, pero <samp>magit-diff-more-context</samp>, <samp>magit-diff-less-context</samp> y <samp>magit-diff-default-context</samp> cambian sólo el argumento <samp>-U&lt;N&gt;</samp>. En
ambos casos esto se hace cambiando el valor de esta variable y luego llamando a esta función <samp>magit-refresh-function</samp>.
</dd>
</dl>
<h2 id="convenciones">Convenciones<a href="#convenciones"></a></h2>
<p>Vea también <a href="#finalizacion_y_confirmacion" onclick="c('finalizacion_y_confirmacion')">Finalización y confirmación</a></p>
<h3 id="tematizacion_de_caras">Tematización de Caras<a href="#tematizacion_de_caras"></a></h3>
<p>
El tema por defecto usa el azul para las ramas locales, el verde para las ramas remotas y el dorado (amarillo parduzco) para las etiquetas. Cuando cree un nuevo tema, probablemente
debería seguir ese ejemplo. Si su tema ya utiliza otros colores, cíñase a ellos.
</p>
<p>
En versiones anteriores, estas caras de referencia solían tener un color de fondo y un recuadro a su alrededor. Las caras básicas por defecto ya no lo hacen, para hacer los buffers
de Magit mucho menos ruidosos, y debería seguir ese ejemplo al menos en lo que respecta a las cajas. (Los recuadros se usaban en el pasado para solucionar un conflicto entre la
superposición de resaltado y los fondos de las propiedades de texto. Eso ya no es necesario porque el resaltado ya no hace desaparecer otros colores de fondo). Alternativamente,
puede mantener el color de fondo y/o la caja, pero entonces tendrá que tener especial cuidado en ajustar <samp>magit-branch-current</samp> en consecuencia. Por defecto se parece a
<samp>magit-branch-local</samp>, pero con un recuadro (por defecto la primera es la única cara que usa un recuadro, exactamente para que sobresalga). Si la primera también usa una caja,
hay que asegurarse de que difiere en algo de la segunda.
</p>
<p>
Las caras más difíciles de tematizar son las relacionadas con los diffs, los encabezados, el resaltado y la región. Hay caras que caen en los cuatro grupos - espera pasar algún
tiempo haciéndolo bien.
</p>
<p>
Las caras más difíciles de tematizar son las relacionadas con los diffs, los encabezados, el resaltado y la región. Hay caras que caen en los cuatro grupos - espera pasar algún
tiempo haciéndolo bien.
</p>
<p>
La cara de <samp>region</samp> en el tema por defecto, tanto en la variante clara como en la oscura, así como en muchos otros temas, distribuidos con Emacs o por terceros, es muy fea. Es
común usar un color de fondo que realmente sobresale, lo cual es feo pero si ese fuera el único problema sería aceptable. Por desgracia, muchos temas también establecen el color de
primer plano, lo que garantiza que todo el texto dentro de la región sea legible. Si no se hace así, puede haber casos en los que el color de primer plano esté demasiado cerca del
color de fondo de la región como para ser legible. Pero también significa que el texto dentro de la región pierde todo el resaltado de sintaxis.
</p>
<p>
Considero que el trabajo realizado para que la cara de la región (<samp>region</samp>) sea correcta es un buen indicador de la calidad general de un tema. Mi recomendación para la cara
de la región es la siguiente: use un color de fondo ligeramente diferente del color de fondo de la cara por defecto, y no establezca el color de primer plano en absoluto. Así, para
un tema claro, podría usar un gris claro (posiblemente tintado) como color de fondo por defecto y un gris algo más oscuro para el fondo de la región. Esto debería ser suficiente para
no colisionar con el color de primer plano de ninguna otra cara. Pero si algunas otras caras también establecen un gris claro como color de fondo, entonces también debe asegurarse de
que no colisione con ellas (aunque en algunos casos podría ser aceptable).
</p>
<p>
Magit sólo usa la cara de región (<samp>region</samp>) cuando la región es "inválida" según su propia definición. En una memoria intermedia de Magit, la región se usa para seleccionar
múltiples secciones hermanas, de modo que los comandos que la soportan actúan sobre todas estas secciones en lugar de sólo sobre la sección actual, o para seleccionar líneas dentro
de una única sección de trozos. En todos los demás casos, la sección se considera inválida y Magit no actúa sobre ella. Pero estas secciones inválidas ocurren, bien porque el usuario
aún no ha movido el punto lo suficiente como para hacerlo válido, bien porque quiere usar un comando que no es de Magit para actuar sobre la región, por ejemplo, <samp>kill-region</samp>.
</p>
<p>
Así que usar la cara <samp>region</samp> normal para secciones no válidas es una característica. Indica al usuario que Magit no podrá actuar sobre ella. Es aceptable si esa cara se ve un
poco rara e incluso (pero menos) si colisiona con los colores de fondo de los encabezados de sección y otras cosas que tienen un color de fondo.
</p>
<p>
Magit resalta la sección actual. Si una sección tiene subsecciones, se resaltan todas. Esto se hace usando caras que tienen la palabra <i>"highlight"</i> en sus nombres. Para la
mayoría de las secciones, <samp>magit-section-highlight</samp> se utiliza tanto para el cuerpo como para el encabezado. Al igual que la cara región, sólo debe establecer el color de fondo
a algo similar al de por defecto. El color de fondo del resaltado debe ser diferente tanto del color de fondo de la región como del color de fondo por defecto (<samp>default</samp>).
</p>
<p>
Para las secciones relacionadas con diff, Magit utiliza varias caras para resaltar distintas partes de la sección o secciones seleccionadas. Tenga en cuenta que los encabezados de
sección, a diferencia de todos los demás encabezados de sección, tienen por defecto un color de fondo, porque es útil tener separadores muy visibles entre secciones. Esa cara
<samp>magit-diff-hunk-heading</samp>, debería ser diferente tanto de <samp>magit-diff-hunk-heading-highlight</samp> y <samp>magit-section-highlight</samp>, como de <samp>magit-diff-context</samp> y
<samp>magit-diff-context-highlight</samp>. Por defecto lo hacemos cambiando el color de primer plano. Cambiar el color de fondo llevaría a complicaciones, y ya hay bastantes que no
podemos evitar. (Tenga en cuenta también que, en general, es una buena idea que los encabezados de sección estén siempre en negrita, pero sólo para las secciones que tienen
subsecciones).
</p>
<p>
Cuando hay una región válida que selecciona secciones hermanas relacionadas con diferencias, es decir, varios archivos o "hunks", los cuerpos de todas estas secciones utilizan las
respectivas caras de resaltado, pero además los encabezados usan una de las caras <samp>magit-diff-file-heading-selection</samp> o <samp>magit-diff-hunk-heading-selection</samp>. Estas caras
tienen que ser diferentes de las variantes de resaltado normales para proporcionar una indicación visual explícita de que la región está activa.
</p>
<p>
Cuando tematiza caras relacionadas con diff, comience por establecer la opción <samp>magit-diff-refine-hunk</samp> a <samp>all</samp>. Puede que personalmente prefiera refinar sólo el trozo
(hunk) actual o no usar el refinamiento de trozos en absoluto, pero algunos de los usuarios de su tema quieren que todos los trozos refinados, así que tiene que atender a eso.
</p>
<p>
(Active también <samp>magit-diff-highlight-indentation</samp>, <samp>magit-diff-highlight-trailing</samp>, y <samp>magit-diff-paint-whitespace</samp>; e inserte algunos errores de espacio en
blanco en el código que use para las pruebas).
</p>
<p>
Para las líneas añadidas hay que ajustar tres caras: <samp>magit-diff-added</samp>, <samp>magit-diff-added-highlight</samp> y <samp>diff-refined-added</samp>. Asegúrese de que esta última
funciona bien con las dos anteriores, así como con <samp>smerge-other</samp> y <samp>diff-added</samp>. A continuación, haga lo mismo con las líneas eliminadas, las líneas de contexto, las
líneas añadidas por nosotros y las líneas añadidas por ellos. Asegúrese también de que las respectivas caras añadidas, eliminadas y de contexto utilizan aproximadamente la misma
saturación para las variantes resaltadas y no resaltadas. Asegúrese también de que los encabezados de archivo y diff funcionan bien con las líneas de contexto (por ejemplo, que
tengan un aspecto diferente). Las caras de las líneas deben establecer tanto el color de primer plano como el de fondo. Por ejemplo, para las líneas añadidas use dos verdes
diferentes.
</p>
<p>
Lo mejor es que el color de primer plano de las variantes resaltadas y no resaltadas sea el mismo, por lo que tendrá que encontrar un color que funcione bien en el fondo resaltado y
no resaltado, en el fondo refinado y en el fondo de contexto resaltado. Cuando hay una región interna de trozos (hunks), el color de fondo de líneas añadidas y eliminadas se usa sólo
dentro de esa región. Fuera de la región se utiliza el color de fondo de contexto resaltado. Esto facilita la visualización de lo que se está añadiendo al área de preparación. Con
una región interna de trozos, el encabezado del trozo se muestra usando magit-diff-hunk-heading-selection, y también las líneas finas que se añaden alrededor de las líneas que caen
dentro de la región. El color de fondo de esto tiene que ser lo suficientemente distinto de los otros colores de fondo implicados.
</p>
<p>
Nadie dijo que esto sería fácil. Si su tema se limita a un determinado conjunto de colores, debería hacer una excepción aquí. De lo contrario, sería imposible hacer que las
diferencias se vean bien en todas y cada una de las variaciones. En realidad, es posible que desee atenerse a las definiciones por defecto para estas caras. Ya está avisado. También
tenga en cuenta que si no lo hace bien, en algunos casos esto parecerá a los usuarios como errores en Magit - así que por favor hágalo bien o no lo haga.
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_personalizacion" title="Personalización">Anterior</label><label class="btn next" accesskey="n" for="_apendice_y_preguntas_frecuentes" title="Apéndice y Preguntas Frecuentes">Siguiente</label></div>
<div class="page" rel="apendice_y_preguntas_frecuentes"><div><ul class="breadcrumbs"><li><label class="home" for="_" title="Inicio"></label>&nbsp;»</li><li>&nbsp;Apéndice y Preguntas Frecuentes</li></ul><hr></div>
<h1 id="apendice_y_preguntas_frecuentes">Apéndice y Preguntas Frecuentes<a href="#apendice_y_preguntas_frecuentes"></a></h1>
<p>
En los dos nodos siguientes se enumeran las preguntas más frecuentes. Si desea consultar una lista de preguntas frecuentes y recientes, es decir, preguntas que aún no se han incluido
en el manual, consulte <a href="https://github.com/magit/magit/wiki/FAQ" target="new">https://github.com/magit/magit/wiki/FAQ</a>.
</p>
<p>Consulte también <a href="#@GENDOC:herramientas_de_depuracion@" onclick="c('@GENDOC:herramientas_de_depuracion@')">Herramientas de Depuración</a>.</p>
<h2 id="como_hacer">Cómo hacer<a href="#como_hacer"></a></h2>
<h3 id="como_se_pronuncia_magit">Cómo se pronuncia Magit<a href="#como_se_pronuncia_magit"></a></h3>
<p>Tanto <samp>mu[m's] git</samp> como <samp>magi{c =&gt; t}</samp> están bien.</p>
<p>El eslogan reza "¡Es Magit! El cliente mágico de Git", así que tiene sentido pronunciar Magit como magia, teniendo en cuenta que C y T no suenan igual.</p>
<p>
El alemán "Magie" no se pronuncia igual que el inglés "magic", así que si habla alemán puede utilizar el razonamiento anterior para justificar el uso de la pronunciación anterior;
<samp>Mag{ie =&gt; it}</samp>.
</p>
<p>También puede optar por la primera pronunciación simplemente porque le gusta más.</p>
<h3 id="errores_y_problemas">Errores y Problemas<a href="#errores_y_problemas"></a></h3>
<h4 id="magit_esta_lento">Magit está lento<a href="#magit_esta_lento"></a></h4>
<p>
Vea <a href="#rendimiento" onclick="c('rendimiento')">Rendimiento</a> y <a href="#he_cambiado_varios_miles_de_archivos_a_la_vez_y_ahora_magit_es_inutilizable" onclick="c('he_cambiado_varios_miles_de_archivos_a_la_vez_y_ahora_magit_es_inutilizable')">He cambiado varios miles de archivos a la vez y ahora Magit es inutilizable</a>.
</p>
<h4 id="he_cambiado_varios_miles_de_archivos_a_la_vez_y_ahora_magit_es_inutilizable">He cambiado varios miles de archivos a la vez y ahora Magit es inutilizable<a href="#he_cambiado_varios_miles_de_archivos_a_la_vez_y_ahora_magit_es_inutilizable"></a></h4>
<p>
Actualmente no se espera que Magit funcione bien en esas condiciones. Pero estaría bien que así fuera. Alcanzar un rendimiento satisfactorio en estas condiciones requerirá una
profunda refactorización. No es una tarea fácil, pero espero encontrar tiempo para hacerla.
</p>
<p>Por ahora, le recomendamos que use la línea de comandos para completar esta confirmación. Vea también <a href="#rendimiento" onclick="c('rendimiento')">Rendimiento</a>.</p>
<h4 id="tengo_problemas_para_hacer_confirmaciones">Tengo problemas para hacer confirmaciones<a href="#tengo_problemas_para_hacer_confirmaciones"></a></h4>
<p>
Eso probablemente significa que Magit está teniendo problemas para encontrar un ejecutable emacsclient apropiado. Ver <a href="https://magit.vc/manual/with-editor/Configuring-With_002dEditor.html#Configuring-With_002dEditor" target="new">(con-editor)Configurando con-editor</a> y <a href="https://magit.vc/manual/with-editor/Debugging.html#Debugging" target="new">(con-editor)Depurando</a>.
</p><br style="clear:both;"><label class="btn prev" accesskey="p" for="_plumbing" title="Plumbing">Anterior</label></div>
<footer><hr><p>© Copyright Tano 2.023<br><small>Generated by <a href="https://gitlab.com/bztsrc/gendoc">gendoc</a> v1.0.0</small></p></footer>
</div>
</div>
<script>function c(s){var r=document.getElementById(s);if(r!=undefined){if(r.tagName=="INPUT")r.checked=true;else document.getElementById("_"+r.parentNode.getAttribute("rel")).checked=true;}}function s(s){var r=document.getElementById("_s"),p=document.getElementById("_m").getElementsByClassName("page"),n,i,j,a,b,c,d;if(s){s=s.toLowerCase();document.getElementById("_t").style.display="none";r.style.display="block";while(r.firstChild)r.removeChild(r.firstChild);n=document.createElement("p");n.appendChild(document.createTextNode("Resultado de la Búsqueda"));r.appendChild(n);for(i=1;i<p.length;i++){a=p[i].getAttribute("rel");b="";c=p[i].childNodes;d=p[i].getElementsByTagName("H1")[0].innerText;for(j=1;j<c.length && c[j].className!="btn prev";j++){if(c[j].id!=undefined&&c[j].id!=""){a=c[j].id;d=c[j].innerText;}else if(a!=b&&c[j].innerText!=undefined&&c[j].innerText.toLowerCase().indexOf(s)!=-1){b=a;n=document.createElement("a");n.appendChild(document.createTextNode(d));n.setAttribute("href","#"+a);n.setAttribute("onclick","c('"+a+"');");r.appendChild(n);}}}}else{document.getElementById("_t").style.display="block";r.style.display="none";}}document.addEventListener("DOMContentLoaded",function(e){var i,r,n;document.getElementById("_q").style.display="inline-block";if(document.location.href.indexOf("?")!=-1)document.location.href=document.location.href.replace("?","#");else{r=document.getElementsByTagName("LABEL");while(r.length){l=r[0].getAttribute("for").substr(1);n=document.createElement("a");n.appendChild(document.createTextNode(r[0].innerText));n.setAttribute("href","#"+l);n.setAttribute("onclick","c('"+(l!=""?l:"_")+"');");if(r[0].getAttribute("class")!=undefined)n.setAttribute("class",r[0].getAttribute("class"));if(r[0].getAttribute("title")!=undefined&&l!="")n.setAttribute("title",r[0].getAttribute("title"));if(r[0].getAttribute("accesskey")!=undefined)n.setAttribute("accesskey",r[0].getAttribute("accesskey"));r[0].parentNode.replaceChild(n,r[0]);r=document.getElementsByTagName("LABEL");}try{c(document.location.href.split("#")[1]);}catch(e){}}});</script>
</body>
</html>