Клонировать проект gitlab, который использует git lfs без постоянного ввода пароля

Решил попробовать git lfs на gitlab. Я заметил, что он не работает с ssh, поэтому решил использовать для него https. Push работает нормально, но когда я попытался клонировать свой проект, он попросил меня ввести имя пользователя и пароль для каждого файла.

Это немного раздражает. Есть ли обходной путь?


РЕДАКТИРОВАТЬ 2018

Эта проблема сохраняется, где реальное решение? Есть простой и прямой рецепт для этого?

Ссылки 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, проблема заключается в том, что процесс клонирования не завершен (ошибка) и постоянно выдавал имя пользователя и пароль...

Проблемы также при попытке ввести учетные данные (см. issue #2223 и т. д. .)


Попытка отчета:

  • git config credential.helper ничего не выводит, пустое сообщение.

  • git config -f .lfsconfig lfs.url https://github.com/myPrivate/MyProj1 принимает что угодно... Итак, это URL-адрес браузера или .git URL-адрес?
    После него команда git add .lfsconfig говорит "fatal: Not a git-репозиторий (или какой-либо из родительских каталогов): .git" в обоих случаях (URL с .git или без него)

  • git config credential.https://github.com/myPrivate/MyProj1 myusername скажите "fatal: not in a git directory", но, конечно, мне нужно сначала клонировать (!)..

  • ...


person TheCrafter    schedule 02.04.2016    source источник


Ответы (3)


Как упоминалось в git-lfs issue 993:

Поскольку сервер LFS и сервер git могут быть отдельными конечными точками, возможно, что у пользователя есть разрешение для сервера git, но не для сервера LFS.

В этом случае, если установлен диспетчер учетных данных, учетные данные не будут сброшены, и LFS будет использовать их при каждом последующем запросе, даже не аннулируя их.

Вы должны проверить свои выходные данные git config credential.helper.
В Windows это должно быть (с последними выпусками Git 2017-2018) manager.
Откройте диспетчер учетных данных Windows и очистите или исправьте все записи учетных данных GitHub.

Примечание. issue 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: not found). Решение состоит в том, чтобы удалить все старые клонированные репо (осторожно с rm -rf). По-видимому, вы можете сделать git config --global credential.helper в любое время, так что делайте это. Снова клонируйте — возможно, дважды укажите имя пользователя и пароль, но после этого все будет в порядке.

person VonC    schedule 12.03.2018
comment
Команда git config credential.helper ничего не делает, ни ошибки, ни сообщения. - person Peter Krauss; 13.03.2018
comment
@PeterKrauss, тогда вам нужно сначала перейти на Linux Git 2.16.2 (stackoverflow.com/a/41357503/6309), затем используйте libsecret в качестве помощника по учетным данным, как показано в stackoverflow.com/q/42284674/6309. - person VonC; 13.03.2018
comment
Хм... Разумно, но моя версия не годится? git версии 2.7.4 Хорошо, сделаю это - person Peter Krauss; 13.03.2018
comment
Нет, после процедуры PPA тот же git --version результат, 2.7.4. - person Peter Krauss; 13.03.2018
comment
@PeterKrauss, потому что с версии 2.7.4 было применено множество исправлений, некоторые из них касаются помощника по учетным данным. - person VonC; 13.03.2018
comment
@PeterKrauss Нет: launchpad.net/~git-core/+archive/ubuntu/ ppa включает 2.16.2. - person VonC; 13.03.2018
comment
Упс извините, удалил, теперь новая версия! После apt install git - person Peter Krauss; 13.03.2018
comment
Назад, после git --version = 2.16.2, делаю git config credential.helper но ничего не делает, пусто - person Peter Krauss; 13.03.2018
comment
@PeterKrauss Это ожидаемо: теперь вам нужно настроить его на libsecret, как описано в вопросе stackoverflow.com/q/42284674/6309 - person VonC; 13.03.2018
comment
Хм... У вас есть скрипт или команда UBUNTU для этого? Какая-то простая и прямая процедура? Я не понимаю, как это сделать настроить на libsecret - person Peter Krauss; 13.03.2018
comment
@PeterKrauss Вот где, как описано в вопросе stackoverflow.com/q/42284674/6309, входит: git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret (введите его в баше, в любой папке, это не имеет значения) - person VonC; 13.03.2018
comment
В порядке! Теперь сообщение git config credential.helper - это этот путь... так что... могу ли я сделать свой клон, и он будет работать нормально? - person Peter Krauss; 13.03.2018
comment
@PeterKrauss Сначала сделайте: git ls-remote https://github.com/myPrivate/MyProj1: это должно запросить ваше имя пользователя и пароль учетной записи GitHub. Повторите эту команду, чтобы убедиться, что во второй раз она ничего не запрашивает. Наконец, сделайте свой клон. - person VonC; 13.03.2018
comment
@PeterKrauss Я должен положить этому конец, но я продолжу завтра утром через несколько часов. - person VonC; 13.03.2018
comment
@PeterKrauss Мне не ясно, помог ли этот ответ решить проблему. Если да, скажите, пожалуйста, пометить это как принятый ответ :) - person TheCrafter; 19.03.2018
comment
Привет @TheCrafter, да, этот ответ (3 шага) был для меня лучшим. См. также github.com/git-lfs issue #2040. - person Peter Krauss; 19.03.2018

Вы можете использовать помощник по учетным данным от Git, который поддерживает git lfs (имеет постоянное хранилище и в памяти кэш).

Я также заметил, что у git lfs были некоторые проблемы, связанные с этим, которые были решены.

person danf    schedule 03.04.2016

Если для фактического доступа к файлам пароль не требуется, и вы обращаетесь с URL-адресом https://server.com/path/to/repo, тогда он должен работать (начиная с git-lfs 0.5.3). Одна возможность состоит в том, что ваша конфигурация имеет lfs.batch = false. Попробуйте git -c lfs.batch=true clone https://server.com/path/to/repo --- помощник по учетным данным не требуется.

person Paul Price    schedule 18.11.2016
comment
Привет @Paul, спасибо! Но мой процесс тестирования был завершен, я не могу протестировать ваше решение... См. мои сводные инструкции в разделе «Перевод на макеты» в ответе VonC< /а> - person Peter Krauss; 13.03.2018
comment
Хм... Я вижу в своих тестах, что перед решением я тестировал git -c lfs.batch=true clone, но оно не было решено. - person Peter Krauss; 13.03.2018