diff --git a/plumbing/revlist/revlist.go b/plumbing/revlist/revlist.go
index 3071584..10a5813 100644
--- a/plumbing/revlist/revlist.go
+++ b/plumbing/revlist/revlist.go
@@ -37,7 +37,6 @@
 ) ([]plumbing.Hash, error) {
 	seen := hashListToSet(ignore)
 	result := make(map[plumbing.Hash]bool)
-	visited := make(map[plumbing.Hash]bool)
 
 	walkerFunc := func(h plumbing.Hash) {
 		if !seen[h] {
@@ -47,7 +46,7 @@
 	}
 
 	for _, h := range objects {
-		if err := processObject(s, h, seen, visited, ignore, walkerFunc); err != nil {
+		if err := processObject(s, h, seen, ignore, walkerFunc); err != nil {
 			if allowMissingObjects && err == plumbing.ErrObjectNotFound {
 				continue
 			}
@@ -64,7 +63,6 @@
 	s storer.EncodedObjectStorer,
 	h plumbing.Hash,
 	seen map[plumbing.Hash]bool,
-	visited map[plumbing.Hash]bool,
 	ignore []plumbing.Hash,
 	walkerFunc func(h plumbing.Hash),
 ) error {
@@ -84,12 +82,12 @@
 
 	switch do := do.(type) {
 	case *object.Commit:
-		return reachableObjects(do, seen, visited, ignore, walkerFunc)
+		return reachableObjects(do, seen, ignore, walkerFunc)
 	case *object.Tree:
 		return iterateCommitTrees(seen, do, walkerFunc)
 	case *object.Tag:
 		walkerFunc(do.Hash)
-		return processObject(s, do.Target, seen, visited, ignore, walkerFunc)
+		return processObject(s, do.Target, seen, ignore, walkerFunc)
 	case *object.Blob:
 		walkerFunc(do.Hash)
 	default:
@@ -104,14 +102,9 @@
 // objects from the specified commit. To avoid to iterate over seen commits,
 // if a commit hash is into the 'seen' set, we will not iterate all his trees
 // and blobs objects.
-// We assume all commits have the same parents, unless a commit has no parents.
-// So when we've visited a commit before, we can stop iterating commits, as we've
-// already processed all its ancestors before as well. `visited` keeps track of
-// all the commits that have been visited that had parents.
 func reachableObjects(
 	commit *object.Commit,
 	seen map[plumbing.Hash]bool,
-	visited map[plumbing.Hash]bool,
 	ignore []plumbing.Hash,
 	cb func(h plumbing.Hash),
 ) error {
@@ -126,18 +119,11 @@
 			return err
 		}
 
-		if visited[commit.Hash] {
-			break
-		}
-
 		if seen[commit.Hash] {
 			continue
 		}
 
 		cb(commit.Hash)
-		if commit.NumParents() > 0 {
-			visited[commit.Hash] = true
-		}
 
 		tree, err := commit.Tree()
 		if err != nil {
