Подтвердить что ты не робот

Используйте git для управления домашним каталогом

Я хотел бы создать один единственный git repo в моем каталоге Linux $HOME. В этом репо - очевидно - я мог бы добавить все под контроль версий, но это не имело бы смысла. Я бы хотел только добавить файлы и папки, которые имеют отношение ко мне, например .vimrc,.vim,.bashrc и т.д. (Возможно, только скрытые файлы и папки, но, возможно, нет)

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

4b9b3361

Ответ 1

.gitignore

# Ignore everything
*

# But not these files...
!*.vimrc
!*.vim
!*.bashrc
!.gitignore

# etc...

Ответ 2

Я бы установил псевдоним для использования только с вашим домашним репо таким образом вы можете использовать псевдоним вместо команды git, и вы всегда знаете контекст, в котором вы работаете в

# .bashrc
alias home='git --work-tree=$HOME --git-dir=$HOME/.home'

Выдача comand

$ home init

создаст репо в папке .home в $HOME и не имеет отношения к текущему каталогу, вы можете работать с домашним репо с псевдонимом "home" вместо "git"

Это вместе с .gitignore должно быть всем, что вам нужно.

# .gitignore
*
# keep track
!.bashrc
!.gitignore

NB. НЕ СОХРАНЯЙТЕ .ssh/keys в репо, поскольку он представляет разрешения на файл и проблемы с безопасностью.

Ответ 3

Я думаю, что вы ищете dotfiles.

Ответ 4

Я бы предложил не помещать ваш каталог $HOME под управлением git. Я сделал это, потому что думал, что я очень умный, и хотел, чтобы мои .dotfiles находились под контролем версий. Однако git жадный и голодный. Мне пришлось добавить тонны каталогов (или даже *) в мой $HOME/.gitignore. И есть ли у вас какие-либо репозитории git в другом месте в вашем домашнем каталоге? Я сделал. Но эти репозитории git будут использовать ваш $HOME/.gitignore как ваш глобальный .gitignore, если вы не установите его в другом месте. Так что это настоящая боль, чтобы попытаться добавить файлы в эти репозитории подкаталогов.

Вместо этого поместите важные файлы в отдельный каталог. Скажем, ~/dotfiles. Теперь сделайте это репозиторий git и соедините все ваши важные .dotfiles, чтобы указать на этот новый репозиторий. Вуаля. Проблема решена, хотя с некоторым временем вложилась в связь.

Ответ 5

Я думаю, что лучший способ - создать репозиторий git в другом месте (желательно на физически другом диске) и добавить в него свои файлы.
Вы можете создать пустой git репо с помощью do (в безопасной файловой системе, желательно на другом диске, например /home 1)

sudo git init --bare mynewrepos.git
sudo chown -fR myself mynewrepos.git
sudo chgrp -fR myself mynewrepos.git

перейдите в свой домашний каталог и сделайте

git clone /home1/mynewrepos.git   # now you are cloning from empty git repos.

затем добавьте свои драгоценные файлы в git (git add, git commit, git push.. и все). Я не пытался использовать мои обычные файлы под своим домом, но я использую этот метод для управления моими локальными файлами проекта (перед загрузкой в ​​официальный репозиторий git). Но опять же, если у вас есть много git управляемых файлов под вашим домом, они могут быть затронуты вашим .gitignorefiles под вашим домом.