Jose Luis Grande Acevedo
EstudiantePreguntaLas ramas son formas en la que nosotros podemos hacer cambios sin afectar la principal rama, ¿porque esto es importante?, porque en ocasiones digamos tu quieres hacer un cambio especial. Luego de los cambios en el html y CSS podemos hacer un commit a master.
Le damos git status y nos dice que hubo modificaciones de 2 archivos que previamente ya habíamos cambiado. También tenemos historia, pero no ha pasado nada. Guardamos con git add . o git commit -am y esto automáticamente hace el git add de los cambios, solo funciona con archivos a los que ya había hecho add previamente, con un archivo nuevo eso no va fucionar. Recuerdan que puedo colocar el mensaje o simplemente puede dejarle la a y me va disparar un entorno donde escribo el mensaje, enter y dispara un entorno que es un editor interno de código y de texto basado en terminal que se llama VIM.
Le das Esc + i para entrar en modo de insertar texto y escribes el texto, Esc + shift + zz para guardar y con eso ya quedo enviado, si le damos git log vemos que el ultimo cambio es el commit al master en su versión mas reciente y si le damos git log --stat vemos que específicamente en este ultimo commit los cambios que se hicieron fueron al blogpost a estilos.css. con eso ya estamos listos para crear nuestra rama.
¿Como funciona el tema de crear la rama?, Hay que recordar que la rama se va crear desde el lugar donde estoy, entonces vamos a darle git status y me dice estoy en la rama maestra, estoy en la versión mas limpia, no hay nada que enviar y mi head que es como el apuntador del lugar de trabajo donde estoy le esta apuntando a master, también puedo darle git show y me muestra el ultimo cambio que hice y significa que desde aquí voy a hacer los cambios, con git show se donde está el head, es decir el lugar donde estoy trabajando ahora mismo y veo que el head esta en el master.
Ahora escribo git branch nombre y habíamos dicho que esta rama de desarrollo la vamos a llamar cabecera, enter y eso es todo no paso nada, aparentemente no hay ningún cambio, pero si le doy en este momento git show, ahora me dice que tengo un head que le apunta al master y que también le apunta a la cabecera, es decir el ultimo commit esta pegado a dos ramas distintas y todavía estoy trabajando en master, eso es todo lo que yo se.
Si le doy git status sigo en la rama master no hay nada que hacerle commit todo super bien pero como me muevo hacia la otra rama, lo hago con git checkout cabecera y puedo moverme a la rama cabecera y al darle enter observe que mi git bash cambio y ahora dice cabecera.
Agregamos la cabecera en html, luego en la consola ponemos git status y sale que modificamos un archivo en cabecera blogpost entonces vamos a darle git add blogpost.html y luego git commit y luego le doy enter y vamos a decirle Estructura inicial de la cabecera luego enter y presionar Esc + shift +zz, con eso ya envié el commit, entonces vamos a volver a git status me dice que seguimos en cabecera, git show me dice que ahora estoy en el head de la cabecera ya deje el master atrás, que me va decir git log cual es mi historia de los commit, miren estaba por aca el master y de repente el head el apuntador donde estoy trabajando en este momento paso a la cabecera, eso es lo que es el head al final del dia, se le da q para salir de ahí, y que pasa con mi archivo cabecera si me devuelvo a la rama master, recuerden que nosotros nos movemos entre ramas con git checkout, git checkout master, enter ahora me salte a master y desaparecio por completo el id de cabecera de hecho si hacemos un git log enter observen que el ultimo log dice la versión mas reciente de blogpost y mi head ahora le apunta a master, entonces los cambios que yo haga acá solamente van a ocurrir en master, salgamos de acá, volvamos a hacer un git checkout pero esta vez volvamos a cabecera, enter y miren como los archivos cambian inmediatamente.
Esta es la magia de git, ustedes pueden tener multiples archivos cambiando solo se guardan los cambios e inmediatamente los veo acá en cabecera.
Si C2 es donde yo tenia los cambios al blogpost donde simplemente cree la estructura básica, cuando yo cree el Branch cabecera hice una copia exacta de C2 y ustedes verán que HEAD estaba apuntando hacia este commit y a este commit porque en teoría son el mismo commit.
Una vez yo empecé a hacer cambios y hice un commit nuevo C3 donde lo que hice fue agregarle el div cabecera esto ya no se ve en la rama master y aquí el head deja de estar acá C2 y viene a estar acá C3, cuando yo hago un proceso de checkout y me devuelvo a master lo que estoy haciendo es que todos mis archivos en mi directorio de trabajo cambian a el ultimo commit de la rama a la que yo le estoy apuntando y de repente el head vuelve a estar acá C2, head al final del dia es un indicador de cual versión de commit estoy viendo de los últimos archivos.
Juan Jiménez
EstudianteEs correcta tu recapitulación!
Erika P. Gómez Cardenas
EstudianteMuchisimas gracias por tu aporte, me sirvió para resolver el conflicto que tenía.
Moisés Manuel Morín Hevia
EstudianteEstoy deacuerdo, buen aporte.
![Curso de Git y Github [Empieza Gratis]](https://static.platzi.com/media/courses/git-github-og_4yjKsBZ.png)