git - зафиксированные и объединенные изменения отображаются как локальные в локальной ветке - PullRequest
0 голосов
/ 03 апреля 2020

Один из моих коллег добавил нам новую таблицу SQL, и с тех пор она была зафиксирована и объединена в master для нашего хранилища базы данных. У меня есть локальная версия и все, но по какой-то причине git сохраняет это как неустановленное изменение. Даже когда я go ставлю sh его (и перезаписываю позже) или теряю его, когда заставляю оформить заказ в другой ветви, чтобы я мог выполнять работу, он продолжает возвращаться.

Это не совсем так проблема, поскольку я не включаю ее, когда ставлю свои коммиты, но я не хочу продолжать приспосабливаться к этому. Никто из моих коллег не знает, как решить эту проблему, и я думаю, что кто-то пытался удалить свой локальный репозиторий и снова клонировать его, но он все равно не работал. Кто-нибудь знает причину и как отменить это?

Есть изображение (заблокированы некоторые личные данные) enter image description here

Я пытался git stash, git checkout -- . (чтобы удалить его), git checkout -f <branch>, но ничего из этого не сработало, файл всегда возвращается.

Мы оба на Windows 10.

1 Ответ

1 голос
/ 04 апреля 2020

Я только что проверил наш репозиторий, и у нас есть 2 файла с очень похожими именами, хотя один не имеет всех заглавных букв. Может быть, git путают с каким?

Это не столько Git, сколько то, что в вашей комбинации ОС / файловой системы, вы буквально не можете хранить оба файла.

Если вы создаете файл с именем ReadMe.txt, а затем просите свою ОС создать другой, другой файл с именем README.TXT, ваша ОС отказывается делать который. Вместо этого он просто перезаписывает ReadMe.txt новым содержимым.

Commits в Git не являются файлами. Хотя они содержат , содержащие файлы, они хранят их в специальном, только для чтения, Git только в замороженном формате, который ваша ОС не использует или не понимает. В этом формате могут храниться оба файла - тот, чье имя оканчивается заглавными буквами, и тот, чье имя оканчивается смешанным регистром.

Git извлекает оба файла, а ваша ОС сохраняет только один из них. Git понимает, что ваша ОС не может обойтись обоими одновременно, но Git ничего не может с этим поделать. (Он может предупредить вас об этом, по крайней мере, и совсем недавно Git научился это делать.)

Способ исправить это - сделать новый коммит в что файлы имеют явно разные имена (или в которых есть только один файл с двумя именами, которые ваша ОС считает одним именем). Самый простой способ сделать это - сделать это на компьютере или в файловой системе, в которой могут храниться оба имени. Например, если у вас есть под рукой машина Linux, клонируйте репозиторий там, перемешайте файлы, подтвердите и pu sh. Новый коммит сохраняет файлы под новыми улучшенными именами. Будьте осторожны, чтобы не проверить старый коммит с двумя файлами под именами, которые перекрываются на Windows.

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