Народ, чё-т я не вкуриваю, объясните.

У меня в #git есть ветка master, которая синхронизируется с сервером. И есть ветка local, чисто локальная.

Я хочу, чтобы в master один конкретный файл игнорировался, а в local -- нет. Суть проблемы в том, что при добавлении того файла в .gitignore, он удаляется во время перехода local -> master (логично).

Пробовал выносить файлик за пределы репозитория и хранить в репе только symlink, в pre-commit hook ставить удаление файла (т.е. симлинка), а в post-commit повторное создание симлинка. Но чё-то как-то костыльно выглядит.

Есть соображения?

@groosha Ты кстати не пояснил зачем оно тебе надо, я чувствую более фундаментальную проблему тут

@groosha например хочешь ли ты вообще чтобы он попадал в мастер ветку?

@sunchaser суть вот в чём: я пишу бота для телеги, там авторизация через обычную учётку. Библиотека, которую я использую, хранит сессии в файлах .session.
Я пушу код в приватный репозиторий в своей gitea, но для перестраховки хотел в ветке master игнорировать эти файлы, а в ветке 'dev', наоборот, трекать и пушить (чтобы синхронизировать файлик между компами). А в конце, когда закончу писать код, ветку dev удалю, а master останется со всеми коммитами и без тех файликов.

Потом возникла мысль вообще не пушить ветку 'dev' (обозвав её 'local', как в примере выше), оставить её локальной, но с этими файликами.

@groosha тогда коммить только в мастер, а dev/local ребейсь на нее при запусках. Запускай только из dev/local. Но этот геморрой будет ценен, если тебе реально надо зачем-то синхронизировать файл. Скопировать его 1 раз точно не хватит?

@sunchaser да вот походу придётся так и делать, наверное. И оставить в .gitignore

@groosha файл в игноре можно всегда добавить явно через git add -f, кроме того если файл уже трекается, он будет трекаться и дальше даже если он попадает под маску .gitignore

@groosha @sunchaser
> для перестраховки хотел в ветке master игнорировать эти файлы, а в ветке 'dev', наоборот, трекать и пушить

1. Класть чувствительные данные в VCS - это путь к их утечке. Независимо от того в какую ветку и как ты планируешь играться с ветками.
2. В 95% случаев хорошей практикой является не хранить в VCS "производных" файлов, а хранить только исходники. Представь, что ты хранишь скомпилированные бинарники в Git. Кажется ли тебе это правильным?

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

Sign in to participate in the conversation
Librem Social

Librem Social is an opt-in public network. Messages are shared under Creative Commons BY-SA 4.0 license terms. Policy.

Stay safe. Please abide by our code of conduct.

(Source code)

image/svg+xml Librem Chat image/svg+xml