summaryrefslogtreecommitdiff
path: root/unix-socket.c
diff options
context:
space:
mode:
authorLibravatar Thomas Gummerer <t.gummerer@gmail.com>2019-01-08 21:52:24 +0000
committerLibravatar Junio C Hamano <gitster@pobox.com>2019-01-08 14:49:28 -0800
commit091e04bc8cbb0c89c8112c4784f02a44decc257e (patch)
treef72dbe0c834e26a998196a749795ea7b70df53d9 /unix-socket.c
parentcheckout: factor out mark_cache_entry_for_checkout function (diff)
downloadtgif-091e04bc8cbb0c89c8112c4784f02a44decc257e.tar.xz
checkout: introduce --{,no-}overlay option
Currently 'git checkout' is defined as an overlay operation, which means that if in 'git checkout <tree-ish> -- [<pathspec>]' we have an entry in the index that matches <pathspec>, but that doesn't exist in <tree-ish>, that entry will not be removed from the index or the working tree. Introduce a new --{,no-}overlay option, which allows using 'git checkout' in non-overlay mode, thus removing files from the working tree if they do not exist in <tree-ish> but match <pathspec>. Note that 'git checkout -p <tree-ish> -- [<pathspec>]' already works this way, so no changes are needed for the patch mode. We disallow 'git checkout --overlay -p' to avoid confusing users who would expect to be able to force overlay mode in 'git checkout -p' this way. Untracked files are not affected by this change, so 'git checkout --no-overlay HEAD -- untracked' will not remove untracked from the working tree. This is so e.g. 'git checkout --no-overlay HEAD -- dir/' doesn't delete all untracked files in dir/, but rather just resets the state of files that are known to git. Suggested-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'unix-socket.c')
0 files changed, 0 insertions, 0 deletions