Многие люди советуют вам использовать git update-index --assume-unchanged
. Действительно, это может быть хорошим решением, но только в краткосрочной перспективе.
Что вы, вероятно, хотите сделать, это: git update-index --skip-worktree
.
(Третий вариант, который вам, вероятно, не нужен: git rm --cached
. Он сохранит ваш локальный файл, но будет помечен как удаленный из удаленного хранилища.)
Разница между первыми двумя вариантами?
assume-unchanged
временно разрешает скрывать изменения в файле. Если вы хотите скрыть изменения, внесенные в файл, изменить файл, а затем извлечь другую ветку, вам нужно будет использовать no-assume-unchanged
, тогда, вероятно, сохраните изменения, сделанные.
skip-worktree
будет следовать за вами независимо от того, какую ветку вы заказываете, с вашими модификациями!
Вариант использования assume-unchanged
Предполагается, что этот файл не должен быть изменен, и обеспечивает более чистый вывод при выполнении git status
. Но при переходе в другую ветку вам необходимо сбросить флаг и зафиксировать или спрятать изменения перед этим. Если вы активируете эту опцию, вам нужно будет разрешать конфликты, а git не будет автоматически объединяться. На самом деле он скрывает только модификации (git status
не покажет вам отмеченные файлы).
Мне нравится использовать его, когда я хочу только на некоторое время остановить отслеживание изменений + зафиксировать кучу файлов (git commit -a
), связанных с той же модификацией .
Вариант использования skip-worktree
У вас есть класс настройки, содержащий параметры (например, включая пароли), которые ваши друзья должны изменить в соответствии со своими настройками.
- 1: создайте первую версию этого класса, заполните поля, которые вы можете заполнить, и оставьте другие поля пустыми / пустыми.
- 2: зафиксируйте и отправьте его на удаленный сервер.
- 3:
git update-index --skip-worktree MySetupClass.java
- 4: Обновите ваш класс конфигурации с вашими собственными параметрами.
- 5: вернуться к работе над другой функцией.
Изменения, которые вы сделаете, будут следовать за вами независимо от ветки. Предупреждение: если ваши друзья также хотят изменить этот класс, они должны иметь ту же настройку, иначе их изменения будут перенесены в удаленный репозиторий. При извлечении удаленная версия файла должна перезаписать вашу.
PS: делайте одно или другое, но не оба, поскольку у вас будут нежелательные побочные эффекты. Если вы хотите попробовать другой флаг, вы должны сначала отключить его.