Will always point to the latest version of the source schema
Correct Match: ✔ defer
Allows to use objects built in the target schema with any downstream tool
Correct Match: ✔ dbt clone
3️⃣ Allows to safely modify objects built in the target schema
Correct Match: ✔ defer
4️⃣ Is a point-in-time operation
Correct Match: ✔ dbt clone
defer and dbt clone serve very different purposes in dbt, and understanding their behavior is essential for choosing the right command.
The --defer flag tells dbt to use already-built objects from a previous environment (often production) instead of rebuilding them. Because it always references the existing target schema’s most recent objects, it “always points to the latest version of the source schema.” Since no objects are overwritten when using defer, it also “allows safely modifying objects built in the target schema”—your development environment uses production objects without altering them.
By contrast, dbt clone creates a point-in-time copy of existing relations. This cloned schema is static; it does not auto-update when source data changes. Therefore, clone is classified as a “point-in-time operation.” Since clone copies physical tables/views into a new schema, downstream tools (BI dashboards, ML pipelines) can safely query the cloned environment without affecting production, making “allows to use objects built in the target schema with any downstream tool” the correct match.
Thus, defer is used for logic substitution without copies, while clone is used for replicable, point-in-time snapshots.