and give an example to show how it can be used. Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx> --- Documentation/git-reset.txt | 41 ++++++++++++++++++++++++++++++++++++++--- 1 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt index b78e2e1..3d7c206 100644 --- a/Documentation/git-reset.txt +++ b/Documentation/git-reset.txt @@ -8,7 +8,7 @@ git-reset - Reset current HEAD to the specified state SYNOPSIS -------- [verse] -'git reset' [--mixed | --soft | --hard | --merge] [-q] [<commit>] +'git reset' [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>] 'git reset' [-q] [<commit>] [--] <paths>... 'git reset' --patch [<commit>] [--] [<paths>...] @@ -52,6 +52,11 @@ OPTIONS and updates the files that are different between the named commit and the current commit in the working tree. +--keep:: + Resets the index to match the tree recorded by the named commit, + but keep changes in the working tree. Aborts if the reset would + change files that are already changes in the working tree. + -p:: --patch:: Interactively select hunks in the difference between the index @@ -86,6 +91,7 @@ reset options depending on the state of the files. --mixed A D D --hard D D D --merge (disallowed) + --keep (disallowed) working index HEAD target working index HEAD ---------------------------------------------------- @@ -93,6 +99,7 @@ reset options depending on the state of the files. --mixed A C C --hard C C C --merge (disallowed) + --keep A C C working index HEAD target working index HEAD ---------------------------------------------------- @@ -100,6 +107,7 @@ reset options depending on the state of the files. --mixed B D D --hard D D D --merge D D D + --keep (disallowed) working index HEAD target working index HEAD ---------------------------------------------------- @@ -107,13 +115,14 @@ reset options depending on the state of the files. --mixed B C C --hard C C C --merge C C C + --keep B C C In these tables, A, B, C and D are some different states of a file. For example, the last line of the last table means that if a file is in state B in the working tree and the index, and in a different state C in HEAD and in the target, then "git reset ---merge target" will put the file in state C in the working tree, -in the index and in HEAD. +--keep target" will put the file in state B in the working tree, +and in state C in the index and in HEAD. The following tables show what happens when there are unmerged entries: @@ -124,6 +133,7 @@ entries: --mixed X B B --hard B B B --merge B B B + --keep (disallowed) working index HEAD target working index HEAD ---------------------------------------------------- @@ -131,6 +141,7 @@ entries: --mixed X A A --hard A A A --merge A A A + --keep X A A X means any state and U means an unmerged index. @@ -302,6 +313,30 @@ $ git add frotz.c <3> <2> This commits all other changes in the index. <3> Adds the file to the index again. +Keep changes in working tree while discarding some previous commits:: ++ +Suppose you are working on something and you commit it, and then you +continue working a bit more, but now you think that what you have in +your working tree should be in another branch that has nothing to do +with what you commited previously. You can start a new branch and +reset it while keeping the changes in your work tree. ++ +------------ +$ git tag start +$ git branch branch1 +$ edit +$ git commit ... <1> +$ edit +$ git branch branch2 <2> +$ git reset --keep start <3> +------------ ++ +<1> This commits your first edits in branch1. +<2> This creates branch2, but unfortunately it contains the previous +commit that you don't want in this branch. +<3> This removes the unwanted previous commit, but this keeps the +changes in your working tree. + Author ------ Written by Junio C Hamano <gitster@xxxxxxxxx> and Linus Torvalds <torvalds@xxxxxxxx> -- 1.6.6.rc2.5.g49666 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html