Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Un Cuento de Tres Árboles

Un Cuento de Tres Árboles

Git es el sistema de control de versiones que la mayoría de nosotros usamos cada dia. Sin embargo, Git tiene algunas rarezas. Levanten la mano si realmente comprenden el comando reset. Después de todo, este es uno de los comandos más interesantes, fundamentales y fascinantes que Git tiene, y aun así casi todo el mundo le tiene miedo. Esto es sólo cuestión de mal marketing: Esta charla va a demistificar el comando reset no sólo para que se sientan cómodos usándolo, sino para que puedan hacer nuevas e interesantes cosas con él, y al lograrlo, obtendrán también una mayor comprensión de todo el sistema de Git. Exploraremos los Tres Árboles de Git (HEAD, el índice y el árbol de trabajo) y descubriremos todas las cosas increíbles que se pueden hacer con ellos.

Scott Chacon

November 05, 2011
Tweet

More Decks by Scott Chacon

Other Decks in Programming

Transcript

  1. mi

  2. $ tree . !"" README !"" Rakefile #"" lib #""

    git.rb 1 directory, 3 files
  3. git

  4. $ git ls-tree -r HEAD 100644 blob ad47ff7d328ff27e50bfcd0fb22baa1d680109bb README 100644

    blob 5de1607ba20b3ed555e8f77465d668005d545159 example.rb 100644 blob 6478a3173fd423085ce7685a37ec7fcf49401737 kidgloves.rb $ git ls-files -s 100644 ad47ff7d328ff27e50bfcd0fb22baa1d680109bb 0 README 100644 5de1607ba20b3ed555e8f77465d668005d545159 0 example.rb 100644 6478a3173fd423085ce7685a37ec7fcf49401737 0 kidgloves.rb $ ls -l -rw-r--r-- 1 schacon staff 610 Sep 26 09:38 README -rw-r--r-- 1 schacon staff 209 Sep 26 09:38 example.rb -rw-r--r-- 1 schacon staff 5024 Sep 26 09:38 kidgloves.rb HEAD Índice Directorio de Trabajo
  5. $ git ls-tree -r HEAD 100644 blob ad47ff7d328ff27e50bfcd0fb22baa1d680109bb README 100644

    blob 5de1607ba20b3ed555e8f77465d668005d545159 example.rb 100644 blob 6478a3173fd423085ce7685a37ec7fcf49401737 kidgloves.rb $ git ls-files -s 100644 ad47ff7d328ff27e50bfcd0fb22baa1d680109bb 0 README 100644 5de1607ba20b3ed555e8f77465d668005d545159 0 example.rb 100644 6478a3173fd423085ce7685a37ec7fcf49401737 0 kidgloves.rb $ ls -l -rw-r--r-- 1 schacon staff 610 Sep 26 09:38 README -rw-r--r-- 1 schacon staff 209 Sep 26 09:38 example.rb -rw-r--r-- 1 schacon staff 5024 Sep 26 09:38 kidgloves.rb HEAD Índice Directorio de Trabajo
  6. funciones de los árboles HEAD el último commit, generador del

    proximo Índice el proximo commit Dir de Trabajo caja de arena
  7. $ git status # On branch master # Your branch

    is behind 'origin/master' by 2 commits, # and can be fast-forwarded. # # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modified: jobs/email_reply.rb # # Changed but not updated: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes # in working directory) # # modified: app/helpers/users_helper.rb # modified: test/unit/email_reply_job_test.rb #
  8. $ git status # On branch master # Your branch

    is behind 'origin/master' by 2 commits, # and can be fast-forwarded. # # Changes to be committed: # HEAD and index differ # # modified: jobs/email_reply.rb # # Changed but not updated: # index and working directory differ # # # # modified: app/helpers/users_helper.rb # modified: test/unit/email_reply_job_test.rb #
  9. $ git status # On branch master # Your branch

    is behind 'origin/mas # and can be fast-forwarded. # # Changed but not updated: # (use "git add ..." to update wh # (use "git checkout -- ..." to d # in working directory) # # modified: file.txt #
  10. $ git status # On branch master # Your branch

    is behind 'origin/m # and can be fast-forwarded. # # Changes to be committed: # (use "git reset HEAD ..." to # # modified: file.txt #
  11. --hard copia al dir de trabajo --soft mueve HEAD al

    objetivo Las Opciones de Reset [--mixed] copia al índice
  12. A B C D git commit -m ‘Yo soy muy

    inteligente’ HEAD master
  13. A B C D HEAD master D2 git commit -m

    ‘Yo soy muy inteligente’
  14. commit 04c113569d5eec4fb53b5e35e953159a4c4449ca Author: Scott Chacon <[email protected]> Date: Mon Oct 31

    09:05:16 2011 -0700 wip: hmm. guárdelo en cassandra commit 6eae70eee71446c4fb63d897c9feb62d62abc732 Author: Scott Chacon <[email protected]> Date: Mon Oct 31 09:01:27 2011 -0700 wip: guárdelo en redis
  15. commit 71f6d906b763538d1a146cbf3934af6d19fdc348 Author: Scott Chacon <[email protected]> Date: Mon Oct 31

    09:05:20 2011 -0700 wip: maldita sea. tal vez riak? commit 04c113569d5eec4fb53b5e35e953159a4c4449ca Author: Scott Chacon <[email protected]> Date: Mon Oct 31 09:05:16 2011 -0700 wip: hmm. guárdelo en cassandra commit 6eae70eee71446c4fb63d897c9feb62d62abc732 Author: Scott Chacon <[email protected]> Date: Mon Oct 31 09:01:27 2011 -0700 wip: guárdelo en redis
  16. commit 8c9edaee51647f392e20199bfc1bb15c9e221a1a Author: Scott Chacon <[email protected]> Date: Mon Oct 31

    09:05:20 2011 -0700 wip: por que coño, riak? ahora, mongodb... commit 71f6d906b763538d1a146cbf3934af6d19fdc348 Author: Scott Chacon <[email protected]> Date: Mon Oct 31 09:05:20 2011 -0700 wip: maldita sea. tal vez riak? commit 04c113569d5eec4fb53b5e35e953159a4c4449ca Author: Scott Chacon <[email protected]> Date: Mon Oct 31 09:05:16 2011 -0700 wip: hmm. guárdelo en cassandra commit 6eae70eee71446c4fb63d897c9feb62d62abc732 Author: Scott Chacon <[email protected]> Date: Mon Oct 31 09:01:27 2011 -0700 wip: guárdelo en redis
  17. commit 6eae70eee71446c4fb63d897c9feb62d62abc732 Author: Scott Chacon <[email protected]> Date: Mon Oct 31

    10:01:27 2011 -0700 solución perfecta en el primer intento: mongodb
  18. WIP

  19. funciones de los árboles HEAD el último commit, generador del

    proximo Índice el proximo commit Dir de Trabajo caja de arena