git-novice
git-novice copied to clipboard
Unclear description of git restore -s vs git revert
How could the content be improved?
In the Reverting a committ challenge there is a paragraph:
The command
git revertis different fromgit restore -s [commit ID] .becausegit restorereturns the files not yet committed within the local repository to a previous state, whereasgit revertreverses changes committed to the local and project repositories.
Which is hard to understand, we are considering changing it to:
The command
git revertis different fromgit restore -s [commit ID] ..git restorerestores files within the local repository to a previous state, whereasgit revertrestores the files to a previous state and adds then commits these changes to the local repository. Sogit reverthere is the same asgit restore -s [commit ID]followed bygit commit -am Reverts: [commit].
So it's clearer what the difference is between the two commands.
Which part of the content does your suggestion apply to?
https://swcarpentry.github.io/git-novice/05-history.html
I think this is a fair point, but it misses a key difference between the two: restore is primarily used to restore previous version of given files (all, if we really want, but that's a special case), whereas revert is used to entirely undo a commit. I think we are depicting them as more similar than they actually are: while they do similar things in the specific case mentioned, their use cases are quite different.
This is what the git documentation states:
git-revert[1] is about making a new commit that reverts the changes made by other commits. git-restore[1] is about restoring files in the working tree from either the index or another commit. This command does not update your branch. The command can also be used to restore files in the index from another commit.
So I suggest we keep it simple and change that paragraph to
The command
git revertis different fromgit restore -s [commit ID] .in thatrevertmakes a new commit that undoes the changes made by a previous commit, whereasrestorereturns files to a previous state, but without committing.restorecan also be used on individual files.
What do you think?