#git #version-control
#git #управление версиями
Вопрос:
Я хочу сохранить пару файлов в разных каталогах под управлением версиями с помощью git. Некоторые из них находятся в моем домашнем каталоге, а некоторые — в /etc
, и я, очевидно, не хочу делать корень репозиторием git.
Этого можно было бы достичь, поместив все файлы в одну папку и разместив ссылки в их предполагаемых местах, например /etc/resolv.conf -> /home/tim/my-repo/etc-resolv.conf
, но не должно быть необходимости так сильно менять мою систему, чтобы приспособиться к программному обеспечению для контроля версий.
Как управлять версиями файлов без замены оригиналов ссылками?
Ответ №1:
Похоже, что вам действительно нужно хорошее решение для резервного копирования. Одна из вещей, с которыми Git не справится, — это атрибуты файла, такие как владелец, группа, разрешения, контексты безопасности SELinux. Ситуация может сильно осложниться, когда вы начнете управлять системными файлами с помощью Git.
Я бы упростил задачу и использовал обычные утилиты резервного копирования, такие как rsync
, cpio
, tar
и cron
с подходящей политикой резервного копирования.
Комментарии:
1. По моему опыту, Git довольно хорошо справляется с атрибутами файлов.
Ответ №2:
Вся идея git основана на предположении, что у вас есть один каталог, который вы хотите контролировать версиями.
Одним из возможных решений было бы иметь всю файловую систему под git, но использовать .gitignore
для исключения чего-либо, за некоторыми исключениями.
Ответ №3:
Я не думаю, что существует жизнеспособная альтернатива ссылкам.
Комментарии:
1. Если это так, я не вижу причины для этого. Теоретически это вполне возможно.
Ответ №4:
сделайте каждый каталог репозиторием git, а затем передайте разные имена ветвей в общий репозиторий.
надеюсь, это поможет.
Ответ №5:
Git лучше всего подходит для управления исходным кодом в некотором общем каталоге проекта, а не отдельными файлами в разных каталогах.
Возможно, можно что-то подделать с помощью небольшого кодирования, например, перехвата фиксации, который считывает список файлов, которые он затем зафиксировал, но внесение изменений git ‘notice’ в эти удаленные файлы было бы сложным 😉
Ответ №6:
Просто наткнулся на этот вопрос, потому что у меня такая же проблема. Я хотел бы управлять версиями некоторых, но не всех файлов конфигурации системы и некоторых скриптов в разных разрозненных каталогах.
Я нашел две функции git, которые могут здесь помочь:
Вы можете заменить каталог .git файлом, указывающим на реальный каталог git. Таким образом, вы можете поместить свой каталог .git в выбранное место и при этом иметь глобальный git, если вы поместите файл .git в / .
Формат файла .git:
gitdir: /path/to/your/.git
Второе — простое глобальное исключение. Просто добавьте глобальный подстановочный знак (*) в file /info/exclude . Это исключает все файлы по умолчанию. Чтобы отслеживать файл, вы должны явно включить его с помощью ‘git add -f’.