Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Git Tutorial –
Undoing Changes
Bryan Lin
2013/11/25
Agenda







Overview
git checkout
git revert
git reset
git clean
Overview


This tutorial provides all of the necessary
skills to work with previous revisions of a
software project. Firs...
git checkout


Serves three distinct functions:
◦ checking out files
◦ checking out commits
◦ checking out branches
git checkout


Usage:
◦ git checkout master
 Return to the master branch

◦ git checkout <commit> <file>
 Check out a p...
git checkout


Disscusion:
◦ git checkout is an easy way to ―load‖ any of
these saved snapshots onto your development
mac...
git checkout


Disscusion:
◦ detached HEAD state:

 when you check out a previous commit, HEAD no
longer points to a bra...
git checkout


Disscusion:
◦ On the other hand, checking out an old file
does affect the current state of your repository...
git checkout


Example:
◦ Viewing an Old Revision
 git log –oneline
 you can see the result like the following:
Checkou...
git checkout


Example:
◦ Viewing an Old Revision
 Use git checkout to view the ―Make some import
changes to hello.py‖
◦...
git checkout


Example:
◦ Checking Out a File
 Only wanted to see the hello.py file from the old
commit
◦ git checkout a...
git checkout


Exercise:
◦ Create a git repository, and add
1.txt, 2.txt, 3.txt for commit 1, b.txt for
commit 2

commit1...
git checkout


Exercise:
◦
◦
◦
◦
◦
◦

checkout commit1
revert to master
checkout 2.txt of commit1
commit 2.txt
checkout 1...
git revert
The git revert command undoes a
committed snapshot
 Appends a new commit with the resulting
content

git revert


Usage
◦ git revert <commit>
◦ Generate a new commit that undoes all of the
changes introduced in <commit>, t...
git revert


Discussion
◦ Reverting should be used when you want to
remove an entire commit from your project
history, su...
git revert


Discussion
◦ Reverting vs. Resetting
 It's important to understand that git
revert undoes a single commit—i...
git revert


Discussion
◦ Reverting vs. Resetting
git revert


Example
◦ commits a snapshot, then immediately undoes
it with a revert
git revert


Example
◦ This can be visualized as the following:
git revert


Example
◦ commits a snapshot, then immediately undoes
it with a revert
git revert


Example
◦ Note that the 4th commit is still in the project
history after the revert. Instead of deleting
it,...
git reset


Discussion
◦ If git revert is a ―safe‖ way to undo
changes, you can think of git reset as
the dangerous metho...
git reset


Usage
◦ git reset <file>
 Remove the specified file from the staging
area, but leave the working directory u...
git reset


Usage
◦ git reset –hard
 Reset the staging area and the working directory
to match the most recent commit

◦...
git reset


Usage
◦ git reset --hard <commit>
 Move the current branch tip backward
to <commit> and reset both the stagi...
git reset


Discussion
◦ Whereas reverting is designed to safely undo
a public commit, git reset is designed to undo
loca...
git reset


Don’t Reset Public History
◦ Removing a commit that other team members
have continued developing poses seriou...
git reset
git reset


Examples
◦ Unstaging a File
 Assumes you have two files
called hello.py and main.py that you’ve already
adde...
git reset


Examples
◦ Unstaging a File
git reset


Examples
◦ Removing Local Commits
git clean


The git clean command removes
untracked files from your working
directory
git clean


Usage
◦ git clean –n
 This will show you which files are going to be
removed without actually doing it

◦ gi...
git clean


Usage
◦ git clean -f <path>
 Remove untracked files, but limit the operation to
the specified path

◦ git cl...
git clean


Discussion
◦ The git reset --hard and git clean -f commands
are your best friends after you’ve made some
emba...
git clean


Example
◦ Assumes you’ve already committed a few
snapshots and are experimenting with some
new developments
FAQ
Upcoming SlideShare
Loading in …5
×

Git tutorial undoing changes

