Почему index.lock иногда создается при переключении веток в vscode?

Почему vscode иногда создает index.lock при переключении веток? В частности, если в предыдущей ветке, которую я только что открыл, было что-то в package-lock.json, и я просто хотел, чтобы сброс сделал git reset --hard? К вашему сведению, я использую узел 8. Вот скриншот:

1 ответ

Решение

Git создает index.lock всякий раз, когда он обновляет индекс. (На самом деле, index.lock Сам файл блокировки - это новый создаваемый индекс, который будет заменен после его завершения. Но это деталь реализации.) Git удаляет файл автоматически (фактически, заменяя его на место) после завершения обновления. В этот момент другие команды Git могут блокировать и затем обновлять индекс, хотя, конечно, по одной за раз.

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

Если файл есть в какой-то момент, но не появится в следующий раз, когда вы попробуете что-то, это означает, что какая-то команда Git все еще выполнялась (и обновлялась), и вы просто были слишком нетерпеливы.:-) Если вы смешиваете различные команды Git (и / или интерфейсы, такие как GUI), вам, возможно, придется вручную координировать действия, чтобы избежать этих конфликтов во время выполнения. Любой интерфейс должен согласовываться с самим собой.

Другие вопросы по тегам