6 git-sparse-checkout - Initialize and modify the sparse-checkout
7 configuration, which reduces the checkout to a set of paths
8 given by a list of atterns.
14 'git sparse-checkout <subcommand> [options]'
20 Initialize and modify the sparse-checkout configuration, which reduces
21 the checkout to a set of paths given by a list of patterns.
23 THIS COMMAND IS EXPERIMENTAL. ITS BEHAVIOR, AND THE BEHAVIOR OF OTHER
24 COMMANDS IN THE PRESENCE OF SPARSE-CHECKOUTS, WILL LIKELY CHANGE IN
31 Provide a list of the contents in the sparse-checkout file.
34 Enable the `core.sparseCheckout` setting. If the
35 sparse-checkout file does not exist, then populate it with
36 patterns that match every file in the root directory and
37 no other directories, then will remove all directories tracked
38 by Git. Add patterns to the sparse-checkout file to
39 repopulate the working directory.
41 To avoid interfering with other worktrees, it first enables the
42 `extensions.worktreeConfig` setting and makes sure to set the
43 `core.sparseCheckout` setting in the worktree-specific config file.
48 "Sparse checkout" allows populating the working directory sparsely.
49 It uses the skip-worktree bit (see linkgit:git-update-index[1]) to tell
50 Git whether a file in the working directory is worth looking at. If
51 the skip-worktree bit is set, then the file is ignored in the working
52 directory. Git will not populate the contents of those files, which
53 makes a sparse checkout helpful when working in a repository with many
54 files, but only a few are important to the current user.
56 The `$GIT_DIR/info/sparse-checkout` file is used to define the
57 skip-worktree reference bitmap. When Git updates the working
58 directory, it updates the skip-worktree bits in the index based
59 on this file. The files matching the patterns in the file will
60 appear in the working directory, and the rest will not.
64 By default, the sparse-checkout file uses the same syntax as `.gitignore`
67 While `$GIT_DIR/info/sparse-checkout` is usually used to specify what
68 files are included, you can also specify what files are _not_ included,
69 using negative patterns. For example, to remove the file `unwanted`:
76 Another tricky thing is fully repopulating the working directory when you
77 no longer want sparse checkout. You cannot just disable "sparse
78 checkout" because skip-worktree bits are still in the index and your working
79 directory is still sparsely populated. You should re-populate the working
80 directory with the `$GIT_DIR/info/sparse-checkout` file content as
87 Then you can disable sparse checkout. Sparse checkout support in 'git
88 checkout' and similar commands is disabled by default. You need to
89 set `core.sparseCheckout` to `true` in order to have sparse checkout
95 linkgit:git-read-tree[1]
100 Part of the linkgit:git[1] suite