* [RFC PATCH 1/5] Documentation/git-reset: reorder modes for soft-mixed-hard progression
2010-07-16 9:44 [RFC PATCH 0/5] git-reset documentation changes Thomas Rast
@ 2010-07-16 9:44 ` Thomas Rast
2010-07-16 9:44 ` [RFC PATCH 2/5] Documentation/reset: separate options by mode Thomas Rast
` (4 subsequent siblings)
5 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-16 9:44 UTC (permalink / raw)
To: git
Reorder the documetation so that the soft/mixed/hard modes are in this
order. This way they form a natural progression towards changing more
of the state.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 645f0c1..dbb810d 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 | --keep] [-q] [<commit>]
+'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
'git reset' [-q] [<commit>] [--] <paths>...
'git reset' --patch [<commit>] [--] [<paths>...]
@@ -31,17 +31,17 @@ HEAD.
OPTIONS
-------
---mixed::
- Resets the index but not the working tree (i.e., the changed files
- are preserved but not marked for commit) and reports what has not
- been updated. This is the default action.
-
--soft::
Does not touch the index file nor the working tree at all, but
requires them to be in a good order. This leaves all your changed
files "Changes to be committed", as 'git status' would
put it.
+--mixed::
+ Resets the index but not the working tree (i.e., the changed files
+ are preserved but not marked for commit) and reports what has not
+ been updated. This is the default action.
+
--hard::
Matches the working tree and index to that of the tree being
switched to. Any changes to tracked files in the working tree
--
1.7.2.rc3.259.g43154
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [RFC PATCH 2/5] Documentation/reset: separate options by mode
2010-07-16 9:44 [RFC PATCH 0/5] git-reset documentation changes Thomas Rast
2010-07-16 9:44 ` [RFC PATCH 1/5] Documentation/git-reset: reorder modes for soft-mixed-hard progression Thomas Rast
@ 2010-07-16 9:44 ` Thomas Rast
2010-07-16 20:43 ` Junio C Hamano
2010-07-16 9:44 ` [RFC PATCH 3/5] Documentation/reset: promote 'examples' one section up Thomas Rast
` (3 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Thomas Rast @ 2010-07-16 9:44 UTC (permalink / raw)
To: git
Remove all but -q from the OPTIONS section, and instead explain the
options separated by usage mode, since they only apply to one each.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
fixup! Documentation/reset: separate options by mode
---
Documentation/git-reset.txt | 58 +++++++++++++++++++++++-------------------
1 files changed, 32 insertions(+), 26 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index dbb810d..46b2d2a 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -8,29 +8,38 @@ git-reset - Reset current HEAD to the specified state
SYNOPSIS
--------
[verse]
-'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
'git reset' [-q] [<commit>] [--] <paths>...
'git reset' --patch [<commit>] [--] [<paths>...]
+'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
DESCRIPTION
-----------
-Sets the current head to the specified commit and optionally resets the
-index and working tree to match.
-
-This command is useful if you notice some small error in a recent
-commit (or set of commits) and want to redo that part without showing
-the undo in the history.
-
-If you want to undo a commit other than the latest on a branch,
-linkgit:git-revert[1] is your friend.
-
-The second and third forms with 'paths' and/or --patch are used to
-revert selected paths in the index from a given commit, without moving
-HEAD.
+Sets the current branch to the specified <commit> and optionally
+resets the index and working tree to match. The <commit> defaults to
+HEAD in all forms.
+
+'git reset' [-q] [<commit>] [--] <paths>...::
+ This form resets the index entries for all <paths> to their
+ state at the <commit>. (It does not affect the worktree, nor
+ the current branch.)
++
+This means that `git reset <paths>` is the opposite of `git add
+<paths>`, provided that the <paths> were already tracked.
+'git reset' --patch|-p [<commit>] [--] [<paths>...]::
+ Interactively select hunks in the difference between the index
+ and <commit> (defaults to HEAD). The chosen hunks are applied
+ in reverse to the index.
++
+This means that `git reset -p` is the opposite of `git add -p` (see
+linkgit:git-add[1]).
-OPTIONS
--------
+'git reset' [--<mode>] [<commit>]::
+ This form points the current branch to <commit> and then
+ updates index and working tree according to <mode>, which must
+ be one of the following:
++
+--
--soft::
Does not touch the index file nor the working tree at all, but
requires them to be in a good order. This leaves all your changed
@@ -59,22 +68,19 @@ OPTIONS
the given commit. If a file that is different between the
current commit and the given commit has local changes, reset
is aborted.
+--
--p::
---patch::
- Interactively select hunks in the difference between the index
- and <commit> (defaults to HEAD). The chosen hunks are applied
- in reverse to the index.
-+
-This means that `git reset -p` is the opposite of `git add -p` (see
-linkgit:git-add[1]).
+If you want to undo a commit other than the latest on a branch,
+linkgit:git-revert[1] is your friend.
+
+
+OPTIONS
+-------
-q::
--quiet::
Be quiet, only report errors.
-<commit>::
- Commit to make the current HEAD. If not given defaults to HEAD.
DISCUSSION
----------
--
1.7.2.rc3.259.g43154
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [RFC PATCH 2/5] Documentation/reset: separate options by mode
2010-07-16 9:44 ` [RFC PATCH 2/5] Documentation/reset: separate options by mode Thomas Rast
@ 2010-07-16 20:43 ` Junio C Hamano
2010-07-18 18:23 ` [PATCH v2 0/5] git-reset documentation changes Thomas Rast
0 siblings, 1 reply; 14+ messages in thread
From: Junio C Hamano @ 2010-07-16 20:43 UTC (permalink / raw)
To: Thomas Rast; +Cc: git
Thomas Rast <trast@student.ethz.ch> writes:
> Remove all but -q from the OPTIONS section, and instead explain the
> options separated by usage mode, since they only apply to one each.
>
> Signed-off-by: Thomas Rast <trast@student.ethz.ch>
>
> fixup! Documentation/reset: separate options by mode
> ---
> Documentation/git-reset.txt | 58 +++++++++++++++++++++++-------------------
> 1 files changed, 32 insertions(+), 26 deletions(-)
>
> diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
> index dbb810d..46b2d2a 100644
> --- a/Documentation/git-reset.txt
> +++ b/Documentation/git-reset.txt
> @@ -8,29 +8,38 @@ git-reset - Reset current HEAD to the specified state
> SYNOPSIS
> --------
> [verse]
> -'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
> 'git reset' [-q] [<commit>] [--] <paths>...
> 'git reset' --patch [<commit>] [--] [<paths>...]
> +'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
>
> DESCRIPTION
> -----------
> +Sets the current branch to the specified <commit> and optionally
> +resets the index and working tree to match. The <commit> defaults to
> +HEAD in all forms.
With a careless reading of this paragraph, I got an impression that HEAD
is always affected, but I happen to know that is not the case ;-).
- "reset" is primarily about resetting the index and the --soft option
can be used to optionally not to do this.
. with paths, the command is about fixing up the index contents for
given specific paths, to prepare for the next commit. HEAD is not
moved.
. without paths, the command is about changing what commit to build
your next commit on, i.e. HEAD is moved.
> +'git reset' [-q] [<commit>] [--] <paths>...::
> + This form resets the index entries for all <paths> to their
> + state at the <commit>. (It does not affect the worktree, nor
> + the current branch.)
> ++
> +This means that `git reset <paths>` is the opposite of `git add
> +<paths>`, provided that the <paths> were already tracked.
The above is a clearer description of "with-path" mode than what we
currently have. I doubt that we need ", provided that...", though.
"git reset HEAD frotz" from a head commit without frotz gets rid of frotz
from the index, no?
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 0/5] git-reset documentation changes
2010-07-16 20:43 ` Junio C Hamano
@ 2010-07-18 18:23 ` Thomas Rast
2010-07-18 18:23 ` [PATCH v2 1/5] Documentation/git-reset: reorder modes for soft-mixed-hard progression Thomas Rast
` (4 more replies)
0 siblings, 5 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-18 18:23 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
Junio C Hamano wrote:
[on patch 2/5]
> > DESCRIPTION
> > -----------
> > +Sets the current branch to the specified <commit> and optionally
> > +resets the index and working tree to match. The <commit> defaults to
> > +HEAD in all forms.
>
> With a careless reading of this paragraph, I got an impression that HEAD
> is always affected, but I happen to know that is not the case ;-).
>
> - "reset" is primarily about resetting the index and the --soft option
> can be used to optionally not to do this.
>
> . with paths, the command is about fixing up the index contents for
> given specific paths, to prepare for the next commit. HEAD is not
> moved.
>
> . without paths, the command is about changing what commit to build
> your next commit on, i.e. HEAD is moved.
You're right, I completely left out the <paths> mode there. I rewrote
this as a short summary of all three modes in this version.
> "git reset HEAD frotz" from a head commit without frotz gets rid of frotz
> from the index, no?
True. I thought it didn't (and required rm --cached) but I must have
mixed up something.
The other patches are unchanged from v1.
Thomas Rast (5):
Documentation/git-reset: reorder modes for soft-mixed-hard
progression
Documentation/reset: separate options by mode
Documentation/reset: promote 'examples' one section up
Documentation/reset: reorder examples to match description
Documentation/reset: move "undo permanently" example behind "make
topic"
Documentation/git-reset.txt | 347 ++++++++++++++++++++++---------------------
1 files changed, 178 insertions(+), 169 deletions(-)
--
1.7.2.rc3.317.gc287
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 1/5] Documentation/git-reset: reorder modes for soft-mixed-hard progression
2010-07-18 18:23 ` [PATCH v2 0/5] git-reset documentation changes Thomas Rast
@ 2010-07-18 18:23 ` Thomas Rast
2010-07-18 18:23 ` [PATCH v2 2/5] Documentation/reset: separate options by mode Thomas Rast
` (3 subsequent siblings)
4 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-18 18:23 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
Reorder the documetation so that the soft/mixed/hard modes are in this
order. This way they form a natural progression towards changing more
of the state.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 645f0c1..dbb810d 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 | --keep] [-q] [<commit>]
+'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
'git reset' [-q] [<commit>] [--] <paths>...
'git reset' --patch [<commit>] [--] [<paths>...]
@@ -31,17 +31,17 @@ HEAD.
OPTIONS
-------
---mixed::
- Resets the index but not the working tree (i.e., the changed files
- are preserved but not marked for commit) and reports what has not
- been updated. This is the default action.
-
--soft::
Does not touch the index file nor the working tree at all, but
requires them to be in a good order. This leaves all your changed
files "Changes to be committed", as 'git status' would
put it.
+--mixed::
+ Resets the index but not the working tree (i.e., the changed files
+ are preserved but not marked for commit) and reports what has not
+ been updated. This is the default action.
+
--hard::
Matches the working tree and index to that of the tree being
switched to. Any changes to tracked files in the working tree
--
1.7.2.rc3.317.gc287
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 2/5] Documentation/reset: separate options by mode
2010-07-18 18:23 ` [PATCH v2 0/5] git-reset documentation changes Thomas Rast
2010-07-18 18:23 ` [PATCH v2 1/5] Documentation/git-reset: reorder modes for soft-mixed-hard progression Thomas Rast
@ 2010-07-18 18:23 ` Thomas Rast
2010-07-18 18:23 ` [PATCH v2 3/5] Documentation/reset: promote 'examples' one section up Thomas Rast
` (2 subsequent siblings)
4 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-18 18:23 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
Remove all but -q from the OPTIONS section, and instead explain the
options separated by usage mode, since they only apply to one each.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 59 ++++++++++++++++++++++++-------------------
1 files changed, 33 insertions(+), 26 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index dbb810d..dca75b3 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -8,29 +8,39 @@ git-reset - Reset current HEAD to the specified state
SYNOPSIS
--------
[verse]
-'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
'git reset' [-q] [<commit>] [--] <paths>...
'git reset' --patch [<commit>] [--] [<paths>...]
+'git reset' [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
DESCRIPTION
-----------
-Sets the current head to the specified commit and optionally resets the
-index and working tree to match.
-
-This command is useful if you notice some small error in a recent
-commit (or set of commits) and want to redo that part without showing
-the undo in the history.
-
-If you want to undo a commit other than the latest on a branch,
-linkgit:git-revert[1] is your friend.
-
-The second and third forms with 'paths' and/or --patch are used to
-revert selected paths in the index from a given commit, without moving
-HEAD.
+In the first and second form, copy entries from <commit> to the index.
+In the third form, set the current branch to <commit>, optionally
+modifying index and worktree to match. The <commit> defaults to HEAD
+in all forms.
+
+'git reset' [-q] [<commit>] [--] <paths>...::
+ This form resets the index entries for all <paths> to their
+ state at the <commit>. (It does not affect the worktree, nor
+ the current branch.)
++
+This means that `git reset <paths>` is the opposite of `git add
+<paths>`.
+'git reset' --patch|-p [<commit>] [--] [<paths>...]::
+ Interactively select hunks in the difference between the index
+ and <commit> (defaults to HEAD). The chosen hunks are applied
+ in reverse to the index.
++
+This means that `git reset -p` is the opposite of `git add -p` (see
+linkgit:git-add[1]).
-OPTIONS
--------
+'git reset' [--<mode>] [<commit>]::
+ This form points the current branch to <commit> and then
+ updates index and working tree according to <mode>, which must
+ be one of the following:
++
+--
--soft::
Does not touch the index file nor the working tree at all, but
requires them to be in a good order. This leaves all your changed
@@ -59,22 +69,19 @@ OPTIONS
the given commit. If a file that is different between the
current commit and the given commit has local changes, reset
is aborted.
+--
--p::
---patch::
- Interactively select hunks in the difference between the index
- and <commit> (defaults to HEAD). The chosen hunks are applied
- in reverse to the index.
-+
-This means that `git reset -p` is the opposite of `git add -p` (see
-linkgit:git-add[1]).
+If you want to undo a commit other than the latest on a branch,
+linkgit:git-revert[1] is your friend.
+
+
+OPTIONS
+-------
-q::
--quiet::
Be quiet, only report errors.
-<commit>::
- Commit to make the current HEAD. If not given defaults to HEAD.
DISCUSSION
----------
--
1.7.2.rc3.317.gc287
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 3/5] Documentation/reset: promote 'examples' one section up
2010-07-18 18:23 ` [PATCH v2 0/5] git-reset documentation changes Thomas Rast
2010-07-18 18:23 ` [PATCH v2 1/5] Documentation/git-reset: reorder modes for soft-mixed-hard progression Thomas Rast
2010-07-18 18:23 ` [PATCH v2 2/5] Documentation/reset: separate options by mode Thomas Rast
@ 2010-07-18 18:23 ` Thomas Rast
2010-07-18 18:23 ` [PATCH v2 4/5] Documentation/reset: reorder examples to match description Thomas Rast
2010-07-18 18:23 ` [PATCH v2 5/5] Documentation/reset: move "undo permanently" example behind "make topic" Thomas Rast
4 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-18 18:23 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
Move the examples section upwards, before the discussion that gives
the gory details. Adjust the style of the heading accordingly.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 216 ++++++++++++++++++++++---------------------
1 files changed, 109 insertions(+), 107 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index dca75b3..70198f9 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -83,113 +83,7 @@ OPTIONS
Be quiet, only report errors.
-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.
-
-In these tables, A, B, C and D are some different states of a
-file. For example, the first line of the first table means that if a
-file is in state A in the working tree, in state B in the index, in
-state C in HEAD and in state D in the target, then "git reset --soft
-target" will put the file in state A in the working tree, in state B
-in the index and in state D in HEAD.
-
- 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)
- --keep (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)
- --keep A C C
-
- 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
- --keep (disallowed)
-
- 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
- --keep B C C
-
- working index HEAD target working index HEAD
- ----------------------------------------------------
- B C C D --soft B C D
- --mixed B D D
- --hard D D D
- --merge (disallowed)
- --keep (disallowed)
-
- working index HEAD target working index HEAD
- ----------------------------------------------------
- B C C C --soft B C C
- --mixed B C C
- --hard C C C
- --merge B C C
- --keep B C C
-
-"reset --merge" is meant to be used when resetting out of a conflicted
-merge. Any mergy operation guarantees that the work tree file that is
-involved in the merge does not have local change wrt the index before
-it starts, and that it writes the result out to the work tree. So if
-we see some difference between the index and the target and also
-between the index and the work tree, then it means that we are not
-resetting out from a state that a mergy operation left after failing
-with a conflict. That is why we disallow --merge option in this case.
-
-"reset --keep" is meant to be used when removing some of the last
-commits in the current branch while keeping changes in the working
-tree. If there could be conflicts between the changes in the commit we
-want to remove and the changes in the working tree we want to keep,
-the reset is disallowed. That's why it is disallowed if there are both
-changes between the working tree and HEAD, and between HEAD and the
-target. To be safe, it is also disallowed when there are unmerged
-entries.
-
-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 B B B
- --keep (disallowed)
-
- working index HEAD target working index HEAD
- ----------------------------------------------------
- X U A A --soft (disallowed)
- --mixed X A A
- --hard A A A
- --merge A A A
- --keep (disallowed)
-
-X means any state and U means an unmerged index.
-
-Examples
+EXAMPLES
--------
Undo a commit and redo::
@@ -383,6 +277,114 @@ $ git reset --keep start <3>
<3> But you can use "reset --keep" to remove the unwanted commit after
you switched to "branch2".
+
+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.
+
+In these tables, A, B, C and D are some different states of a
+file. For example, the first line of the first table means that if a
+file is in state A in the working tree, in state B in the index, in
+state C in HEAD and in state D in the target, then "git reset --soft
+target" will put the file in state A in the working tree, in state B
+in the index and in state D in HEAD.
+
+ 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)
+ --keep (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)
+ --keep A C C
+
+ 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
+ --keep (disallowed)
+
+ 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
+ --keep B C C
+
+ working index HEAD target working index HEAD
+ ----------------------------------------------------
+ B C C D --soft B C D
+ --mixed B D D
+ --hard D D D
+ --merge (disallowed)
+ --keep (disallowed)
+
+ working index HEAD target working index HEAD
+ ----------------------------------------------------
+ B C C C --soft B C C
+ --mixed B C C
+ --hard C C C
+ --merge B C C
+ --keep B C C
+
+"reset --merge" is meant to be used when resetting out of a conflicted
+merge. Any mergy operation guarantees that the work tree file that is
+involved in the merge does not have local change wrt the index before
+it starts, and that it writes the result out to the work tree. So if
+we see some difference between the index and the target and also
+between the index and the work tree, then it means that we are not
+resetting out from a state that a mergy operation left after failing
+with a conflict. That is why we disallow --merge option in this case.
+
+"reset --keep" is meant to be used when removing some of the last
+commits in the current branch while keeping changes in the working
+tree. If there could be conflicts between the changes in the commit we
+want to remove and the changes in the working tree we want to keep,
+the reset is disallowed. That's why it is disallowed if there are both
+changes between the working tree and HEAD, and between HEAD and the
+target. To be safe, it is also disallowed when there are unmerged
+entries.
+
+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 B B B
+ --keep (disallowed)
+
+ working index HEAD target working index HEAD
+ ----------------------------------------------------
+ X U A A --soft (disallowed)
+ --mixed X A A
+ --hard A A A
+ --merge A A A
+ --keep (disallowed)
+
+X means any state and U means an unmerged index.
+
+
Author
------
Written by Junio C Hamano <gitster@pobox.com> and Linus Torvalds <torvalds@osdl.org>
--
1.7.2.rc3.317.gc287
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 4/5] Documentation/reset: reorder examples to match description
2010-07-18 18:23 ` [PATCH v2 0/5] git-reset documentation changes Thomas Rast
` (2 preceding siblings ...)
2010-07-18 18:23 ` [PATCH v2 3/5] Documentation/reset: promote 'examples' one section up Thomas Rast
@ 2010-07-18 18:23 ` Thomas Rast
2010-07-18 18:23 ` [PATCH v2 5/5] Documentation/reset: move "undo permanently" example behind "make topic" Thomas Rast
4 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-18 18:23 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
A previous commit moved the <paths> mode (undoes git-add) to the front
in the description, so make the examples follow the same order.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 46 +++++++++++++++++++++---------------------
1 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 70198f9..1550ba2 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -86,6 +86,29 @@ OPTIONS
EXAMPLES
--------
+Undo add::
++
+------------
+$ edit <1>
+$ git add frotz.c filfre.c
+$ mailx <2>
+$ git reset <3>
+$ git pull git://info.example.com/ nitfol <4>
+------------
++
+<1> You are happily working on something, and find the changes
+in these files are in good order. You do not want to see them
+when you run "git diff", because you plan to work on other files
+and changes with these files are distracting.
+<2> Somebody asks you to pull, and the changes sounds worthy of merging.
+<3> However, you already dirtied the index (i.e. your index does
+not match the HEAD commit). But you know the pull you are going
+to make does not affect frotz.c nor filfre.c, so you revert the
+index changes for these two files. Your changes in working tree
+remain there.
+<4> Then you can pull and merge, leaving frotz.c and filfre.c
+changes still in the working tree.
+
Undo a commit and redo::
+
------------
@@ -133,29 +156,6 @@ current HEAD.
<2> Rewind the master branch to get rid of those three commits.
<3> Switch to "topic/wip" branch and keep working.
-Undo add::
-+
-------------
-$ edit <1>
-$ git add frotz.c filfre.c
-$ mailx <2>
-$ git reset <3>
-$ git pull git://info.example.com/ nitfol <4>
-------------
-+
-<1> You are happily working on something, and find the changes
-in these files are in good order. You do not want to see them
-when you run "git diff", because you plan to work on other files
-and changes with these files are distracting.
-<2> Somebody asks you to pull, and the changes sounds worthy of merging.
-<3> However, you already dirtied the index (i.e. your index does
-not match the HEAD commit). But you know the pull you are going
-to make does not affect frotz.c nor filfre.c, so you revert the
-index changes for these two files. Your changes in working tree
-remain there.
-<4> Then you can pull and merge, leaving frotz.c and filfre.c
-changes still in the working tree.
-
Undo a merge or pull::
+
------------
--
1.7.2.rc3.317.gc287
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 5/5] Documentation/reset: move "undo permanently" example behind "make topic"
2010-07-18 18:23 ` [PATCH v2 0/5] git-reset documentation changes Thomas Rast
` (3 preceding siblings ...)
2010-07-18 18:23 ` [PATCH v2 4/5] Documentation/reset: reorder examples to match description Thomas Rast
@ 2010-07-18 18:23 ` Thomas Rast
4 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-18 18:23 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
I consider the latter usage more important.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 1550ba2..b04d129 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -128,19 +128,6 @@ edit the message further, you can give -C option instead.
+
See also the --amend option to linkgit:git-commit[1].
-Undo commits permanently::
-+
-------------
-$ git commit ...
-$ git reset --hard HEAD~3 <1>
-------------
-+
-<1> The last three commits (HEAD, HEAD^, and HEAD~2) were bad
-and you do not want to ever see them again. Do *not* do this if
-you have already given these commits to somebody else. (See the
-"RECOVERING FROM UPSTREAM REBASE" section in linkgit:git-rebase[1] for
-the implications of doing so.)
-
Undo a commit, making it a topic branch::
+
------------
@@ -156,6 +143,19 @@ current HEAD.
<2> Rewind the master branch to get rid of those three commits.
<3> Switch to "topic/wip" branch and keep working.
+Undo commits permanently::
++
+------------
+$ git commit ...
+$ git reset --hard HEAD~3 <1>
+------------
++
+<1> The last three commits (HEAD, HEAD^, and HEAD~2) were bad
+and you do not want to ever see them again. Do *not* do this if
+you have already given these commits to somebody else. (See the
+"RECOVERING FROM UPSTREAM REBASE" section in linkgit:git-rebase[1] for
+the implications of doing so.)
+
Undo a merge or pull::
+
------------
--
1.7.2.rc3.317.gc287
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [RFC PATCH 3/5] Documentation/reset: promote 'examples' one section up
2010-07-16 9:44 [RFC PATCH 0/5] git-reset documentation changes Thomas Rast
2010-07-16 9:44 ` [RFC PATCH 1/5] Documentation/git-reset: reorder modes for soft-mixed-hard progression Thomas Rast
2010-07-16 9:44 ` [RFC PATCH 2/5] Documentation/reset: separate options by mode Thomas Rast
@ 2010-07-16 9:44 ` Thomas Rast
2010-07-16 9:44 ` [RFC PATCH 4/5] Documentation/reset: reorder examples to match description Thomas Rast
` (2 subsequent siblings)
5 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-16 9:44 UTC (permalink / raw)
To: git
Move the examples section upwards, before the discussion that gives
the gory details. Adjust the style of the heading accordingly.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 216 ++++++++++++++++++++++---------------------
1 files changed, 109 insertions(+), 107 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 46b2d2a..41edf41 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -82,113 +82,7 @@ OPTIONS
Be quiet, only report errors.
-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.
-
-In these tables, A, B, C and D are some different states of a
-file. For example, the first line of the first table means that if a
-file is in state A in the working tree, in state B in the index, in
-state C in HEAD and in state D in the target, then "git reset --soft
-target" will put the file in state A in the working tree, in state B
-in the index and in state D in HEAD.
-
- 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)
- --keep (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)
- --keep A C C
-
- 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
- --keep (disallowed)
-
- 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
- --keep B C C
-
- working index HEAD target working index HEAD
- ----------------------------------------------------
- B C C D --soft B C D
- --mixed B D D
- --hard D D D
- --merge (disallowed)
- --keep (disallowed)
-
- working index HEAD target working index HEAD
- ----------------------------------------------------
- B C C C --soft B C C
- --mixed B C C
- --hard C C C
- --merge B C C
- --keep B C C
-
-"reset --merge" is meant to be used when resetting out of a conflicted
-merge. Any mergy operation guarantees that the work tree file that is
-involved in the merge does not have local change wrt the index before
-it starts, and that it writes the result out to the work tree. So if
-we see some difference between the index and the target and also
-between the index and the work tree, then it means that we are not
-resetting out from a state that a mergy operation left after failing
-with a conflict. That is why we disallow --merge option in this case.
-
-"reset --keep" is meant to be used when removing some of the last
-commits in the current branch while keeping changes in the working
-tree. If there could be conflicts between the changes in the commit we
-want to remove and the changes in the working tree we want to keep,
-the reset is disallowed. That's why it is disallowed if there are both
-changes between the working tree and HEAD, and between HEAD and the
-target. To be safe, it is also disallowed when there are unmerged
-entries.
-
-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 B B B
- --keep (disallowed)
-
- working index HEAD target working index HEAD
- ----------------------------------------------------
- X U A A --soft (disallowed)
- --mixed X A A
- --hard A A A
- --merge A A A
- --keep (disallowed)
-
-X means any state and U means an unmerged index.
-
-Examples
+EXAMPLES
--------
Undo a commit and redo::
@@ -382,6 +276,114 @@ $ git reset --keep start <3>
<3> But you can use "reset --keep" to remove the unwanted commit after
you switched to "branch2".
+
+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.
+
+In these tables, A, B, C and D are some different states of a
+file. For example, the first line of the first table means that if a
+file is in state A in the working tree, in state B in the index, in
+state C in HEAD and in state D in the target, then "git reset --soft
+target" will put the file in state A in the working tree, in state B
+in the index and in state D in HEAD.
+
+ 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)
+ --keep (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)
+ --keep A C C
+
+ 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
+ --keep (disallowed)
+
+ 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
+ --keep B C C
+
+ working index HEAD target working index HEAD
+ ----------------------------------------------------
+ B C C D --soft B C D
+ --mixed B D D
+ --hard D D D
+ --merge (disallowed)
+ --keep (disallowed)
+
+ working index HEAD target working index HEAD
+ ----------------------------------------------------
+ B C C C --soft B C C
+ --mixed B C C
+ --hard C C C
+ --merge B C C
+ --keep B C C
+
+"reset --merge" is meant to be used when resetting out of a conflicted
+merge. Any mergy operation guarantees that the work tree file that is
+involved in the merge does not have local change wrt the index before
+it starts, and that it writes the result out to the work tree. So if
+we see some difference between the index and the target and also
+between the index and the work tree, then it means that we are not
+resetting out from a state that a mergy operation left after failing
+with a conflict. That is why we disallow --merge option in this case.
+
+"reset --keep" is meant to be used when removing some of the last
+commits in the current branch while keeping changes in the working
+tree. If there could be conflicts between the changes in the commit we
+want to remove and the changes in the working tree we want to keep,
+the reset is disallowed. That's why it is disallowed if there are both
+changes between the working tree and HEAD, and between HEAD and the
+target. To be safe, it is also disallowed when there are unmerged
+entries.
+
+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 B B B
+ --keep (disallowed)
+
+ working index HEAD target working index HEAD
+ ----------------------------------------------------
+ X U A A --soft (disallowed)
+ --mixed X A A
+ --hard A A A
+ --merge A A A
+ --keep (disallowed)
+
+X means any state and U means an unmerged index.
+
+
Author
------
Written by Junio C Hamano <gitster@pobox.com> and Linus Torvalds <torvalds@osdl.org>
--
1.7.2.rc3.259.g43154
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [RFC PATCH 4/5] Documentation/reset: reorder examples to match description
2010-07-16 9:44 [RFC PATCH 0/5] git-reset documentation changes Thomas Rast
` (2 preceding siblings ...)
2010-07-16 9:44 ` [RFC PATCH 3/5] Documentation/reset: promote 'examples' one section up Thomas Rast
@ 2010-07-16 9:44 ` Thomas Rast
2010-07-16 9:44 ` [RFC PATCH 5/5] Documentation/reset: move "undo permanently" example behind "make topic" Thomas Rast
2010-07-16 21:00 ` [RFC PATCH 0/5] git-reset documentation changes Junio C Hamano
5 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-16 9:44 UTC (permalink / raw)
To: git
A previous commit moved the <paths> mode (undoes git-add) to the front
in the description, so make the examples follow the same order.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 46 +++++++++++++++++++++---------------------
1 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 41edf41..ce08581 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -85,6 +85,29 @@ OPTIONS
EXAMPLES
--------
+Undo add::
++
+------------
+$ edit <1>
+$ git add frotz.c filfre.c
+$ mailx <2>
+$ git reset <3>
+$ git pull git://info.example.com/ nitfol <4>
+------------
++
+<1> You are happily working on something, and find the changes
+in these files are in good order. You do not want to see them
+when you run "git diff", because you plan to work on other files
+and changes with these files are distracting.
+<2> Somebody asks you to pull, and the changes sounds worthy of merging.
+<3> However, you already dirtied the index (i.e. your index does
+not match the HEAD commit). But you know the pull you are going
+to make does not affect frotz.c nor filfre.c, so you revert the
+index changes for these two files. Your changes in working tree
+remain there.
+<4> Then you can pull and merge, leaving frotz.c and filfre.c
+changes still in the working tree.
+
Undo a commit and redo::
+
------------
@@ -132,29 +155,6 @@ current HEAD.
<2> Rewind the master branch to get rid of those three commits.
<3> Switch to "topic/wip" branch and keep working.
-Undo add::
-+
-------------
-$ edit <1>
-$ git add frotz.c filfre.c
-$ mailx <2>
-$ git reset <3>
-$ git pull git://info.example.com/ nitfol <4>
-------------
-+
-<1> You are happily working on something, and find the changes
-in these files are in good order. You do not want to see them
-when you run "git diff", because you plan to work on other files
-and changes with these files are distracting.
-<2> Somebody asks you to pull, and the changes sounds worthy of merging.
-<3> However, you already dirtied the index (i.e. your index does
-not match the HEAD commit). But you know the pull you are going
-to make does not affect frotz.c nor filfre.c, so you revert the
-index changes for these two files. Your changes in working tree
-remain there.
-<4> Then you can pull and merge, leaving frotz.c and filfre.c
-changes still in the working tree.
-
Undo a merge or pull::
+
------------
--
1.7.2.rc3.259.g43154
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [RFC PATCH 5/5] Documentation/reset: move "undo permanently" example behind "make topic"
2010-07-16 9:44 [RFC PATCH 0/5] git-reset documentation changes Thomas Rast
` (3 preceding siblings ...)
2010-07-16 9:44 ` [RFC PATCH 4/5] Documentation/reset: reorder examples to match description Thomas Rast
@ 2010-07-16 9:44 ` Thomas Rast
2010-07-16 21:00 ` [RFC PATCH 0/5] git-reset documentation changes Junio C Hamano
5 siblings, 0 replies; 14+ messages in thread
From: Thomas Rast @ 2010-07-16 9:44 UTC (permalink / raw)
To: git
I consider the latter usage more important.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Documentation/git-reset.txt | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index ce08581..34da771 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -127,19 +127,6 @@ edit the message further, you can give -C option instead.
+
See also the --amend option to linkgit:git-commit[1].
-Undo commits permanently::
-+
-------------
-$ git commit ...
-$ git reset --hard HEAD~3 <1>
-------------
-+
-<1> The last three commits (HEAD, HEAD^, and HEAD~2) were bad
-and you do not want to ever see them again. Do *not* do this if
-you have already given these commits to somebody else. (See the
-"RECOVERING FROM UPSTREAM REBASE" section in linkgit:git-rebase[1] for
-the implications of doing so.)
-
Undo a commit, making it a topic branch::
+
------------
@@ -155,6 +142,19 @@ current HEAD.
<2> Rewind the master branch to get rid of those three commits.
<3> Switch to "topic/wip" branch and keep working.
+Undo commits permanently::
++
+------------
+$ git commit ...
+$ git reset --hard HEAD~3 <1>
+------------
++
+<1> The last three commits (HEAD, HEAD^, and HEAD~2) were bad
+and you do not want to ever see them again. Do *not* do this if
+you have already given these commits to somebody else. (See the
+"RECOVERING FROM UPSTREAM REBASE" section in linkgit:git-rebase[1] for
+the implications of doing so.)
+
Undo a merge or pull::
+
------------
--
1.7.2.rc3.259.g43154
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [RFC PATCH 0/5] git-reset documentation changes
2010-07-16 9:44 [RFC PATCH 0/5] git-reset documentation changes Thomas Rast
` (4 preceding siblings ...)
2010-07-16 9:44 ` [RFC PATCH 5/5] Documentation/reset: move "undo permanently" example behind "make topic" Thomas Rast
@ 2010-07-16 21:00 ` Junio C Hamano
5 siblings, 0 replies; 14+ messages in thread
From: Junio C Hamano @ 2010-07-16 21:00 UTC (permalink / raw)
To: Thomas Rast; +Cc: git
Thomas Rast <trast@student.ethz.ch> writes:
> I wrote this on the bus travelling to France, and haven't got around
> to sending it out since then.
>
> The main goal was the first patch, which redoes the 'description'
> section in the style pioneered by b831ded (Documentation/checkout:
> clarify description, 2010-06-01) in git-checkout(1).
>
> The rest are just various ideas that I'm tossing around. I also would
> like to shorten the 'examples' section significantly if anyone sees a
> way to do that without a huge loss of explanations. I think the
> chances that users consult the current version aren't exactly great
> because of its length.
Except for one small nit or two I mentioned in a separate message, I like
the overall direction of this series.
Thanks.
^ permalink raw reply [flat|nested] 14+ messages in thread