Skip to content

Commit

Permalink
Documentation: reset: add some tables to describe the different options
Browse files Browse the repository at this point in the history
This patch adds a DISCUSSION section that contains some tables to
show how the different "git reset" options work depending on the
states of the files in the working tree, the index, HEAD and the
target commit.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Christian Couder authored and Junio C Hamano committed Dec 30, 2009
1 parent 2b06b0a commit 4086010
Showing 1 changed file with 66 additions and 0 deletions.
66 changes: 66 additions & 0 deletions Documentation/git-reset.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,72 @@ linkgit:git-add[1]).
<commit>::
Commit to make the current HEAD. If not given defaults to HEAD.

DISCUSSION
----------

The tables below show what happens when running:

----------
git reset --option target
----------

to reset the HEAD to another commit (`target`) with the different
reset options depending on the state of the files.

working index HEAD target working index HEAD
----------------------------------------------------
A B C D --soft A B D
--mixed A D D
--hard D D D
--merge (disallowed)

working index HEAD target working index HEAD
----------------------------------------------------
A B C C --soft A B C
--mixed A C C
--hard C C C
--merge (disallowed)

working index HEAD target working index HEAD
----------------------------------------------------
B B C D --soft B B D
--mixed B D D
--hard D D D
--merge D D D

working index HEAD target working index HEAD
----------------------------------------------------
B B C C --soft B B C
--mixed B C C
--hard C C C
--merge C 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.

The following tables show what happens when there are unmerged
entries:

working index HEAD target working index HEAD
----------------------------------------------------
X U A B --soft (disallowed)
--mixed X B B
--hard B B B
--merge (disallowed)

working index HEAD target working index HEAD
----------------------------------------------------
X U A A --soft (disallowed)
--mixed X A A
--hard A A A
--merge (disallowed)

X means any state and U means an unmerged index.

Examples
--------

Expand Down

0 comments on commit 4086010

Please sign in to comment.