Skip to content

git lfs pull not working correctly with partial checkout in 3.6.1 #6004

@tetreaultmarc

Description

@tetreaultmarc

Describe the bug
When using partial checkout with git lfs pull --include, LFS files are not being downloaded properly in version 3.6.1. Instead, only pointer files are being pulled.

To Reproduce
I created a repo you can use to reproduce the issue.
Simply run these commands in a new directory with version 3.6.1 (or 3.6.0).

git init .
git remote add origin git@github.com:tetreaultmarc/git-lfs-bug-demo.git
git fetch origin master
git update-ref HEAD $(git rev-parse origin/master)
git checkout $(git rev-parse origin/master) -- test-path
git lfs pull --include test-path

Expected behavior
The PNG file should be downloaded and replaced with its actual contents (as it works in git-lfs 3.5.1)

Actual behavior
Only the LFS pointer file is pulled, not the actual file contents

System environment
git-lfs version 3.6.1
Previously working in git-lfs 3.5.1
OS: Windows 11 Pro 10.0.26100 Build 26100
Git version: 2.48.1.windows.1

Output of git lfs env

git-lfs/3.6.1 (GitHub; windows amd64; go 1.23.3; git ea47a34b)
git version 2.48.1.windows.1

Endpoint=https://github.com/tetreaultmarc/git-lfs-bug-demo.git/info/lfs (auth=none)
  SSH=git@github.com:tetreaultmarc/git-lfs-bug-demo.git
LocalWorkingDir=C:\git\git-lfs-testing
LocalGitDir=C:\git\git-lfs-testing\.git
LocalGitStorageDir=C:\git\git-lfs-testing\.git
LocalMediaDir=C:\git\git-lfs-testing\.git\lfs\objects
LocalReferenceDirs=
TempDir=C:\git\git-lfs-testing\.git\lfs\tmp
ConcurrentTransfers=8
TusTransfers=false
BasicTransfersOnly=false
SkipDownloadErrors=false
FetchRecentAlways=false
FetchRecentRefsDays=7
FetchRecentCommitsDays=0
FetchRecentRefsIncludeRemotes=true
PruneOffsetDays=3
PruneVerifyRemoteAlways=false
PruneVerifyUnreachableAlways=false
PruneRemoteName=origin
LfsStorageDir=C:\git\git-lfs-testing\.git\lfs
AccessDownload=none
AccessUpload=none
DownloadTransfers=basic,lfs-standalone-file,ssh
UploadTransfers=basic,lfs-standalone-file,ssh
GIT_EXEC_PATH=C:/Program Files/Git/mingw64/libexec/git-core
GIT_LFS_PATH=C:\Program Files\Git LFS
git config filter.lfs.process = "git-lfs filter-process"
git config filter.lfs.smudge = "git-lfs smudge -- %f"
git config filter.lfs.clean = "git-lfs clean -- %f"

Additional context
Switching to version 3.5.1 and repeating the exact same steps leads to the expected behavior.

Please let me know if you need more information, but I believe this should be easy to reproduce on your end.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Bugs

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions