46e91b663b
Previously the switching branch business of 'git checkout' becomes a new command 'switch'. This adds the restore command for the checking out paths path. Similar to git-switch, a new man page is added to describe what the command will become. The implementation will be updated shortly to match the man page. A couple main differences from 'git checkout <paths>': - 'restore' by default will only update worktree. This matters more when --source is specified ('checkout <tree> <paths>' updates both worktree and index). - 'restore --staged' can be used to restore the index. This command overlaps with 'git reset <paths>'. - both worktree and index could also be restored at the same time (from a tree) when both --staged and --worktree are specified. This overlaps with 'git checkout <tree> <paths>' - default source for restoring worktree and index is the index and HEAD respectively. A different (tree) source could be specified as with --source (*). - when both index and worktree are restored, --source must be specified since the default source for these two individual targets are different (**) - --no-overlay is enabled by default, if an entry is missing in the source, restoring means deleting the entry (*) I originally went with --from instead of --source. I still think --from is a better name. The short option -f however is already taken by force. And I do think short option is good to have, e.g. to write -s@ or -s@^ instead of --source=HEAD. (**) If you sit down and think about it, moving worktree's source from the index to HEAD makes sense, but nobody is really thinking it through when they type the commands. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
133 lines
4.1 KiB
Plaintext
133 lines
4.1 KiB
Plaintext
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
|
|
'git revert' --quit
|
|
'git revert' --abort
|
|
|
|
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-checkout[1], specifically the `git checkout
|
|
<commit> -- <filename>` syntax. 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.
|
|
|
|
-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>]::
|
|
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.
|
|
|
|
-s::
|
|
--signoff::
|
|
Add Signed-off-by line 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.
|
|
|
|
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.
|
|
|
|
SEE ALSO
|
|
--------
|
|
linkgit:git-cherry-pick[1]
|
|
|
|
GIT
|
|
---
|
|
Part of the linkgit:git[1] suite
|