mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-07-30 03:09:50 +08:00
5.2 KiB
5.2 KiB
Retrieval Modes
Complete guide to the five retrieval modes supported by sf project retrieve start.
Mode 1: Retrieve All Remote Changes
When to use: Sync all org changes to local project (most common workflow)
sf project retrieve start --json
- Retrieves all metadata that changed in the org since last sync
- Only works with orgs that allow source tracking (scratch/sandbox)
- Does not work with production orgs
- Most common command for daily development workflow
Mode 2: Retrieve by Source Directory
When to use: Pull specific directory/file from org
sf project retrieve start --source-dir force-app --target-org my-org --json
sf project retrieve start --source-dir force-app/main/default/classes --target-org my-org --json
sf project retrieve start --source-dir force-app/main/default/classes/AccountService.cls --target-org my-org --json
- Can target entire directory or single file
- Retrieves directory contents recursively
- Multiple
--source-dirflags supported - Works with all org types (scratch, sandbox, production)
Multiple directories:
sf project retrieve start --source-dir force-app/main/default/classes --source-dir force-app/main/default/objects --json
Mode 3: Retrieve by Metadata Type
When to use: Pull specific metadata types or components
sf project retrieve start --metadata ApexClass --json
sf project retrieve start --metadata ApexClass:AccountService --json
sf project retrieve start --metadata 'ApexClass:Account*' --json
- Retrieve all components of a type:
--metadata ApexClass - Retrieve specific component:
--metadata ApexClass:AccountService - Retrieve with wildcard pattern:
--metadata 'ApexClass:Account*'(requires quotes) - Multiple
--metadataflags supported - Works with all org types
Wildcards:
sf project retrieve start --metadata 'CustomObject:SBQQ__*' --json
sf project retrieve start --metadata 'ListView:Case*' --json
Multiple types:
sf project retrieve start --metadata CustomObject --metadata ApexClass --json
Mode 4: Retrieve by Manifest (package.xml)
When to use: Pull metadata listed in package.xml
sf project retrieve start --manifest path/to/package.xml --json
- Retrieves all components specified in the manifest file
- Cannot be combined with
--metadataor--source-dir - Works with all org types
- Useful for CI/CD pipelines and release management
Mode 5: Retrieve by Package Name
When to use: Extract package metadata for reference only
sf project retrieve start --package-name MyPackageName --json
sf project retrieve start --package-name "Package With Spaces" --json
- Retrieves metadata into child directory matching package name
- Cannot be used with the
--output-dirflag
- Cannot be used with the
- Retrieved metadata is for reference only — not for development/deployment
- Do not add to source control
- For package development, use manifest or source-dir modes instead
- Works with all org types
Multiple packages:
sf project retrieve start --package-name Package1 --package-name "Package With Spaces" --package-name Package3 --json
Output Format Options
Source Format (Default)
sf project retrieve start --source-dir force-app --json
- Retrieves in Salesforce DX source format
- Files written to package directories defined in
sfdx-project.json - Default behavior
Metadata Format (ZIP)
sf project retrieve start --source-dir force-app --target-metadata-dir output --json
- Retrieves as ZIP file in metadata format
- Use
--unzipto automatically extract contents - Use
--zip-file-nameto specify ZIP filename - Use
--single-packagefor single package directory structure
Extract automatically:
sf project retrieve start --source-dir force-app --target-metadata-dir output --unzip --json
Conflict Handling
Ignore Conflicts (Scratch/Sandbox Only)
⚠️ Warning: Do not use --ignore-conflicts flag without confirming with the user first. This flag overwrites local changes and may result in lost work.
sf project retrieve start --source-dir force-app --ignore-conflicts --json
- Overwrites local files even if they have uncommitted changes
- Only works on orgs that allow source tracking (scratch/sandbox)
- No effect on production orgs
Retrieve to Separate Directory
sf project retrieve start --source-dir force-app --output-dir retrieved-backup --json
- Retrieves to custom directory instead of default package directory
- Cannot use directory that matches
sfdx-project.jsonpackageDirectories - Useful for comparing org state with local state
- Running multiple times adds/overwrites files in target directory
Common Patterns
Retrieve Specific Apex Class
sf project retrieve start --metadata ApexClass:MyApexClass --ignore-conflicts --json
Retrieve All Custom Objects with Namespace
sf project retrieve start --metadata 'CustomObject:SBQQ__*' --json
Retrieve All List Views for Standard Object
sf project retrieve start --metadata 'ListView:Case*' --json
Retrieve to Metadata Format and Extract
sf project retrieve start --source-dir force-app --target-metadata-dir output --unzip --json