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.)

Jpsy
источник
.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)

РавиТея V
источник
-1

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

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

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

  • Напишите :

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

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

    мерзавец

Мостафа Гидарзаде
источник
-2

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

Веллингтон Матос
источник