Anonymous committed 245de36

revert/cherry-pick: allow starting from dirty work tree.

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
# 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)"

but C rewrite tightened the check, probably by mistake.

Signed-off-by: Junio C Hamano <>

  • Participants
  • Parent commits aac5bf0

Comments (0)

Files changed (1)

File builtin-revert.c

 		if (get_sha1("HEAD", head))
 			die ("You do not have a valid HEAD");
-		if (s.commitable || s.workdir_dirty)
+		if (s.commitable)
 			die ("Dirty index: cannot %s", me);