Форум сообщества Zettelkasten работал с 2021 по 2026 год. Читать можно всё, писать — уже нет. Вся жизнь сообщества теперь — в книжном клубе ККРА: встречи, задания, записи и разговоры.
Всем привет, уверен, что многие участники сообщества пользуются связкой Obsidian и Git. Я сам, например, использую GitHub для попыток в коллективные базы знаний (подробнее вот в этой теме).
Было бы интересно узнать ваши мысли и лайфхаки по работе с этой связкой. Например, один из самых насущных для меня:
какие файлы добавляете в .gitignore? Я добавил .obsidian/workspace, но проблемы с синхронизацией иногда всё равно вылезают.
Уверен, что это всё где-то на форумах Obsidian описано, но думаю будет не лишним на нашем форуме отдельно обозначить лучшие практики
.obsidian/workspace в любом случае надо добавлять в исключения любого из вариантов синхронизации, кроме родного Sync, где это и так учитывается.
Отдельные плагины могут содержать свои варианты временных JSON-файлов. Вероятно их надо тоже добавлять в исключения.
Также можно искользовать разные конфиги для разных устройств, тогда можно вообще исключить из синхронизации всю директорию настроек и плагинов на разных устройствах.
Как быстро открыть заметку из Obsidian в веб-интерфейсе гитлаба/гитхаба
Я иногда хочу посмотреть, как мою заметку отрендерит гитлаб.
Плагин Obsidian Templater позволяет перейти в браузер одним нажатием клавиш (ну, после того, как его настроить )
Идем в настройки темплейтера и добавляем User Function. Имя выбираем open_on_remote, а в качестве скрипта пишем примерно следующее: firefox <my_git_repo_http_address>/blob/master/<%tp.file.path(true)%> (<my_git_repo_http_address> — адрес вашего репозитория с заметками)
Создаем новый шаблон для темплейтера (если не сделали этого раньше, нужно предварительно настроить, где темплейтер ищет шаблоны), называем его, к примеру, open_on_remote.md и добавляем в него одну строчку:
<%- tp.user.open_on_remote() %>
Опционально, можно добавить сочетание клавиш на шаблон. Опять идем в настройки темплейтера, жмем «Add new hotkey for template», выбираем путь к шаблону open_on_remote.md и добавляем удобное сочетание клавиш.
возможность отката до определенного состояния файла
просмотр истории файла
ветвление, а значит, можно что попробовать, не понравилось - удалить
отсутствие доверия к облакам, как к месту хранения данных.
хоть база моя и содержит в себе только мои записи, изредка туда попадает что-то рабочее. То, что не стоит светить в облаках
Что лежит в репе
Все. Гит игнор пустой. папка .obsidian синхронизируется у меня полностью. Возможно, это неправильно, но оно работает. У меня одна та же конфигурация на всех трех десктопах. Мобильную не использую. В теории, ее можно вести в отдельной ветке. Не задумывалась об этом. После того, как настроила под себя обсидиан в папке обсидиана у меня меняется лишь список плагина recent-files.
Что не стоит хранить в репе
бинарники
видео
музыку
книги или какие-то другие толстые файлы
вот правда… Залюбитесь потом их вычищать
Remote
Моим самым первым ремоте для заметок был Битбакет. Это было еще в то время, когда гитхаб давал приватные репозитории за деньги.
Сейчас мой remote - сервер с Gitea. Минималистично и просто.
Коммиты
Чаще всего се коммичу перед уходом домой в пятницу)))
Коммит с однотипным сообщением kb.
GUI для гита
Нет. Я не из тех, кто плюется при виде гуишных клиентов для гита и предпочитает только консоль. Посмотреть диф, закоммитить или пушануть не глядя - открываем gui и не выпендриваемся с консолью =)
Использовала GitKraken. Отличная вещь.
Но в бесплатной версии он запрещает использовать собственные инстансы гита.
После долгих поисков нашла Git cola. Download git-cola
Я вот раздумываю над тем, чтобы базу свою один или пару разочков на ГИТ заливать, как лучше всего настроить процесс? Есть простой совет и чем коммитить?
Git Cola GUI-приложение, достаточно простое.
Сам процесс.
Внутри папки инициализируем гит-репозиторий.
Через приложение создаем первый коммит.
Добавляем remote (удаленный репозиторий)
Делаем пуш в репозитоий.
На другом компьютере делаем pull и выкачиваем себе информацию.
Сменил ноут, восстановил все из резервной копии. Этот козленок последнюю копию делал два дня назад. Я не посмотрел. Ну думаю Бог с ним. Облако то должно быть облаком.
А не фига, он обновил файлы сразу после восстановления. Ох, как я скакал утром, чтоб восстановить все за два дня. Слава Богу старый ноут стоял рядом и ждал своего часа. Все вмиг выдернул.
Ну да, как бы намекает, что я сам дебил. Но вот какой вопрос, вдруг возник, а как обстоит дело с гитом? Он же поддерживает версионность. То есть гипотетически, при наличии нежелательного обновления – он должен иметь в истории версий старый файл и в случае чего восстановить его без проблем. Правильно?
гит неавтоматизированная система. Там ручками надо пушить. А так, там можно даже к какому-то определенному состоянию откатиться. (Может быть на выходных буду посвободней, статью про основы гита напишу)
Да. Если делать всё в одну ветку (чего, ИМХО, обычно хватает для личных маленьких проектов), то всегда можно скопировать конкретный файл по его пути из некоторого коммита.
это можно сделать, например, с помощью команды show :
$ git show ветка:путь/к/файлу
содержимое файла , находящегося в каталоге путь/к/ , будет выведено программой git в stdout . чтобы записать этот вывод в файл новый/путь/к/файлу , можете воспользоваться такой примерно командой:
$ git show ветка:путь/к/файлу > новый/путь/к/файлу
вместо имени ветки, разумеется можно указать и имя метки и хэш коммита.
Чтобы посмотреть, какие были коммиты последние, можно ввести git log, выдаст список. Буквенно-цифровой код - хэш коммита. Можно использовать небольшое начало вместо всего хэша.
В случае с несколькими ветками тоже через git show можно, но ведь нужно получить хэш коммита сначала как-то, а он может быть на другой ветке, но если вручную разбираться не хочется, то можно воспользоваться каким-нибудь графическим интерфейсом к гиту.
Ну и про бэкап: бэкапить на условную флешку/в яндекс.диск нужно не только файлы с заметками, но и папку .git (она лежит в корне репозитория, в частности, для obsidian vault будет лежать прямо в папке этого vault (вернее, можно и в подпапке хранилища репозиторий начать, но непонятно, зачем)). В этой папке лежат коммиты репозитория.
Вот. Возможно, написал не очень ясно, но буду рад вопросам и уточнениям.
в случае этой команды он скопирует копию выше, начиная с e7b39ea90 в файл с названием commits_15_05_23_work.bundle
Распаковываем так. Заходим в репозиторий куда надо передать данные.
Сначала создаем отдельную ветку в репозитории, например так
git checkout -b 15_05_23
да именно отдельную ветку, сразу в общий репозиторий не получится (без изменения опций)
зайдя в ветку вводим
git pull commits_15_05_23_work.bundle master
commits_15_05_23_work.bundle - это имя файла готовой резервной копии
возвращаемся в главную ветку командой
git checkout master
потом объединяем ветку с основной
git merge 15_05_23
15_05_23 это название ветки которую вы создали
И все.
Кажется, долго, но это не так. Привыкнете быстро.
История сохраняется.
В других вариантах нужны были промежуточные сервера, а тут не нужны никакие сервера. Просто файл с изменениями передается любым путем на другой комп.
● Продолжить разговор
Обсуждение закрыто вместе с форумом. Поговорить об этом можно в книжном клубе ККРА — там теперь живёт сообщество.