Git удалить файл из репозитория, не удаляя КОГДА ДРУГИЕ ТЯНУТЫ - PullRequest
0 голосов
/ 04 октября 2019

Каждый разработчик в моей команде имеет файл .idea в корне своей локальной рабочей копии. У кого-то такого не было в их глобальном .gitignore (и его нет ни в одном другом .gitignores), поэтому они случайно передали его в наше удаленное репо. Теперь он отслеживается.

Мы хотим снова отследить его, но нам нужно, чтобы файлы .idea оставались на на каждом локальном компьютере. Каноническим предложением является git rm -r --cache .idea, а затем отправка на удаленный компьютер, но, хотя это оставляет каталог .idea на компьютере, на котором выполняется команда, .idea все равно будет удален с компьютеров других пользователей при следующем обращении. Это было упомянуто во многих похожих вопросах, но только в комментариях и т. Д., И есть только ряд хакерских обходных путей, которые требуют от каждого разработчика каких-либо действий, чтобы избежать удаления. Это невыполнимо для большой или рассеянной команды, и в любом случае оно кажется неуместным, учитывая, что изменение, которое мы хотим предпринять only , относится к истории репо, а не к локальным файловым системам. Верните статус отслеживания каталога .idea в исходное состояние - без отслеживания, и git оставит его в покое.

Каким каноническим или наилучшим способом достижения этой цели?

1 Ответ

0 голосов
/ 04 октября 2019

Фиксацию, где файл был передан и отслежен, можно вернуть, как сказал @ ThorbjørnRavnAndersen. Я не очень опытен в возврате коммитов, поэтому я бы немного испугался этого, особенно если после этого будет несколько важных коммитов. Однако опытный пользователь git не должен иметь проблем с этим. Как я не я бы XD. Одна вещь, которую я успешно сделал, когда я загружал много файлов в репо, которую я не хотел отслеживать (из-за плохой обработки gitignore), состояла в том, чтобы установить новый источник репо со стертыми файлами и обновленным .gitignore, а затем установить новыйвышестоящий источник к вашей локальной ветке, поэтому ваше локальное хранилище будет теперь отслеживаться с новым источником. Подводя итог, я хочу загрузить репо в облако в соответствии с желаемым статусом и установить новый источник. Найдите ссылку:

https://help.github.com/en/articles/changing-a-remotes-url

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

...