VS 2017 Git Local Commit Ошибка DB.lock при каждом коммите


200

Мы получаем эту ошибку при каждом локальном коммите:

Git завершился неудачно с фатальной ошибкой. Error: open (". Vs / XXXXXX.Dev.Library / v15 / Server / sqlite3 / db.lock"): Permission deniedfatal: невозможно обработать путь .vs / XXXXXX.Dev.Library / v15 /Server/sqlite3/db.lock

Это новая установка VS 2017 с использованием локального репозитория git, прежде чем он сможет синхронизироваться с Azure DevOps GIT.

Мы можем вручную удалить файл блокировки и затем выполнить синхронизацию , но это серьезно замедляет процесс разработки (необходимость каждый раз закрывать , удалять , открывать , фиксировать ).

Кто-нибудь знает лучшее долгосрочное решение этой проблемы?


Если кто-то еще сталкивается с этим и добавление «.vs /» в .gitignore, похоже, не работает, создание файла в PowerShell и последующее редактирование с помощью Notepad ++ оставляет файл с неправильным типом кодировки символов. Мне нужно было открыть его в VS Code и закодировать как обычный UTF8, а затем все заработало отлично
Брайан Лейшман,

Ответы:


419

Просто добавьте папку .vs в файл .gitignore .

Вот пример для Visual Studio из коллекции шаблонов .gitignore GitHub, например:
https://github.com/github/gitignore/blob/master/VisualStudio.gitignore


Если у вас возникли проблемы с добавлением файла .gitignore, просто выполните следующие действия:

  1. В окне Team Explorer перейдите в Настройки.

Team Explorer - Настройки

  1. Затем откройте настройки репозитория.

Настройки репозитория

  1. Наконец, нажмите «Добавить» в разделе «Игнорировать файл».

введите описание изображения здесь

Готово. ;)
Этот файл по умолчанию уже содержит папку .vs.

введите описание изображения здесь


3
Да, это лучший ответ, я поставил «2017» только в: # Visual Studio 2015/2017 кеш / каталог опций .vs /
harveyt

1
Беда в том, что git clean -fxdон начинает крутиться. Мне нужно выйти из VS, прежде чем я смогу убрать. Это началось только с VS2017 и не произошло в 2015 году
Питер МакЭвой

4
Это сработало и для меня. Идеальный ответ на вводящее в заблуждение сообщение об ошибке.
Стэнли Окпала Нвоса

@Matheus, после выполнения этого коммита постановка сработала, но Commit All и Push по-прежнему показывают ту же ошибку. Что можно сделать, чтобы заставить его совершить и подтолкнуть?
Стэнли Окпала Нвоса,

Сработало для меня, хотя в большинстве случаев создание git в VS кажется немного волшебным. Я пытаюсь вытащить кролика из шляпы, но вместо этого достаю шимпанзе.
Роберто

63
  1. Папка .vs не должна быть зафиксирована.
  2. создайте файл с именем «.gitignore» внутри корневого каталога git проектов.
  3. Добавьте следующую строку ".vs /" в файл ".gitignore".
  4. Теперь зафиксируйте свой проект.

введите описание изображения здесь


Здравствуйте, несмотря на то, что этот тип файла находится в файле gitignore, я все еще получаю ошибку. Пожалуйста, помогите.
user3820266

33

Шаг 1:
Добавьте .vs / к вашему файлу .gitignore (как сказано в других ответах).

Шаг 2:
Важно понимать, что шаг 1 НЕ удалит файлы в .vs / из вашего текущего индекса ветвления, если они уже были добавлены в него. Так что очистите свою активную ветку, выполнив:

