Deshacer cambios#

  • Última modificación: Mayo 14, 2022

Preparación del proyecto#

[ ]:
!rm -rf git-demo
!mkdir git-demo
%cd git-demo

Preparación commits iniciales#

[ ]:
%%sh

git init

git config user.email "you@example.com"
git config user.name "john doe"

touch file_1.txt file_2.txt
git add *.txt
git commit -m 'create file_1.txt file_2.txt files'
Working      Staging    .git
Tree         Area       directory
-------------------------------------------------------------------------------------
file_1.txt              ## create file_1.txt file_2.txt files
  (emtpy)               file_1.txt
file_2.txt                (empty)
  (empty)               file_2.txt
                          (empty)
[ ]:
%%sh
echo 'Hola mundo cruel!' > file_2.txt
git add file_2.txt
git commit -m 'modify file_2.txt file'
Working                Staging    .git
Tree                   Area       directory
-------------------------------------------------------------------------------------
file_1.txt                        ### create file_1.txt file_2.txt files
  (emtpy)                         file_1.txt
file_2.txt                          (empty)
  Hola mundo cruel!               file_2.txt
                                    (empty)
                                  ### modify file_2.txt file
                                  file_2.txt
                                    Hola mundo cruel!
[ ]:
%%sh
touch file_to_ignore.txt
echo "file_to_ignore.txt" > .gitignore
git add .gitignore
git commit -m 'create .gitignore'
Working                 Staging    .git
Tree                    Area       directory
-------------------------------------------------------------------------------------
file_1.txt                         ### create file_1.txt file_2.txt files
  (emtpy)                          file_1.txt
file_2.txt                           (empty)
  Hola mundo cruel!                file_2.txt
file_to_ignore.txt                   (empty)
  (empty)                          ### modify file_2.txt file
.gitignore                         file_2.txt
  file_to_ignore.txt                 Hola mundo cruel!
                                   ### create .gitignore
                                   .gitignore
                                     file_to_ignore.txt
[ ]:
!git log

Agregar al último commit#

[ ]:
!echo "other_file_to_ignore.txt" >> .gitignore
!git add .gitignore
!git commit --amend -m "create a new .gitignore"
Working                       Staging    .git
Tree                          Area       directory
-------------------------------------------------------------------------------------
file_1.txt                               ### create file_1.txt file_2.txt files
  (emtpy)                                file_1.txt
file_2.txt                                 (empty)
  Hola mundo cruel!                      file_2.txt
file_to_ignore.txt                         (empty)
  (empty)                                ### modify file_2.txt file
.gitignore                               file_2.txt
  file_to_ignore.txt                       Hola mundo cruel!
  other_file_to_ignore.txt               ### create a new .gitignore
other_file_to_ignore.txt                 .gitignore
  (empty)                                  file_to_ignore.txt
                                           other_file_to_ignore.txt
[ ]:
!git log

Unstaging#

[ ]:
# Se crean los dos archivos y se hace un add con ambos
!touch file_3.txt
!touch file_4.txt
!git add file_3.txt file_4.txt
!git status
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                    file_3.txt    ### create file_1.txt file_2.txt files
  (emtpy)                       (empty)     file_1.txt
file_2.txt                    file_4.txt      (empty)
  Hola mundo cruel!             (empty)     file_2.txt
file_to_ignore.txt                            (empty)
  (empty)                                   ### modify file_2.txt file
.gitignore                                  file_2.txt
  file_to_ignore.txt                          Hola mundo cruel!
  other_file_to_ignore.txt                  ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)
file_4.txt
  (empty)
[ ]:
# Se desea un commit individual para cada archivo.
# Se saca file_4.txt
!git reset HEAD file_4.txt
!git status
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                    file_3.txt    ### create file_1.txt file_2.txt files
  (emtpy)                       (empty)     file_1.txt
file_2.txt                                    (empty)
  Hola mundo cruel!                         file_2.txt
file_to_ignore.txt                            (empty)
  (empty)                                   ### modify file_2.txt file