417 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Git tutorial undoing changes

  1. 1. Git Tutorial – Undoing Changes Bryan Lin 2013/11/25
  2. 2. Agenda      Overview git checkout git revert git reset git clean
  3. 3. Overview  This tutorial provides all of the necessary skills to work with previous revisions of a software project. First, it shows you how to explore old commits, then it explains the difference between reverting public commits in the project history vs. resetting unpublished changes on your local machine.
  4. 4. git checkout  Serves three distinct functions: ◦ checking out files ◦ checking out commits ◦ checking out branches
  5. 5. git checkout  Usage: ◦ git checkout master  Return to the master branch ◦ git checkout <commit> <file>  Check out a previous version of a file ◦ git checkout <commit>  Update all files in the working directory to match the specified commit
  6. 6. git checkout  Disscusion: ◦ git checkout is an easy way to ―load‖ any of these saved snapshots onto your development machine ◦ Checking out an old commit is a read-only operation
  7. 7. git checkout  Disscusion: ◦ detached HEAD state:  when you check out a previous commit, HEAD no longer points to a branch—it points directly to a commit
  8. 8. git checkout  Disscusion: ◦ On the other hand, checking out an old file does affect the current state of your repository. You can re-commit the old version in a new snapshot as you would any other file
  9. 9. git checkout  Example: ◦ Viewing an Old Revision  git log –oneline  you can see the result like the following: Checkout this commit This is ―commit‖
  10. 10. git checkout  Example: ◦ Viewing an Old Revision  Use git checkout to view the ―Make some import changes to hello.py‖ ◦ git checkout a1e8fb5  Get back to the ―current‖ state of your project ◦ git checkout master
  11. 11. git checkout  Example: ◦ Checking Out a File  Only wanted to see the hello.py file from the old commit ◦ git checkout a1e8fb5 hello.py  Discard this change ◦ git checkout HEAD hello.py
  12. 12. git checkout  Exercise: ◦ Create a git repository, and add 1.txt, 2.txt, 3.txt for commit 1, b.txt for commit 2 commit1 commit2
  13. 13. git checkout  Exercise: ◦ ◦ ◦ ◦ ◦ ◦ checkout commit1 revert to master checkout 2.txt of commit1 commit 2.txt checkout 1.txt discard the change of 1.txt
  14. 14. git revert The git revert command undoes a committed snapshot  Appends a new commit with the resulting content 
  15. 15. git revert  Usage ◦ git revert <commit> ◦ Generate a new commit that undoes all of the changes introduced in <commit>, then apply it to the current branch
  16. 16. git revert  Discussion ◦ Reverting should be used when you want to remove an entire commit from your project history, such as fixing the bug of this commit, then commit a new snapshot.
  17. 17. git revert  Discussion ◦ Reverting vs. Resetting  It's important to understand that git revert undoes a single commit—it does not "revert" back to the previous state of a project by removing all subsequent commits. In Git, this is actually called a reset, not a revert
  18. 18. git revert  Discussion ◦ Reverting vs. Resetting
  19. 19. git revert  Example ◦ commits a snapshot, then immediately undoes it with a revert
  20. 20. git revert  Example ◦ This can be visualized as the following:
  21. 21. git revert  Example ◦ commits a snapshot, then immediately undoes it with a revert
  22. 22. git revert  Example ◦ Note that the 4th commit is still in the project history after the revert. Instead of deleting it, git revert added a new commit to undo its changes. As a result, the 3rd and 5th commits represent the exact same code base, and the 4th commit is still in our history just in case we want to go back to it down the road
  23. 23. git reset  Discussion ◦ If git revert is a ―safe‖ way to undo changes, you can think of git reset as the dangerous method. When you undo with git reset(and the commits are no longer referenced by any ref or the reflog), there is no way to retrieve the original copy—it is a permanent undo
  24. 24. git reset  Usage ◦ git reset <file>  Remove the specified file from the staging area, but leave the working directory unchanged ◦ git reset  Reset the staging area to match the most recent commit, but leave the working directory unchanged
  25. 25. git reset  Usage ◦ git reset –hard  Reset the staging area and the working directory to match the most recent commit ◦ git reset <commit>  Move the current branch tip backward to <commit>, reset the staging area to match, but leave the working directory alone ◦ git reset --hard <commit>
  26. 26. git reset  Usage ◦ git reset --hard <commit>  Move the current branch tip backward to <commit> and reset both the staging area and the working directory to match
  27. 27. git reset  Discussion ◦ Whereas reverting is designed to safely undo a public commit, git reset is designed to undo local changes
  28. 28. git reset  Don’t Reset Public History ◦ Removing a commit that other team members have continued developing poses serious problems for collaboration
  29. 29. git reset
  30. 30. git reset  Examples ◦ Unstaging a File  Assumes you have two files called hello.py and main.py that you’ve already added to the repository
  31. 31. git reset  Examples ◦ Unstaging a File
  32. 32. git reset  Examples ◦ Removing Local Commits
  33. 33. git clean  The git clean command removes untracked files from your working directory
  34. 34. git clean  Usage ◦ git clean –n  This will show you which files are going to be removed without actually doing it ◦ git clean –f  Remove untracked files from the current directory.  The -f (force) flag is required unless the clean.requireForce configuration option is set to false (it's true by default).  This will not remove untracked folders or files specified by .gitignore.
  35. 35. git clean  Usage ◦ git clean -f <path>  Remove untracked files, but limit the operation to the specified path ◦ git clean –df  Remove untracked files and untracked directories from the current directory ◦ git clean –xf  Remove untracked files from the current directory as well as any files that Git usually ignores
  36. 36. git clean  Discussion ◦ The git reset --hard and git clean -f commands are your best friends after you’ve made some embarrassing developments in your local repository and want to burn the evidence ◦ The git clean command can also be useful for cleaning up the working directory after a build
  37. 37. git clean  Example ◦ Assumes you’ve already committed a few snapshots and are experimenting with some new developments
  38. 38. FAQ

×