Недавно я перешел на Github (встроенная поддержка VS2017) из Perforce для некоторых отдельных проектов. В Perforce есть функция, называемая «сделать доступной для записи», которая позволяет вам записывать в файл локально, а затем отправлять его на сервер только путем явной проверки и отправки.
Это широко использовалось для любых двоичных файлов (.exe и т. д.), Которые нужно было отправлять очень редко, но все же нужно было записывать.
К сожалению, из моего ограниченного опыта работы с Github кажется, что все файлы настроены на запись и всегда помечаются как «измененные», даже exes. Есть ли параметр, который я могу сделать или настроить, который позволяет Github отмечать файл как измененный явно, чтобы я не мог случайно отправить неполный, сломанный или отладочный .exe?
Обновленный ответ: Итак, я забыл, если файл отслеживается Git в какой-то момент, он становится немного уродливым. Есть способы обойти это, но это не одна команда для этого.
ЕСЛИ вы хотите выполнить маршрут .gitignore, вы можете. Но есть еще один шаг (первый шаг см. Ниже). Вы должны после каждой фиксации файла .exe запускать git rm --cached <filename>
. Это приведет к удалению метаданных вокруг файла, сообщающих Git о необходимости его отслеживания. Как только вы это сделаете, он больше не будет отображаться в списке изменений в плагине Visual Studio (если вы находитесь в командной строке, он не будет отображаться в git status
). Затем, чтобы добавить файл, вы делаете то, что я упомянул ниже, а именно: git add -f <filename>
.
Если вместо этого, другой способ сделать это - запустить git update-index --assume-unchanged <filename>
. Это говорит Git игнорировать изменения в файле. Если вы хотите зафиксировать его, сначала запустите git update-index --no-assume-unchange <filename>
и выполните обычный рабочий процесс git add
git commit
, а затем, как только вы его зафиксируете, снова запустите бит git update-index --assume-unchanged <filename>
. Это беспорядочно, и, честно говоря, я бы написал специальный инструмент в VS, чтобы сделать это, вместо того, чтобы полагаться на встроенный инструмент SCM в Visual Studio.
Исходный ответ: лучший способ сделать это (IMO, у других будет свое мнение) - добавить файлы в ваш .gitignore. Затем, если / когда вы действительно хотите их зафиксировать, сделайте git add -f <file>
, а затем выполните фиксацию как обычно.
Обновлено: обратите внимание, что это то, что каждый должен будет сделать, чтобы избежать случайного совершения. Способ обойти это - также зафиксировать ваш .gitignore, чтобы у всех было одинаковое поведение.