Невозможно выполнить sh мои коммиты из-за master.lock - PullRequest
0 голосов
/ 08 февраля 2020

Я не могу сделать sh мои коммиты в мой git репозиторий. Хотя команда git pu sh, кажется, корректно завершает sh, она всегда приводит к созданию файла блокировки, который не удаляется, и тогда я не вижу свои коммиты в хранилище.

Точнее, вот пример с двумя рабочими пространствами (clone1 и clone2):

[clone1] git commit -a ==> В локальном хранилище clone1 создан коммит

[clone1] git push == > Нет ошибок. Однако файл origin / refs /heads / master.lock создается и не удаляется.

[clone2] git pull ==> git говорит: «Уже актуально». Но коммит из clone1 не получен!

[clone1] git push ==> git error: "fatal: Невозможно создать '/MyGitRepository/TestHelper_git_bug/refs/heads/master.lock': файл существует. Если ни один другой процесс git в настоящее время не выполняется, это, вероятно, означает, что процесс git был аварийно завершен ранее в этом хранилище. Убедитесь, что никакой другой процесс git не запущен, и удалите файл вручную, чтобы продолжить. fatal: Удаленный конец неожиданно завис фатально: удаленный конец неожиданно зависает "

[clone1] rm -f /MyGitRepository/TestHelper_git_bug/refs/heads/master.lock ==> файл блокировки удален.

[clone1] git push ==> И снова origin / refs /heads / master.lock создается, но не удаляется автоматически

[clone2] git pull ==> Уже обновлено. Коммит из clone1 все еще не получен!

Если я попытаюсь сделать коммит из clone2 sh, у меня будут те же результаты.

Я искал "дикий" git процесс с помощью команды ps -ef | grep git, но ее нет.

Я попытался воссоздать clone1: сначала это выглядело как хороший обходной путь, но через некоторое время снова пошло не так. Я также пытался воссоздать репозиторий git. Тот же результат: сначала хорошо, но ненадолго.

Конфигурация: git 1.7.1 на Linux

Есть идеи? Буду очень признателен за вашу помощь!

1 Ответ

0 голосов
/ 08 февраля 2020

Такое поведение возможно, когда несколько клиентов Git пытаются выполнить операцию в одном и том же хранилище. Похоже, в вашем. git хранилище два процесса пытаются получить доступ к файлу master.lock. В клонированном репо может быть неверно указан восходящий поток.

Один из способов - закрыть все запущенные git клиенты. Другой способ - удалить файл master.lock из вашего репозитория clone-2. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...