The documentation says:

> 
> 
> ```
> - (void)reset
> 
> ```
> 
> Returns the receiver to its base state.
> 
> 
> ### Discussion
> 
> 
> All the receiver's managed objects are “forgotten.” If you use this method, you should ensure that you also discard references to any managed objects fetched using the receiver, since they will be invalid afterwards.
> 
> 
> 

---

> 
> 
> ```
> - (void)rollback
> 
> ```
> 
> Removes everything from the undo stack, discards all insertions and deletions, and restores updated objects to their last committed values.
> 
> 
> ### Discussion
> 
> 
> This method does not refetch data from the persistent store or stores.
> 
> 
> 

It seems that after I make some change to my context, calling these two method will do exactly the same thing: discard changes and restore updated objects to their last committed values. So what does `-reset` actually do?