diff options
Diffstat (limited to 'Documentation/git-revert.txt')
-rw-r--r-- | Documentation/git-revert.txt | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt new file mode 100644 index 0000000..cbe0208 --- /dev/null +++ b/Documentation/git-revert.txt @@ -0,0 +1,168 @@ +git-revert(1) +============= + +NAME +---- +git-revert - Revert some existing commits + +SYNOPSIS +-------- +[verse] +'git revert' [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] <commit>... +'git revert' (--continue | --skip | --abort | --quit) + +DESCRIPTION +----------- + +Given one or more existing commits, revert the changes that the +related patches introduce, and record some new commits that record +them. This requires your working tree to be clean (no modifications +from the HEAD commit). + +Note: 'git revert' is used to record some new commits to reverse the +effect of some earlier commits (often only a faulty one). If you want to +throw away all uncommitted changes in your working directory, you +should see linkgit:git-reset[1], particularly the `--hard` option. If +you want to extract specific files as they were in another commit, you +should see linkgit:git-restore[1], specifically the `--source` +option. Take care with these alternatives as +both will discard uncommitted changes in your working directory. + +See "Reset, restore and revert" in linkgit:git[1] for the differences +between the three commands. + +OPTIONS +------- +<commit>...:: + Commits to revert. + For a more complete list of ways to spell commit names, see + linkgit:gitrevisions[7]. + Sets of commits can also be given but no traversal is done by + default, see linkgit:git-rev-list[1] and its `--no-walk` + option. + +-e:: +--edit:: + With this option, 'git revert' will let you edit the commit + message prior to committing the revert. This is the default if + you run the command from a terminal. + +-m parent-number:: +--mainline parent-number:: + Usually you cannot revert a merge because you do not know which + side of the merge should be considered the mainline. This + option specifies the parent number (starting from 1) of + the mainline and allows revert to reverse the change + relative to the specified parent. ++ +Reverting a merge commit declares that you will never want the tree changes +brought in by the merge. As a result, later merges will only bring in tree +changes introduced by commits that are not ancestors of the previously +reverted merge. This may or may not be what you want. ++ +See the link:howto/revert-a-faulty-merge.html[revert-a-faulty-merge How-To] for +more details. + +--no-edit:: + With this option, 'git revert' will not start the commit + message editor. + +--cleanup=<mode>:: + This option determines how the commit message will be cleaned up before + being passed on to the commit machinery. See linkgit:git-commit[1] for more + details. In particular, if the '<mode>' is given a value of `scissors`, + scissors will be appended to `MERGE_MSG` before being passed on in the case + of a conflict. + +-n:: +--no-commit:: + Usually the command automatically creates some commits with + commit log messages stating which commits were + reverted. This flag applies the changes necessary + to revert the named commits to your working tree + and the index, but does not make the commits. In addition, + when this option is used, your index does not have to match + the HEAD commit. The revert is done against the + beginning state of your index. ++ +This is useful when reverting more than one commits' +effect to your index in a row. + +-S[<keyid>]:: +--gpg-sign[=<keyid>]:: +--no-gpg-sign:: + GPG-sign commits. The `keyid` argument is optional and + defaults to the committer identity; if specified, it must be + stuck to the option without a space. `--no-gpg-sign` is useful to + countermand both `commit.gpgSign` configuration variable, and + earlier `--gpg-sign`. + +-s:: +--signoff:: + Add a `Signed-off-by` trailer at the end of the commit message. + See the signoff option in linkgit:git-commit[1] for more information. + +--strategy=<strategy>:: + Use the given merge strategy. Should only be used once. + See the MERGE STRATEGIES section in linkgit:git-merge[1] + for details. + +-X<option>:: +--strategy-option=<option>:: + Pass the merge strategy-specific option through to the + merge strategy. See linkgit:git-merge[1] for details. + +include::rerere-options.txt[] + +--reference:: + Instead of starting the body of the log message with "This + reverts <full object name of the commit being reverted>.", + refer to the commit using "--pretty=reference" format + (cf. linkgit:git-log[1]). The `revert.reference` + configuration variable can be used to enable this option by + default. + + +SEQUENCER SUBCOMMANDS +--------------------- +include::sequencer.txt[] + +EXAMPLES +-------- +`git revert HEAD~3`:: + + Revert the changes specified by the fourth last commit in HEAD + and create a new commit with the reverted changes. + +`git revert -n master~5..master~2`:: + + Revert the changes done by commits from the fifth last commit + in master (included) to the third last commit in master + (included), but do not create any commit with the reverted + changes. The revert only modifies the working tree and the + index. + +DISCUSSION +---------- + +While git creates a basic commit message automatically, it is +_strongly_ recommended to explain why the original commit is being +reverted. +In addition, repeatedly reverting reverts will result in increasingly +unwieldy subject lines, for example 'Reapply "Reapply "<original subject>""'. +Please consider rewording these to be shorter and more unique. + +CONFIGURATION +------------- + +include::includes/cmd-config-section-all.txt[] + +include::config/revert.txt[] + +SEE ALSO +-------- +linkgit:git-cherry-pick[1] + +GIT +--- +Part of the linkgit:git[1] suite |