Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

P4 CLI Documentation | 2026.1

# p4 have

List files and revisions that are synced to the client workspace.

## Syntax

    p4 [g-opts] have [--graph-only] [file ...]

Syntax and naming conventions

## Description

List the files and revisions that are copied to the client workspace with p4 sync.

If file patterns are provided, the list is limited to the files that meet both criteria:

- match one of the patterns
- mapped to the client view

p4 have lists the files, one per line, in the format:

``depot-file`#`revision-number` - `local-path``

- depot-file is the path to the file in depot syntax.
- revision-number is the have revision, the revision presently in the current client workspace
- local-path is the path as represented in terms of the local filesystem (that is, in local syntax).

## Options

Option | Description
--- | ---
`file` | List revision numbers of the currently-synced files. If file name is omitted, list all files synced to this client workspace.
`--graph-only` | For hybrid workspaces A client workspace that supports both repos of type graph (see also 'Git Connector') and the classic P4 file revision model., limit the report to graph depots only.
`g-opts` | See Global options.

## Usage notes

Can File Arguments Use Revision Specifier? | Can File Arguments Use Revision Range? | Minimal Access Level Required
--- | --- | ---
No | No | `list`

- Some P4 Server documentation refers to the have list The list of file revisions most recently synced from the depot into the workspace. In other words, the list of files that the client workspace has. of a client workspace. The have list is the list of files reported by `p4 have`, and is the list of file revisions that are most recently synced from the depot.

  The have list excludes:

  - files that exist in your client workspace but not in the depot
  - files at deleted revisions

  For instance, if you use `p4 add` to open a newly created file in your client workspace for add, or if you use `p4 integrate` to create a group of files in your client workspace, but they are not yet submitted, the new files do not appear in the output of `p4 have`.

  The set of all files in your client workspace is the union of the set of files listed by `p4 have` with the set of files listed by `p4 opened`.

- For files containing the special characters `@`, `#`, `*`, and `%`, the `depot-file` field shows the ASCII expression of the character’s hexadecimal value, and the `local-path` shows the special character. For example:

  `//depot/status/100%25.txt#1 - /staff/status/100%.txt`

### Attempting to sync an open file to an earlier version

If a file is open for edit, `p4 have` reflects the most recent attempt at `p4 sync`. For example, if you open a file for edit that is at version #3, and then attempt to sync that file to an earlier version, such as #1, the sync attempt fails. This is a feature to prevent you from accidentally overwriting your work at version #3. However, `p4 have` optimistically assumes p4 sync succeeded and lists the file at version #1. If you submit version #3, which increments the version to #4, and run `p4 have` again, `p4 have` lists version #4.

## Examples

`p4 sync //depot/name/...` `p4 have //depot/name` `p4 sync //depot/name/...#4` `p4 have //depot/name` | In each of these two pairs of commands: The first `p4 have` shows that the highest revision of the file has been copied to the client workspace. The second `p4 have` shows that the fourth revision is the revision currently in the client workspace.

## Related commands

To copy file revisions from the depot to the client workspace | `p4 sync`
List the commit most recently synced to the current workspace | p4 have (graph)

Your search for returned results