#git
#git
Вопрос:
Я знаю, что существует такой способ отменить отслеживание изменений в файле, git update-index --skip-worktree FILE
но мне нужно полностью забыть одну конкретную фиксацию / или изменения в файле, а затем все равно иметь возможность отслеживать новые изменения. С помощью skip worktree я просто полностью отключаю отслеживание изменений, затем я могу включить его, и в конце я получаю обратно свои изменения, которые, как я хотел, не отслеживались в git, но были включены в файл. Мне просто нужно сохранить изменения в файл (проблема с Windows path), но файл не будет удален из git в utracked. Мне не нужен gitignore, и мне не нужно git rm --cached
.
Я не буду совершать коммит всякий раз, когда меняю пути с помощью sed, с Unix на Windows и обратно. У меня нет кроссплатформенного решения проблемы пути, но я поддерживаю две версии программы. Я хочу иметь те же изменения git, кроме фиксации пути, но мне нужно сохранить разные пути в Unix.
Комментарии:
1. Пожалуйста, объясните исходный контекст, интересно понять, зачем вам нужно выполнять такую операцию.
Ответ №1:
Git не предлагает способа сделать это. Из записи Git FAQ по этой проблеме:
Git не предоставляет способа сделать это. Причина в том, что если Git необходимо перезаписать этот файл, например, во время проверки, он не знает, являются ли изменения в файле ценными и должны быть сохранены, или они не имеют значения и могут быть безопасно уничтожены. Поэтому он должен выбирать безопасный маршрут и всегда сохранять их.
Заманчиво попытаться использовать определенные функции
git update-index
, а именно биты assume-unchanged и skip-worktree , но они не работают должным образом для этой цели и не должны использоваться таким образом.Если ваша цель состоит в том, чтобы изменить файл конфигурации, часто бывает полезно проверить файл в репозитории, который представляет собой шаблон или набор значений по умолчанию, которые затем могут быть скопированы вместе и изменены соответствующим образом. Этот второй измененный файл обычно игнорируется, чтобы предотвратить его случайную фиксацию.
Поэтому вам определенно не следует использовать git update-index
для этой цели, и вместо этого вам следует создать файл шаблона, который вы можете обновить с помощью соответствующих путей для платформы, возможно, используя скрипт для этой цели.