diff --git a/src/cargo/ops/cargo_add/mod.rs b/src/cargo/ops/cargo_add/mod.rs
index 8409df7324b..51ad938f371 100644
--- a/src/cargo/ops/cargo_add/mod.rs
+++ b/src/cargo/ops/cargo_add/mod.rs
@@ -934,7 +934,7 @@ fn populate_available_features(
     }
 
     let possibilities = loop {
-        match registry.query_vec(&query, QueryKind::Fuzzy) {
+        match registry.query_vec(&query, QueryKind::Exact) {
             std::task::Poll::Ready(res) => {
                 break res?;
             }
diff --git a/tests/testsuite/cargo_add/git_multiple_packages_features/in b/tests/testsuite/cargo_add/git_multiple_packages_features/in
new file mode 120000
index 00000000000..6c6a27fcfb5
--- /dev/null
+++ b/tests/testsuite/cargo_add/git_multiple_packages_features/in
@@ -0,0 +1 @@
+../add-basic.in
\ No newline at end of file
diff --git a/tests/testsuite/cargo_add/git_multiple_packages_features/mod.rs b/tests/testsuite/cargo_add/git_multiple_packages_features/mod.rs
new file mode 100644
index 00000000000..eb76b6f3450
--- /dev/null
+++ b/tests/testsuite/cargo_add/git_multiple_packages_features/mod.rs
@@ -0,0 +1,63 @@
+use cargo_test_support::compare::assert_ui;
+use cargo_test_support::prelude::*;
+use cargo_test_support::Project;
+
+use cargo_test_support::curr_dir;
+
+#[cargo_test]
+fn case() {
+    cargo_test_support::registry::init();
+
+    let main_manifest = r#"
+    [package]
+    name = "main-package"
+    version = "0.1.1+main-package"
+    authors = []
+
+    [workspace]
+    members = ["package-wo-feature", "package-with-feature"]
+    "#;
+
+    let manifest_feature = r#"
+    [package]
+    name = "package-with-feature"
+    version = "0.1.3+package-with-feature"
+    [features]
+    target_feature = []
+    "#;
+
+    let project = Project::from_template(curr_dir!().join("in"));
+    let project_root = project.root();
+    let cwd = &project_root;
+    let git_dep = cargo_test_support::git::new("git-package", |project| {
+        project
+            .file("Cargo.toml", &main_manifest)
+            .file(
+                "package-wo-feature/Cargo.toml",
+                &cargo_test_support::basic_manifest(
+                    "package-wo-feature",
+                    "0.1.1+package-wo-feature",
+                ),
+            )
+            .file("package-wo-feature/src/lib.rs", "")
+            .file("package-with-feature/Cargo.toml", &manifest_feature)
+            .file("package-with-feature/src/lib.rs", "")
+    });
+    let git_url = git_dep.url().to_string();
+
+    snapbox::cmd::Command::cargo_ui()
+        .arg("add")
+        .args([
+            "--git",
+            &git_url,
+            "package-with-feature",
+            "--features=target_feature",
+        ])
+        .current_dir(cwd)
+        .assert()
+        .success()
+        .stdout_matches_path(curr_dir!().join("stdout.log"))
+        .stderr_matches_path(curr_dir!().join("stderr.log"));
+
+    assert_ui().subset_matches(curr_dir!().join("out"), &project_root);
+}
diff --git a/tests/testsuite/cargo_add/git_multiple_packages_features/out/Cargo.toml b/tests/testsuite/cargo_add/git_multiple_packages_features/out/Cargo.toml
new file mode 100644
index 00000000000..939d818840f
--- /dev/null
+++ b/tests/testsuite/cargo_add/git_multiple_packages_features/out/Cargo.toml
@@ -0,0 +1,8 @@
+[workspace]
+
+[package]
+name = "cargo-list-test-fixture"
+version = "0.0.0"
+
+[dependencies]
+package-with-feature = { git = "[ROOTURL]/git-package", version = "0.1.3", features = ["target_feature"] }
diff --git a/tests/testsuite/cargo_add/git_multiple_packages_features/stderr.log b/tests/testsuite/cargo_add/git_multiple_packages_features/stderr.log
new file mode 100644
index 00000000000..3748cf9b090
--- /dev/null
+++ b/tests/testsuite/cargo_add/git_multiple_packages_features/stderr.log
@@ -0,0 +1,5 @@
+    Updating git repository `[ROOTURL]/git-package`
+      Adding package-with-feature (git) to dependencies.
+             Features:
+             + target_feature
+    Updating git repository `[ROOTURL]/git-package`
diff --git a/tests/testsuite/cargo_add/git_multiple_packages_features/stdout.log b/tests/testsuite/cargo_add/git_multiple_packages_features/stdout.log
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/tests/testsuite/cargo_add/mod.rs b/tests/testsuite/cargo_add/mod.rs
index 653c2db94cb..949f3a28297 100644
--- a/tests/testsuite/cargo_add/mod.rs
+++ b/tests/testsuite/cargo_add/mod.rs
@@ -35,6 +35,7 @@ mod git_dev;
 mod git_inferred_name;
 mod git_inferred_name_multiple;
 mod git_multiple_names;
+mod git_multiple_packages_features;
 mod git_normalized_name;
 mod git_registry;
 mod git_rev;