-
Notifications
You must be signed in to change notification settings - Fork 16
/
lab_17.html
161 lines (156 loc) · 13.4 KB
/
lab_17.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<!DOCTYPE html>
<html>
<head>
<title>Lab 17 - Git Immersion en Español</title>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" media="screen" href="css/screen.css">
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript" src="javascript/jquery.js"></script>
<script type="text/javascript" src="javascript/jquery.hotkeys.js"></script>
<script type="text/javascript" src="javascript/UI.js"></script>
</head>
<body data-lab-id="17">
<header id="header">
<a href="index.html" id="home_link">Git Immersion en Español</a>
<nav id="pager">
<a id="arrow_next" class="arrow" href="lab_18.html">Siguiente</a>
<a id="arrow_previous" class="arrow" href="lab_16.html">Anterior</a>
<a id="table_of_contents_link" href="#">Tabla de Contenidos</a>
<a id="bookmark_link"><span id="bookmark"></span>Añadir a favoritos</a>
<a id="edgecase_link" href="http://edgecase.com" target="_blank">EdgeCase</a>
</nav>
<h1 class="lab_title"><em>lab 17</em> Quitando Commits de una Ramificación (Branch)</h1>
<a href="http://edgecase.com" target="_blank" id="other_edgecase_link">EdgeCase</a>
</header>
<div id="main_content">
<h1 class="lab_title"><em>lab 17</em> Quitando Commits de una Ramificación (Branch)</h1>
<h3>Metas</h3>
<ul>
<li>Aprender a quitar los Commits más recientes de una ramificación.</li>
</ul>
<p>El comando <code>revert</code> de la sección previa es un poderoso comando que nos permite deshacer los efectos de cualquier Commit en el repositorio. Sin embrgo, ambos, el Commit original y el Commit “deshecho” están invisibles en el historial de la ramificación (usando el commando <code>git log</code>.</p>
<p>Frecuentemente hacemos un Commit e inmediatamente nos damos cuenta que fue un error. Sería bueno tener un comando “recuperador” que nos permitiera hacer de cuenta que ese commit nunca sucedió. El comando “recuperador” incluso prevendría que el Commit defectuoso se mostrara en el historial que arroja <code>git log</code>. Sería como el Commit defectuoso nunca hubera sucedido.</p>
<h2>El comando <code>reset</code> <em>01</em></h2>
<p>Ya hemos visto el comando <code>reset</code> y lo hemos usado para establecer el área de Staging para que fuera consistente con un Commit en especial (usamos el Commit <span class="caps">HEAD</span> en nuestro anterior lab).</p>
<p>Cuando se realiza un Commit referenciado (por ejemplo, un hash, una ramificación o nombre de etiqueta), el comando <code>reset</code> realizará lo siguiente …</p>
<ol>
<li>Reescribir la ramificación actual y apuntarlo a un Commit en específico</li>
<li>Opcionalmente reestablecer el área de Staging para coincidir con el Commit especificado</li>
<li>Opcionalmente reestablecer el directorio de trabajo para coincidir con el Commit especificado</li>
</ol>
<h2>Revisar nuestro historial <em>02</em></h2>
<p>Hagamos una revisión rápida de nuestro historial de Commits.</p>
<h4>Ejecute:</h4>
<pre class="instructions">git hist</pre>
<h4>Salida:</h4>
<pre class="sample">$ git hist
* 9ad227a 2012-03-06 | Revert "Oops, we didn't want this commit" (HEAD, master) [Jim Weirich]
* d20d016 2012-03-06 | Oops, we didn't want this commit [Jim Weirich]
* 4054321 2012-03-06 | Added a comment (v1) [Jim Weirich]
* 1b754e9 2012-03-06 | Added a default value (v1-beta) [Jim Weirich]
* 3053491 2012-03-06 | Using ARGV [Jim Weirich]
* 3cbf83b 2012-03-06 | First Commit [Jim Weirich]</pre>
<p>Vemos que tenemos un Commit “Oops” y “Revert Oops” en los últimos dos Commits hechos en esta ramificación. Vamos a quitarlos usando reset.</p>
<h2>Primero, marquemos esta Ramificación <em>03</em></h2>
<p>Pero antes de quitar los Commits, marquemos el último Commit con una etiqueta, así podremos buscarlo de nuevo.</p>
<h4>Ejecute:</h4>
<pre class="instructions">git tag oops</pre>
<h2>Reestablecer el repositorio a como se encontraba antes de Oops <em>04</em></h2>
<p>Al ver el historial (arriba), podemos ver que el Commit etiquetado como ‘v1’ es el que se encuentra justo antes del mal comentario. Reestablezcamos el branch a ese punto. Debido a que el Branch está etiquetado , podemos usar el nombre de la etiqueta en el comando reset (si no fue etiquetado, podemos usar su hash).</p>
<h4>Ejecute:</h4>
<pre class="instructions">git reset --hard v1
git hist</pre>
<h4>Salida:</h4>
<pre class="sample">$ git reset --hard v1
HEAD is now at 4054321 Added a comment
$ git hist
* 4054321 2012-03-06 | Added a comment (HEAD, v1, master) [Jim Weirich]
* 1b754e9 2012-03-06 | Added a default value (v1-beta) [Jim Weirich]
* 3053491 2012-03-06 | Using ARGV [Jim Weirich]
* 3cbf83b 2012-03-06 | First Commit [Jim Weirich]</pre>
<p>Nuestro branch principal ahora apunta al Commit v1 y el commit "Oops" y "Revert Oops commit" no están más en la rama. El parámetro <code>--hard</code> indica que el directorio de trabajo debe ser actualizado para ser consistente con la nueva cabeza del branch.</p>
<h2>Nada se Pierde <em>05</em></h2>
<p>Pero ¿qué les pasó a los malos Commits? Resulta que esos Commits están aún en el repositorio. De hecho, aún podemos referenciarlos. Recuerda que al inicio de este lab etiquetamos el Commit con “oops”. Veamos en <em>todos</em> los Commits.</p>
<h4>Ejecute:</h4>
<pre class="instructions">git hist --all</pre>
<h4>Salida:</h4>
<pre class="sample">$ git hist --all
* 9ad227a 2012-03-06 | Revert "Oops, we didn't want this commit" (oops) [Jim Weirich]
* d20d016 2012-03-06 | Oops, we didn't want this commit [Jim Weirich]
* 4054321 2012-03-06 | Added a comment (HEAD, v1, master) [Jim Weirich]
* 1b754e9 2012-03-06 | Added a default value (v1-beta) [Jim Weirich]
* 3053491 2012-03-06 | Using ARGV [Jim Weirich]
* 3cbf83b 2012-03-06 | First Commit [Jim Weirich]</pre>
<p>Aquí vemos que los malos Commits no han desaparecido, aún están en el repository. Lo que sucede es que sólo no están listados en el branch principal. Si no los hemos etiquetado, seguirían aún en el repositorio, pero no habría forma de referenciarlos más que usando los valores de hash. Los Commits que no tienen referencia quedan en el repositorio hasta que el sistema ejecuta el software de recolección de basura.</p>
<h2>Peligros del Reset <em>06</em></h2>
<p>Los Resets en ramificaciones locales son generalmente seguros. Cualquier accidente puede ser recuperado con sólo reestablecerlo al Commit deseado.</p>
<p>Sin embargo, si la ramificación está compartido en repositorios remotos, puede confundir a otros usuarios que comparten el branch.</p>
</div>
<div id="index">
<h1>Tabla de Contenidos</h1>
<div id="show_bookmarks"></div>
<div id="no_bookmarks"></div>
<ul>
<li id="lab_0_link"><a href="index.html"><span> </span>Portada</a></li>
<li id="lab_1_link" data-lab-id="1"><a href="lab_01.html"><span>1:</span> Configuración</a></li>
<li id="lab_2_link" data-lab-id="2"><a href="lab_02.html"><span>2:</span> Más configuración</a></li>
<li id="lab_3_link" data-lab-id="3"><a href="lab_03.html"><span>3:</span> Crear un Proyecto</a></li>
<li id="lab_4_link" data-lab-id="4"><a href="lab_04.html"><span>4:</span> Revisar Estatus</a></li>
<li id="lab_5_link" data-lab-id="5"><a href="lab_05.html"><span>5:</span> Realizar Cambios</a></li>
<li id="lab_6_link" data-lab-id="6"><a href="lab_06.html"><span>6:</span> Hacer Staging a cambios</a></li>
<li id="lab_7_link" data-lab-id="7"><a href="lab_07.html"><span>7:</span> Staging y Commit</a></li>
<li id="lab_8_link" data-lab-id="8"><a href="lab_08.html"><span>8:</span> Hacer Commit a los cambios</a></li>
<li id="lab_9_link" data-lab-id="9"><a href="lab_09.html"><span>9:</span> Cambios, no archivos</a></li>
<li id="lab_10_link" data-lab-id="10"><a href="lab_10.html"><span>10:</span> Historial</a></li>
<li id="lab_11_link" data-lab-id="11"><a href="lab_11.html"><span>11:</span> Alias</a></li>
<li id="lab_12_link" data-lab-id="12"><a href="lab_12.html"><span>12:</span> Obteniendo Versiones Antiguas</a></li>
<li id="lab_13_link" data-lab-id="13"><a href="lab_13.html"><span>13:</span> Etiquetar (Tagging) versiones</a></li>
<li id="lab_14_link" data-lab-id="14"><a href="lab_14.html"><span>14:</span> Deshacer Cambios Locales (antes de staging)</a></li>
<li id="lab_15_link" data-lab-id="15"><a href="lab_15.html"><span>15:</span> Deshacer Cambios en Stage (antes de commit)</a></li>
<li id="lab_16_link" data-lab-id="16"><a href="lab_16.html"><span>16:</span> Deshacer Cambios Confirmados (Committed)</a></li>
<li id="lab_17_link" data-lab-id="17"><a href="lab_17.html"><span>17:</span> Quitando Commits de una Ramificación (Branch)</a></li>
<li id="lab_18_link" data-lab-id="18"><a href="lab_18.html"><span>18:</span> Quitando la etiqueta "oops"</a></li>
<li id="lab_19_link" data-lab-id="19"><a href="lab_19.html"><span>19:</span> Enmendar Commits (--amend)</a></li>
<li id="lab_20_link" data-lab-id="20"><a href="lab_20.html"><span>20:</span> Moviendo Archivos</a></li>
<li id="lab_21_link" data-lab-id="21"><a href="lab_21.html"><span>21:</span> Más Estructura</a></li>
<li id="lab_22_link" data-lab-id="22"><a href="lab_22.html"><span>22:</span> Al Interior de Git: El directorio .git</a></li>
<li id="lab_23_link" data-lab-id="23"><a href="lab_23.html"><span>23:</span> Al Interior de Git: Directorio de trabajo con Objetos de Git</a></li>
<li id="lab_24_link" data-lab-id="24"><a href="lab_24.html"><span>24:</span> Creando una ramificación (Branch)</a></li>
<li id="lab_25_link" data-lab-id="25"><a href="lab_25.html"><span>25:</span> Navegando Ramificaciones</a></li>
<li id="lab_26_link" data-lab-id="26"><a href="lab_26.html"><span>26:</span> Cambios en Master</a></li>
<li id="lab_27_link" data-lab-id="27"><a href="lab_27.html"><span>27:</span> Viendo las ramificaciones divergentes</a></li>
<li id="lab_28_link" data-lab-id="28"><a href="lab_28.html"><span>28:</span> Fusionando (Merge)</a></li>
<li id="lab_29_link" data-lab-id="29"><a href="lab_29.html"><span>29:</span> Creando un Conflicto</a></li>
<li id="lab_30_link" data-lab-id="30"><a href="lab_30.html"><span>30:</span> Resolviendo Conflictos</a></li>
<li id="lab_31_link" data-lab-id="31"><a href="lab_31.html"><span>31:</span> Cambio de Base (Rebasing) VS Fusión (Merging)</a></li>
<li id="lab_32_link" data-lab-id="32"><a href="lab_32.html"><span>32:</span> Restableciendo la ramificación Greet</a></li>
<li id="lab_33_link" data-lab-id="33"><a href="lab_33.html"><span>33:</span> Reestableciendo la ramificación Master</a></li>
<li id="lab_34_link" data-lab-id="34"><a href="lab_34.html"><span>34:</span> Cambio de Base (Rebasing)</a></li>
<li id="lab_35_link" data-lab-id="35"><a href="lab_35.html"><span>35:</span> Volver a Fusionar a la ramificación Principal</a></li>
<li id="lab_36_link" data-lab-id="36"><a href="lab_36.html"><span>36:</span> Múltiples Repositorios</a></li>
<li id="lab_37_link" data-lab-id="37"><a href="lab_37.html"><span>37:</span> Clonando Repositorios</a></li>
<li id="lab_38_link" data-lab-id="38"><a href="lab_38.html"><span>38:</span> Revisión del Repositorio Clonado</a></li>
<li id="lab_39_link" data-lab-id="39"><a href="lab_39.html"><span>39:</span> ¿Qué es "Origin"?</a></li>
<li id="lab_40_link" data-lab-id="40"><a href="lab_40.html"><span>40:</span> Ramificaciones Remotas</a></li>
<li id="lab_41_link" data-lab-id="41"><a href="lab_41.html"><span>41:</span> Cambiar el Repositorio Original</a></li>
<li id="lab_42_link" data-lab-id="42"><a href="lab_42.html"><span>42:</span> Entregar Cambios (Fetch)</a></li>
<li id="lab_43_link" data-lab-id="43"><a href="lab_43.html"><span>43:</span> Fusionar Cambios Recibidos</a></li>
<li id="lab_44_link" data-lab-id="44"><a href="lab_44.html"><span>44:</span> Recibiendo cambios remotos (comando Pull)</a></li>
<li id="lab_45_link" data-lab-id="45"><a href="lab_45.html"><span>45:</span> Agregando un rastreo de Ramificación</a></li>
<li id="lab_46_link" data-lab-id="46"><a href="lab_46.html"><span>46:</span> Repositorios Escuetos (--bare)</a></li>
<li id="lab_47_link" data-lab-id="47"><a href="lab_47.html"><span>47:</span> Agregando un Repositorio Remoto</a></li>
<li id="lab_48_link" data-lab-id="48"><a href="lab_48.html"><span>48:</span> Enviando Cambios</a></li>
<li id="lab_49_link" data-lab-id="49"><a href="lab_49.html"><span>49:</span> Recibiendo Cambios Compartidos</a></li>
<li id="lab_50_link" data-lab-id="50"><a href="lab_50.html"><span>50:</span> Hospedando sus repositorios Git</a></li>
<li id="lab_51_link" data-lab-id="51"><a href="lab_51.html"><span>51:</span> Compartiendo Repositorios</a></li>
<li id="lab_52_link" data-lab-id="52"><a href="lab_52.html"><span>52:</span> Tópicos Avanzados / Futuros</a></li>
<li id="lab_53_link" data-lab-id="53"><a href="lab_53.html"><span>53:</span> Gracias</a></li>
</ul>
</div>
<div id="cover"></div>
</body>
</html>