git-lfs checkout remote branch

匿名 (未验证) 提交于 2019-12-03 09:13:36

问题:

I'm trying to checkout a branch from a remote that uses lfs to store files:

git remote add remoteRepo git@github.com:user/remoteRepo-lfs.git git fetch remoteRepo git checkout -b test remoteRepo/master 

It is worth mentioning that the remote has been subject to the bozaro/git-lfs-migrate tool. The checkout process stops with an error and a

git lfs logs last 

shows:

git-lfs/1.4.4 (GitHub; linux amd64; go 1.7.3; git cbf91a9) git version 2.10.2  $ git-lfs smudge -- testText.log Error downloading object: testText.log (dc56c0fc4d655b0895d83cd61b121f30cb74bda428655db4144e4a1c8b582b57)  Smudge error: Error buffering media file: Object not found on the server.:  github.com/github/git-lfs/errors.newWrappedError     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/errors/types.go:166 github.com/github/git-lfs/errors.NewSmudgeError     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/errors/types.go:252 github.com/github/git-lfs/lfs.PointerSmudge     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/lfs/pointer_smudge.go:69 github.com/github/git-lfs/lfs.(*Pointer).Smudge     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/lfs/pointer.go:64 github.com/github/git-lfs/commands.smudgeCommand     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/commands/command_smudge.go:66 github.com/github/git-lfs/vendor/github.com/spf13/cobra.(*Command).execute     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/vendor/github.com/spf13/cobra/command.go:477 github.com/github/git-lfs/vendor/github.com/spf13/cobra.(*Command).Execute     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/vendor/github.com/spf13/cobra/command.go:551 github.com/github/git-lfs/commands.Run     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/commands/run.go:65 main.main     /Users/ttaylorr/dev/go/src/github.com/github/git-lfs/git-lfs.go:33 runtime.main     /usr/local/Cellar/go/1.7.3/libexec/src/runtime/proc.go:183 runtime.goexit     /usr/local/Cellar/go/1.7.3/libexec/src/runtime/asm_amd64.s:2086  ENV: LocalWorkingDir=/home/person/Projects/proteus/proteus LocalGitDir=/home/person/Projects/proteus/proteus/.git LocalGitStorageDir=/home/person/Projects/proteus/proteus/.git LocalMediaDir=/home/person/Projects/proteus/proteus/.git/lfs/objects LocalReferenceDir= TempDir=/home/person/Projects/proteus/proteus/.git/lfs/tmp ConcurrentTransfers=3 TusTransfers=false BasicTransfersOnly=false BatchTransfer=true SkipDownloadErrors=false FetchRecentAlways=false FetchRecentRefsDays=7 FetchRecentCommitsDays=0 FetchRecentRefsIncludeRemotes=true PruneOffsetDays=3 PruneVerifyRemoteAlways=false PruneRemoteName=origin AccessDownload=none AccessUpload=none DownloadTransfers=basic UploadTransfers=basic GIT_DIR=.git GIT_PREFIX= 

A git-lfs env shows:

git-lfs/1.4.4 (GitHub; linux amd64; go 1.7.3; git cbf91a9) git version 2.10.2  Endpoint=https://github.com/username/repo.git/info/lfs (auth=none)   SSH=git@github.com:username/repo.git Endpoint (remoterepo)=https://github.com/username/remoteRepo.git/info/lfs (auth=none)   SSH=git@github.com:username/remoteRepo.git LocalWorkingDir=/home/person/Projects/proteus/proteus LocalGitDir=/home/person/Projects/proteus/proteus/.git LocalGitStorageDir=/home/person/Projects/proteus/proteus/.git LocalMediaDir=/home/person/Projects/proteus/proteus/.git/lfs/objects LocalReferenceDir= TempDir=/home/person/Projects/proteus/proteus/.git/lfs/tmp ConcurrentTransfers=3 TusTransfers=false BasicTransfersOnly=false BatchTransfer=true SkipDownloadErrors=false FetchRecentAlways=false FetchRecentRefsDays=7 FetchRecentCommitsDays=0 FetchRecentRefsIncludeRemotes=true PruneOffsetDays=3 PruneVerifyRemoteAlways=false PruneRemoteName=origin AccessDownload=none AccessUpload=none DownloadTransfers=basic UploadTransfers=basic git config filter.lfs.smudge = "git-lfs smudge -- %f" git config filter.lfs.clean = "git-lfs clean -- %f" 

I have cloned remoteRepo-lfs successfully with

git clone git@github.com:user/remoteRepo-lfs.git 

and have also been able to successfully checkout the branch by specifying in a .lfsconfig file:

[lfs]   url = https://github.com/username/remoteRepo-lfs.git [remote "remoteRepo"]   lfsurl = https://github.com/username/remoteRepo-lfs.git/info/lfs 

which seems to overwrite the endpoint url for origin. Is there a way to setup the local directory such that I can push/pull/checkout lfs files from origin and remotes based on their respective endpoint urls?

回答1:

I have found a workaround to this problem that I am encountering by modifying the lfs filter (in ~/.gitconfig). Namely:

[filter "lfs"]   smudge = git-lfs smudge --skip %f   required = true   clean = git-lfs clean -- %f 

git-lfs smudge converts the file pointers to the actual files. With this workaround, I have to perform a

git lfs fetch 

followed by a

git lfs checkout 

to retrieve/access the contents of the files. It is not clear to me why this workaround is necessary. Looking through the issues on the git-lfs, it seems like this is a general work in progress.

(e.g. https://github.com/github/git-lfs/issues/834).



回答2:

have you ever installed the git-lfs? If not, you can install here. It seems you have no GIT_LFS_PATH yet, my own environment can be referenced.

DownloadTransfers=basic UploadTransfers=basic GIT_LFS_PATH=C:\Program Files\Git LFS git config filter.lfs.smudge = "git-lfs smudge -- %f" git config filter.lfs.clean = "git-lfs clean -- %f" 

And have you create a git-lfs repo on GitHub? You can try to use https://github.com/username/remoteRepo-lfs.git to check if it's really exist.

And I am also confused that your local directory like:

LocalWorkingDir=/home/person/Projects/proteus/proteus LocalGitDir=/home/person/Projects/proteus/proteus/.git LocalGitStorageDir=/home/person/Projects/proteus/proteus/.git LocalMediaDir=/home/person/Projects/proteus/proteus/.git/lfs/objects LocalReferenceDir= TempDir=/home/person/Projects/proteus/proteus/.git/lfs/tmp 

my local directory like this:

LocalWorkingDir=C:\Users\TFSTest\New folder\Git2 LocalGitDir=C:\Users\TFSTest\New folder\Git2\.git LocalGitStorageDir=C:\Users\TFSTest\New folder\Git2\.git LocalMediaDir=C:\Users\TFSTest\New folder\Git2\.git\lfs\objects LocalReferenceDir= TempDir=C:\Users\TFSTest\New folder\Git2\.git\lfs\tmp 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!