Git: сохранить сгенерированные / модифицированные системой файлы без изменений - PullRequest
0 голосов
/ 12 марта 2019

Я работаю над проектом C # dot net, в котором недавно появился git.

При сборке Он генерирует много dll-файлов и изменяет много отслеживаемых js-файлов.

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

  1. Это должно позволить мне переключить ветку, сохранив эти файлы как есть.
  2. При извлечении новых изменений, если какие-либо изменения должны быть применены к этим js-файлам с удаленного компьютера. Он должен применяться, но все же он должен позволять мне переключать ветви и извлекать новые изменения.
  3. Я должен иметь возможность фиксировать другие файлы, которые я легко изменил

Пожалуйста, предложите шаги для этого в командах git.

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

1 Ответ

0 голосов
/ 12 марта 2019

Для файлов, которые вы не хотите помещать в систему контроля версий, используйте файл .gitignore. Поскольку файлы уже находятся в репо, вам нужно будет предпринять шаги для их удаления - по крайней мере, добавив коммиты в каждую ветку для их удаления (см. git rm --cached), или, возможно, отредактировав историю (например, с git filter-branch).

Вы можете искать здесь для каждой из этих тем и найти много ответов, объясняющих их. Также вы можете ссылаться на git docs, например

Для файлов, где вы хотите иметь возможность получать изменения с удаленного компьютера, но также не хотите, чтобы вас блокировали от смены веток ... это невозможно сделать каким-либо удаленно безопасным способом. Либо файл находится под контролем источника, изменения являются общими, и применяются все правила управления незафиксированными изменениями; или он не находится под контролем источника и управляется независимо в каждом клоне.

В простейшем случае у вас будет 3 разных типа файлов: файлы, которые генерируются процессом сборки, которые вы никогда не редактируете и которые не хранятся в исходном контроле; файлы из сторонних источников, таких как зависимости, которые вы также не редактируете или не помещаете в систему контроля версий, но которые извлекаются программным обеспечением для управления зависимостями во время сборки; и файлы, которые вы редактируете, которые никогда не изменяются автоматическими и являются единственными в управлении исходным кодом, поэтому вы всегда хотите поделиться изменениями в этих файлах, и никогда не будет автоматического изменения, которое блокировало бы вас от переключения или переключения ветвей.

Если ваш процесс требует, чтобы у вас были файлы, которые не соответствуют этим категориям, то в первую очередь я бы пересмотрел ваш процесс - потому что проблемы с контролем версий - это только первые (и самые незначительные) проблемы, возникающие из-за наличия единственного файл, который принимает изменения от 2 или более из этих категорий.

Если вам необходимо, чтобы в процессе сборки были изменены файлы, созданные либо локально и контролируемые источником, либо файлы сторонних производителей, извлеченные с зависимостью, тогда процесс сборки должен скопировать файл и работать с этой копией. Измененная копия должна быть .gitignore d, а оригинал должен быть оставлен в процессе сборки.

Если у вас должны быть файлы, которые смешивают изменения, созданные локально, с файлами сторонних разработчиков, то вам следует настроить репо для «вашей версии» зависимости, которая представляет такие файлы (форк, если они также используют git для контроль источника), с веткой поставщика, чтобы вы могли включать будущие изменения, которые они вносят в свои файлы, если вам нужно. Опять же, это тема, по которой вы можете искать и найти много существующих ответов.

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