克隆使用git lfs但没有始终提供密码的gitlab项目

时间:2016-04-02 14:01:00

标签: git gitlab git-lfs

我决定在gitlab上尝试git lfs。我注意到它不适用于ssh所以我决定使用https。推送工作正常,但当我尝试克隆我的项目时,它要求我输入每个文件的用户名和密码。

那有点烦人。它有什么解决方法吗?

编辑2018

这个问题仍然存在,真正的解决方案在哪里?它有一个简单而直接的配方吗?

链接https://git-scm.com/docs/gitcredentialsgit-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目录中”,但当然,我需要先克隆(!)..

  • ...

3 个答案:

答案 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而要求凭证(没有帮助者)时有问题,但可能已经修复了。

向傻瓜陈述

(巩固答案和评论)

  1. 检查git --version,如果少于 2.16 ,则安装得更好instructions here using PPA

  2. 检查您的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. ...克隆

    3.1。 (如评论所示)首先:git ls-remote https://github.com/myPrivate/MyProj1 ...这应该提示您的GitHub用户名和密码帐户。重复该命令以检查第二次,它不会提示您输入任何内容。

    3.2。照常使用git clone(谨慎使用sudo rm -r oldBrokenBadClone删除损坏的旧版本)...提供一次用户名和密码。

  4. 关于许多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 ---不需要凭据助手。