.gitignore                                  file_2.txt
  file_to_ignore.txt                          Hola mundo cruel!
  other_file_to_ignore.txt                  ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)
file_4.txt
  (empty)
[ ]:
!git commit -m "create file_3.txt"
Working                       Staging    .git
Tree                          Area       directory
-------------------------------------------------------------------------------------
file_1.txt                               ### create file_1.txt file_2.txt files
  (emtpy)                                file_1.txt
file_2.txt                                 (empty)
  Hola mundo cruel!                      file_2.txt
file_to_ignore.txt                         (empty)
  (empty)                                ### modify file_2.txt file
.gitignore                               file_2.txt
  file_to_ignore.txt                       Hola mundo cruel!
  other_file_to_ignore.txt               ### create a new .gitignore
other_file_to_ignore.txt                 .gitignore
  (empty)                                  file_to_ignore.txt
file_3.txt                                 other_file_to_ignore.txt
  (empty)                                ### create file_3.txt
file_4.txt                               file_3.txt
  (empty)                                  (empty)
[ ]:
!git add file_4.txt
!git commit -m "create file_4.txt"
Working                       Staging    .git
Tree                          Area       directory
-------------------------------------------------------------------------------------
file_1.txt                               ### create file_1.txt file_2.txt files
  (emtpy)                                file_1.txt
file_2.txt                                 (empty)
  Hola mundo cruel!                      file_2.txt
file_to_ignore.txt                         (empty)
  (empty)                                ### modify file_2.txt file
.gitignore                               file_2.txt
  file_to_ignore.txt                       Hola mundo cruel!
  other_file_to_ignore.txt               ### create a new .gitignore
other_file_to_ignore.txt                 .gitignore
  (empty)                                  file_to_ignore.txt
file_3.txt                                 other_file_to_ignore.txt
  (empty)                                ### create file_3.txt
file_4.txt                               file_3.txt
  (empty)                                  (empty)
                                         ### create file_4.txt
                                         file_4.txt
                                           (empty)
[ ]:
!git log

Restaurar la última versión guardada#

[ ]:
!echo "linea 1" >> file_4.txt
!git add file_4.txt
!cat file_4.txt
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                    file_4.txt    ### create file_1.txt file_2.txt files
  (emtpy)                       linea 1     file_1.txt
file_2.txt                                    (empty)
  Hola mundo cruel!                         file_2.txt
file_to_ignore.txt                            (empty)
  (empty)                                   ### modify file_2.txt file
.gitignore                                  file_2.txt
  file_to_ignore.txt                          Hola mundo cruel!
  other_file_to_ignore.txt                  ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)                                   ### create file_3.txt
file_4.txt                                  file_3.txt
  linea 1                                     (empty)
                                            ### create file_4.txt
                                            file_4.txt
                                              (empty)
[ ]:
!echo "linea 2" >> file_4.txt
!git add file_4.txt
!cat file_4.txt
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                    file_4.txt    ### create file_1.txt file_2.txt files
  (emtpy)                       linea 1     file_1.txt
file_2.txt                    file_4.txt      (empty)
  Hola mundo cruel!             linea 1     file_2.txt
file_to_ignore.txt              linea 2       (empty)
  (empty)                                   ### modify file_2.txt file
.gitignore                                  file_2.txt
  file_to_ignore.txt                          Hola mundo cruel!
  other_file_to_ignore.txt                  ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)                                   ### create file_3.txt
file_4.txt                                  file_3.txt
  linea 1                                     (empty)
  linea 2                                   ### create file_4.txt
                                            file_4.txt
                                              (empty)
[ ]:
!echo "linea 3" >> file_4.txt
!cat file_4.txt
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                    file_4.txt    ### create file_1.txt file_2.txt files
  (emtpy)                       linea 1     file_1.txt
file_2.txt                    file_4.txt      (empty)
  Hola mundo cruel!             linea 1     file_2.txt
file_to_ignore.txt              linea 2       (empty)
  (empty)                     file_4.txt    ### modify file_2.txt file
