diff --git a/git-branch.sh b/git-branch.sh
index bf84b30695f..4379a07210c 100755
--- a/git-branch.sh
+++ b/git-branch.sh
@@ -111,16 +111,6 @@ rev=$(git-rev-parse --verify "$head") || exit
 git-check-ref-format "heads/$branchname" ||
 	die "we do not like '$branchname' as a branch name."
 
-if [ -d "$GIT_DIR/refs/heads/$branchname" ]
-then
-	for refdir in `cd "$GIT_DIR" && \
-		find "refs/heads/$branchname" -type d | sort -r`
-	do
-		rmdir "$GIT_DIR/$refdir" || \
-		    die "Could not delete '$refdir', there may still be a ref there."
-	done
-fi
-
 prev=''
 if git-show-ref --verify --quiet -- "refs/heads/$branchname"
 then
diff --git a/t/t3210-pack-refs.sh b/t/t3210-pack-refs.sh
index 193fe1fb402..f31e79c561f 100755
--- a/t/t3210-pack-refs.sh
+++ b/t/t3210-pack-refs.sh
@@ -67,4 +67,31 @@ test_expect_success \
      git-pack-refs &&
      git-branch -d g'
 
+test_expect_failure \
+    'git branch i/j/k should barf if branch i exists' \
+    'git-branch i &&
+     git-pack-refs --prune &&
+     git-branch i/j/k'
+
+test_expect_success \
+    'test git branch k after branch k/l/m and k/lm have been deleted' \
+    'git-branch k/l &&
+     git-branch k/lm &&
+     git-branch -d k/l &&
+     git-branch k/l/m &&
+     git-branch -d k/l/m &&
+     git-branch -d k/lm &&
+     git-branch k'
+
+test_expect_success \
+    'test git branch n after some branch deletion and pruning' \
+    'git-branch n/o &&
+     git-branch n/op &&
+     git-branch -d n/o &&
+     git-branch n/o/p &&
+     git-branch -d n/op &&
+     git-pack-refs --prune &&
+     git-branch -d n/o/p &&
+     git-branch n'
+
 test_done