5

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

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


编辑 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 问题时,克隆过程不完整(错误),并且一直在 提供用户名和密码......

尝试执行凭据时也会出现问题(请参阅问题 #2223等)


试用报告:

  • git config credential.helper什么都不输出,空消息。

  • git config -f .lfsconfig lfs.url https://github.com/myPrivate/MyProj1接受任何东西...那么,浏览器的 URL 还是.gitURL?
    在它之后,命令在两种情况下git add .lfsconfig都说“致命:不是 git 存储库(或任何父目录):.git”(带有或不带有 .git 的 URL)

  • git config credential.https://github.com/myPrivate/MyProj1 myusername“致命:不在 git 目录中”,但当然,我需要先克隆(!)..

  • ...

4

3 回答 3

3

git-lfs 问题 993中所述:

因为 LFS 服务器和 git 服务器可以是不同的端点,所以用户可能对 git 服务器有权限,但对 LFS 服务器没有权限。

在这种情况下,如果安装了凭据管理器,则不会重置凭据,LFS 将在每​​个后续请求中使用它们,而不会使它们失效。

你应该检查你的git config credential.helper输出。
在 Windows 上,它应该是(最近的 2017-2018 Git 版本)“经理”。
打开 Windows 凭据管理器并清除或修复任何 GitHub 凭据条目。

注意:问题 2349指出 Git-LFS 在请求凭据时遇到问题(在没有助手的情况下),因为缺少 pty/tty,但这可能已经修复。


转换为假人

(合并答案和评论)

  1. 检查git --version,如果低于2.16 ,请按照此处使用 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)... 给用户名和密码一次。

关于在许多 UBUNTU LTS 服务器中进行测试的最后说明......有时,当您在此过程之前进行克隆时,您无法解决问题(git pull错误,例如“git-credential-libsecret:未找到”)。解决方案是删除所有旧的克隆存储库(注意使用rm -rf)。看起来你可以随时做git config --global credential.helper ,所以,做吧。再次克隆 - 可能提供两次用户名和密码,但之后就可以了。

于 2018-03-12T21:33:42.700 回答
1

您可以使用 git lfs 支持的 Git凭证助手(具有永久存储和内存缓存选项)。

我还注意到 git lfs 有一些与此相关的问题已经解决。

于 2016-04-03T06:10:16.373 回答
0

如果实际访问文件不需要密码并且您使用https://server.com/path/to/repoURL 访问,那么它应该可以工作(从 gi​​t-lfs 0.5.3 开始)。一种可能性是您的配置具有lfs.batch = false. 尝试git -c lfs.batch=true clone https://server.com/path/to/repo--- 不需要凭证助手。

于 2016-11-18T21:00:41.187 回答