.gitignore                      linea 1     file_2.txt
  file_to_ignore.txt            linea 2       Hola mundo cruel!
  other_file_to_ignore.txt      linea 3     ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)                                   ### create file_3.txt
file_4.txt                                  file_3.txt
  linea 1                                     (empty)
  linea 2                                   ### create file_4.txt
  linea 3                                   file_4.txt
                                              (empty)
[ ]:
# Se deshace el cambio en el archivo
!git checkout -- file_4.txt
!cat file_4.txt
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                    file_4.txt    ### create file_1.txt file_2.txt files
  (emtpy)                       linea 1     file_1.txt
file_2.txt                    file_4.txt      (empty)
  Hola mundo cruel!             linea 1     file_2.txt
file_to_ignore.txt              linea 2       (empty)
  (empty)                                   ### modify file_2.txt file
.gitignore                                  file_2.txt
  file_to_ignore.txt                          Hola mundo cruel!
  other_file_to_ignore.txt                  ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)                                   ### create file_3.txt
file_4.txt                                  file_3.txt
  linea 1                                     (empty)
  linea 2                                   ### create file_4.txt
                                            file_4.txt
                                              (empty)
[ ]:
!git status

Deshacer el útimo add#

[ ]:
!echo "linea 3" >> file_4.txt
!git add file_4.txt
!git status
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                    file_4.txt    ### create file_1.txt file_2.txt files
  (emtpy)                       linea 1     file_1.txt
file_2.txt                    file_4.txt      (empty)
  Hola mundo cruel!             linea 1     file_2.txt
file_to_ignore.txt              linea 2       (empty)
  (empty)                     file_4.txt    ### modify file_2.txt file
.gitignore                      linea 1     file_2.txt
  file_to_ignore.txt            linea 2       Hola mundo cruel!
  other_file_to_ignore.txt      linea 3     ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)                                   ### create file_3.txt
file_4.txt                                  file_3.txt
  linea 1                                     (empty)
  linea 2                                   ### create file_4.txt
  linea 3                                   file_4.txt
                                              (empty)
[ ]:
!git restore --staged file_4.txt
!git diff -v
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                                  ### create file_1.txt file_2.txt files
  (emtpy)                                   file_1.txt
file_2.txt                                    (empty)
  Hola mundo cruel!                         file_2.txt
file_to_ignore.txt                            (empty)
  (empty)                                   ### modify file_2.txt file
.gitignore                                    file_2.txt
  file_to_ignore.txt                          Hola mundo cruel!
  other_file_to_ignore.txt                  ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)                                   ### create file_3.txt
file_4.txt                                  file_3.txt
  linea 1                                     (empty)
  linea 2                                   ### create file_4.txt
  linea 3                                   file_4.txt
                                              (empty)
[ ]:
!git status

Restaurar el archivo original desde el ultimo commit#

[ ]:
!git restore file_4.txt
!git status
Working                       Staging       .git
Tree                          Area          directory
-------------------------------------------------------------------------------------
file_1.txt                                  ### create file_1.txt file_2.txt files
  (emtpy)                                   file_1.txt
file_2.txt                                    (empty)
  Hola mundo cruel!                         file_2.txt
file_to_ignore.txt                            (empty)
  (empty)                                   ### modify file_2.txt file
.gitignore                                    file_2.txt
  file_to_ignore.txt                          Hola mundo cruel!
  other_file_to_ignore.txt                  ### create a new .gitignore
other_file_to_ignore.txt                    .gitignore
  (empty)                                     file_to_ignore.txt
file_3.txt                                    other_file_to_ignore.txt
  (empty)                                   ### create file_3.txt
file_4.txt                                  file_3.txt
  (empty)                                     (empty)
                                            ### create file_4.txt
                                            file_4.txt
                                              (empty)
[ ]:
!cat file_4.txt
[ ]:
# --< Limpieza del área de trabajo >-------------------------------------------
%cd ..
!rm -rf git-demo