summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-09-18 19:53:22 -0700
committerJunio C Hamano <gitster@pobox.com>2008-09-18 19:53:22 -0700
commit2ba3d5d9bd47c42400049e81d0e1e94948112277 (patch)
treee02b4bf9c6fd25cdc8d46bc07234cc8451d188b8 /Documentation
parent01409bbf75198289591ba9dfe2c8d2370b36a058 (diff)
parent5521883490e85f4d973141972cf16f89a79f1979 (diff)
downloadgit-2ba3d5d9bd47c42400049e81d0e1e94948112277.tar.gz
Merge branch 'jc/maint-checkout-keep-remove' into maint
* jc/maint-checkout-keep-remove: checkout: do not lose staged removal
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/git-read-tree.txt11
1 files changed, 10 insertions, 1 deletions
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index 6f4b9b017f..309deac23b 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -160,7 +160,10 @@ Here are the "carry forward" rules:
0 nothing nothing nothing (does not happen)
1 nothing nothing exists use M
2 nothing exists nothing remove path from index
- 3 nothing exists exists use M
+ 3 nothing exists exists, use M if "initial checkout"
+ H == M keep index otherwise
+ exists fail
+ H != M
clean I==H I==M
------------------
@@ -207,6 +210,12 @@ you picked it up via e-mail in a patch form), `git diff-index
merge, but it would not show in `git diff-index --cached $M`
output after two-tree merge.
+Case #3 is slightly tricky and needs explanation. The result from this
+rule logically should be to remove the path if the user staged the removal
+of the path and then swiching to a new branch. That however will prevent
+the initial checkout from happening, so the rule is modified to use M (new
+tree) only when the contents of the index is empty. Otherwise the removal
+of the path is kept as long as $H and $M are the same.
3-Way Merge
~~~~~~~~~~~