Файл в git-репо становится недоступным - PullRequest
0 голосов
/ 19 декабря 2018

Я делюсь своим каталогом git (где я храню все мои репозитории git) между моей рабочей станцией win 10 и виртуальной машиной Linux, работающей на VMWare Workstation.Через некоторое время работы с ним скрипт, с которым я работаю (называемый aws_utils.sh), становится недоступным.

Я просто сохранил некоторые изменения в файле, зафиксировал их и нажал на них.Затем я переключаю ветви.И я вижу это сообщение:

 git checkout update_aws_list_rds
error: unable to create file aws_utils.sh: Permission denied
Switched to branch 'update_aws_list_rds'
D       aws_utils.sh

Я НЕ удалял этот файл.Это мой основной файл, и я бы этого не делал.

Затем я смотрю на разрешения этого файла, и они выглядят так (под Linux):

-????????? ? ?       ?       ?            ? aws_utils.sh

И я могуничего не делать с файлом:

ls -lh aws_utils.sh 
ls: cannot access 'aws_utils.sh': Permission denied

Даже с правами root я не могу даже перечислить файл:

ls -lh aws_utils.sh 
ls: cannot access 'aws_utils.sh': Permission denied
whoami
root

И через несколько минут файл просто Ушелкак будто я удалил это.И выполнение git pull не восстанавливает файл.

Мне нужно буквально удалить каталог и снова клонировать его, чтобы получить файл обратно.

Я проверяю ветку update_aws_list_rds, и файл, который был удален до того, как я удалил каталог, находится там после того, как я снова клонирую каталог.

Я использую git версии 2.17.1 и VMware player 15.

Что происходит, что может вызвать это?Как я могу остановить эту проблему?

1 Ответ

0 голосов
/ 19 декабря 2018

This:

Я делюсь своим каталогом git (где я храню все мои репозитории git) между моей рабочей станцией win 10 и виртуальной машиной Linux, работающей на VMWare Workstation.

почти наверняка является проблемой.

Этот тип общего хранилища никогда не работает правильно. 1 Особенно плохо он работает с Git, который настаивает на полном, полном, 100% контроле надего .git каталоги.Существует два практических правила использования Git таким образом:

  1. Не делайте этого.
  2. Если вы должны это сделать, убедитесь, что вы делаете это на 100% только для чтения изпо крайней мере с одной стороны.

Так как Git уже имеет свой собственный протокол совместного использования, довольно легко настроить систему VMWare или VirtualBox, так что хост и клиент - это только два разныхмашины с двумя разными Git-репозиториями, которые используют git push и / или git pull для передачи объектов между ними.Таким образом, каждый Git может иметь полный, полный, 100% контроль над своим собственным .git и соответствующим рабочим деревом, и что прекрасно работает .


Что,никогда?
Ну, вряд ли когда-нибудь!

...