git rm --cached -r .vs/*

Шаг 3:
Лучше всего немедленно повторить шаги 1 и 2 для всех других активных веток вашего проекта.
В противном случае вы легко столкнетесь с теми же проблемами снова при переходе на неочищенную ветку.

Совет для профессионалов:
вместо шага 1 вы можете использовать этот официальный шаблон .gitingore для VisualStudio, который охватывает гораздо больше, чем просто путь .vs:
https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
(Но все же не забывайте шаги 2 и 3.)


.vs был исключен из моего файла .gitignore (.vs /), и проблема все еще сохраняется. С чем еще может быть проблема?
Стэнли Окпала Нвоса

1
Был в состоянии решить, запустив git rm --cached -r .vs / *. Спасибо
Stanley Okpala Nwosa

5

VS 2017 Git Local Commit Ошибка DB.lock при каждом коммите

Эта проблема должна быть вызвана поврежденным файлом .ignore.

Если вашей IDE является Visual Studio, пожалуйста, выполните следующие действия для решения этой проблемы:

  1. Удалите файл .gitignore из папки вашего проекта.
  2. Перейти к Team Explorer
  3. Перейти на главную страницу в Team Explorer
  4. Перейдите в настройки
  5. Под GIT, нажмите Настройки хранилища
  6. Под - Игнорировать и файлы атрибутов - Под Игнорировать файл - Нажмите Добавить. Вы должны увидеть уведомление об успешном создании файла игнорирования.
  7. Создайте свое решение. После успешной сборки потребуется некоторое время и создайте новый файл .ignore.
  8. Теперь вы должны иметь возможность совершать и нажимать без каких-либо проблем

NB. Имейте в виду, что ваша версия visual studio может размещать эти параметры по-разному. Я использую Visual Studio 2019 Community Edition.


Работал на меня. Спасибо!
Чейз Эрнст

2

У меня была та же проблема, но я решил, создав файл .gitignore.

Я также нашел обходной путь, который просто состоит в удалении файла db.lock из папки .vs, но вы должны делать это каждый раз, и длительное выполнение этого делает это раздражающей операцией.

Лучший способ решить эту проблему - создать файл .gitignore, как было предложено ранее, но я думаю, что хорошо бы упомянуть и этот обходной путь, просто для общего ознакомления!

С уважением, Тони Гринтон


0

Я не использую Git напрямую через Visual Studio, но использую клиент Git Desktop.

Однако я получил похожую ошибку, но решил ее, закрыв Visual Studio перед фиксацией изменений в master.


0

если вы используете IDE, например Visual Studio, и он открыт, когда вы отправляете команды, закройте IDE и попробуйте снова

git add .

и другие команды, это будет тренировка


0

Для меня помогли следующие шаги:

  • Закрыть Visual Studio 2019
  • Удалить папку .vs в проекте
  • Повторно открыть проект, папка .vs создается автоматически
  • Готово

0

Мой автоматически сгенерированный .gitignoreфайл содержится /.vsвместо .vs/. Исправление этой опечатки решило проблему!


0

введите описание изображения здесь

Для меня эти два файла я удалил по ошибке, после отмены этих двух файлов и добавления в мои изменения я смог зафиксировать свои изменения в git.


0

Если бы это и мой .gitignore находился в папке моего проекта, но основные папки git были на уровне решения. Перемещение .gitignore в папки уровня решения / git работало. До сих пор не уверен, как это получилось, но


-1

Попробуйте скопировать файл в свой каталог вручную (C: \ Users \ Admin \ AppData \ Local \ Temp \ WebSitePublish \ digisol - 1147805695 \ obj \ Debug \ Package \ PackageTmp.vs \ digisol \ v15 \ Server \ sqlite3)


-1

Я сделал вышеуказанные решения, наконец, эта работа решила мою проблему:

  • Закройте визуальную студию

  • Запустите git bash в папке проекта

  • Напишите :

    мерзавец добавить.

    git commit -m "[ваш комментарий]"

    мерзавец


-2

Решить эту проблему просто. Сначала закройте Visual Studio и откройте проводник Windows, перейдите в папку location .vs и откройте свойства папки и отметьте скрытый параметр.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.