There is no reason to forbid a dirty work tree when reverting or cherry-picking a change, as long as the index is clean.
The scripted version used to allow it:
case "$no_commit" in
t)
# We do not intend to commit immediately. We just want to
# merge the differences in.
head=$(git-write-tree) ||
die "Your index file is unmerged."
;;
*)
head=$(git-rev-parse --verify HEAD) ||
die "You do not have a valid HEAD"
files=$(git-diff-index --cached --name-only $head) || exit
if [ "$files" ]; then
die "Dirty index: cannot $me (dirty: $files)"
fi
;;
esacbut C rewrite tightened the check, probably by mistake.
Signed-off-by: Junio C Hamano <gitster@pobox.com> --- builtin-revert.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to builtin-revert.c +1 −1
diff --git a/builtin-revert.c b/builtin-revert.c index cef7147..f704197 100644 --- a/builtin-revert.c +++ b/builtin-revert.c @@ -272,7 +272,7 @@ static int revert_or_cherry_pick(int argc, const char **argv) if (get_sha1("HEAD", head)) die ("You do not have a valid HEAD"); wt_status_prepare(&s); - if (s.commitable || s.workdir_dirty) + if (s.commitable) die ("Dirty index: cannot %s", me); discard_cache(); }
-- 1.5.3.5.1728.g34b3e