我决定在gitlab上尝试git lfs。我注意到它不适用于ssh所以我决定使用https。推送工作正常,但当我尝试克隆我的项目时,它要求我输入每个文件的用户名和密码。
那有点烦人。它有什么解决方法吗?
这个问题仍然存在,真正的解决方案在哪里?它有一个简单而直接的配方吗?
链接https://git-scm.com/docs/gitcredentials和git-lfs/wiki/Tutorial可能有某些内容,但没有客观解决方案。
我的git lfs env
描述的情况,
git-lfs/2.4.0 (GitHub; linux amd64; go 1.8.3)
git version 2.7.4
LocalWorkingDir=
LocalGitDir=
LocalGitStorageDir=
LocalMediaDir=lfs/objects
LocalReferenceDir=
TempDir=lfs/tmp
ConcurrentTransfers=3
TusTransfers=false
BasicTransfersOnly=false
SkipDownloadErrors=false
FetchRecentAlways=false
FetchRecentRefsDays=7
FetchRecentCommitsDays=0
FetchRecentRefsIncludeRemotes=true
PruneOffsetDays=3
PruneVerifyRemoteAlways=false
PruneRemoteName=origin
LfsStorageDir=lfs
AccessDownload=none
AccessUpload=none
DownloadTransfers=basic
UploadTransfers=basic
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"
当我git clone https://github.com/myPrivate/project1
时,问题克隆过程不完整(错误),并且始终提供用户和密码 ... < / p>
尝试执行凭据时也会遇到问题(请参阅issue #2223等)
尝试报告:
git config credential.helper
不输出任何信息,空信息。
git config -f .lfsconfig lfs.url https://github.com/myPrivate/MyProj1
接受任何内容......那么,是浏览器网址还是.git
网址?是之后命令git add .lfsconfig
说“致命:不是git存储库(或任何父目录):.git“在两种情况下(带或不带.git的URL)
git config credential.https://github.com/myPrivate/MyProj1 myusername
说“致命:不在git目录中”,但当然,我需要先克隆(!)..
...
答案 0 :(得分:3)
如git-lfs issue 993中所述:
因为LFS服务器和git服务器可以是单独的端点,所以用户可能拥有git服务器但不具有LFS服务器的权限。
在这种情况下,如果安装了凭据管理器,则不会重置凭据,LFS将在每个后续请求中使用它们,而不会使它们无效。
您应该检查git config credential.helper
输出
在Windows上,它应该是(最近的2017-2018 Git版本)“manager”
打开Windows凭据管理器并清除或修复任何GitHub凭据条目。
注意:issue 2349指出Git-LFS因为lack of pty/tty而要求凭证(没有帮助者)时有问题,但可能已经修复了。
(巩固答案和评论)
检查git --version
,如果少于 2.16 ,则安装得更好instructions here using PPA
检查您的git config credential.helper
输出,如果为空,请执行以下行:git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
...他们再次检查您的git config credential.helper
输出:需要这个/usr/...
路径。
...克隆
3.1。 (如评论所示)首先:git ls-remote https://github.com/myPrivate/MyProj1
...这应该提示您的GitHub用户名和密码帐户。重复该命令以检查第二次,它不会提示您输入任何内容。
3.2。照常使用git clone
(谨慎使用sudo rm -r oldBrokenBadClone
删除损坏的旧版本)...提供一次用户名和密码。
关于许多UBUNTU LTS服务器中的测试的最终说明...有时,在此过程之前克隆时,您无法解决问题(git pull
错误,例如“git-credential-libsecret:not found”)。解决方案是删除所有旧的克隆repo(谨慎rm -rf
)。看起来你可以随时git config --global credential.helper
做,所以,做吧。再次克隆 - 可能会提供两次用户名和密码,但在此之后会很好。
答案 1 :(得分:1)
您可以使用git lfs支持的Git&#39; {具有永久存储和内存credential helper选项。
我还注意到git lfs有一些与此相关的cache已经解决了。
答案 2 :(得分:0)
如果实际访问文件并且您使用https://server.com/path/to/repo
网址访问时无需密码,那么它应该有效(as of git-lfs 0.5.3)。一种可能是您的配置有lfs.batch = false
。试试git -c lfs.batch=true clone https://server.com/path/to/repo
---不需要凭据助手。