我保存我的github上点文件,有很多痛苦,因为没有自动化的。 我必须更新它自己。
是否有可以自动安装/更新/同步点文件的方法吗? 我的意思是在一个新的服务器,我下载点文件和exec一个install
脚本,点文件复制到本地。 过了一段时间,我可以Exec中updateToRemote
脚本来推动本地更改到远程回购,以及另一台服务器上,我可以Exec中updateToLocal
脚本拉远程切换到本地。
类似的东西。
我保存我的github上点文件,有很多痛苦,因为没有自动化的。 我必须更新它自己。
是否有可以自动安装/更新/同步点文件的方法吗? 我的意思是在一个新的服务器,我下载点文件和exec一个install
脚本,点文件复制到本地。 过了一段时间,我可以Exec中updateToRemote
脚本来推动本地更改到远程回购,以及另一台服务器上,我可以Exec中updateToLocal
脚本拉远程切换到本地。
类似的东西。
的有关点文件的主要来源是dotfiles.github.io
。
它引用的博客文章喜欢使用Git和Github的管理您的点文件的基础上,一个符号链接方法。
对于初学者来说,我们将将所有我们点文件成一个文件夹,名为点文件,像这样:
/home/smalleycreative/dotfiles/vimrc
。
然后,我们将简单地从我们的主目录下符号链接到他们。
海梅提到了Atlassian的教程“ 来存储您的点文件的最好方法:裸Git仓库 ”
该技术在于在a“侧”的文件夹存储一个Git纯仓库(如
$HOME/.cfg
或$HOME/.myconfig
),使用特制的别名,使得命令被针对该存储库运行,而不是通常的.git/
本地文件夹,这将与任何其它的Git存储库干扰周围。
(然后将点文件夹作为一个git回购管理)
以上答案是优秀的,是我究竟会怎么做对“真正的操作系统”。
我用的cygwin / MSYS因此使用符号链接有时会用一些自己喜欢的软件的“原生”港口问题遇到了一个问题,这个在著名的商业操作系统。
要解决此我只是把文件夹$ HOME直接是一个Git仓库实验。 一些失败后,我发现关键是所有的.gitignore文件以。
所以,我一直在使用了一段时间的设置是通过使$ HOME的存储库,制作的.gitignore文件,并单独添加所需的“点文件”文件创建的。 我还添加了一个备份向上驱动(Z:在这种情况下)上的存储库作为上游只是为了获得自动备份。 如果你的文件夹已经备份,增加上游是一种不必要的并发症。 因此,假设“/z/Backups/Dotfiles.git”是一个预先存在的“裸”库,在MSYS壳,步骤设置事情是:
$ cd $HOME
$ git init
Initialised empty Git repository in $HOME
$ git add .bashrc .emacs .gitconfig # for example
$ git commit -m "Initial import of dotfiles"
[master (root-commit) xxxxxxxx] Initial import for dotfiles
3 files changed, xxx instertions(+)
create mode 100644 .bashrc
create mode 100644 .emacs
create mode 100644 .gitconfig
# The following two lines just add an "upstream" purely for backup purposes.
$ git remote add origin /z/Backups/Dotfiles.git
$ git push -u origin master
<< snip >>
接下来,我把下列$ HOME /的.gitignore:
# First exclude everything.
*
# then re-include all "dotfiles"
!/.*
# then a bunch of specific excludes as they are more-or-less "cache" data rather than configuration.
/.bash_history
/.dbus-keyrings/
/.emacs.d/
/.gimp-2.8/
/.git/
/.gitk
/.idlerc/
/.lesshst
/.saves/
/.thumbnails/
最后,下面的命令(道歉我没有捕获从这些输出)的.gitignore本身添加到存储库:
$ cd $HOME
$ git add .gitignore
$ git commit -m "Added some rules so git status on the dotfiles is useful."
$ git push
现在,任何“正常”的文件添加到您的家目录由点文件回购被忽略,但任何新的点文件中git的状态,例如显示:
$ cd $HOME
$ touch NewFile.txt
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
$ touch .funkychicken
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
.funkychicken
nothing added to commit but untracked files present (use "git add" to track)
到目前为止,这一直运作良好,即使有一些子目录是自己的(无关)的Git仓库。 有时也有“怪癖”与非git的子目录,但至今没有任何问题的。
嗯,这是三年之后,没有人想出了什么伟大,所以我花了刺这个问题。 它的平台无关,外壳不可知与其他没有依赖关系,那么你必须提供的伯恩兼容外壳(bash中,zsh中,KSH等)。 它适用于苹果机,Linux和Windows:
dotsys
它会自动同步与github上与多台计算机更改您的点文件,与许多其他功能一起。
我使用的Git仓库(github上)和bash脚本创建符号链接。 但是现在我发现这个工具,它似乎更强大。 检查出来: https://github.com/shanx/python-dotfiles 。
我发现用普通的Git来管理您的点文件,没必要符号链接一种有趣的方式。 这样一来,你应该能够做到推拉常用方法:
建立
git init --bare $HOME/.myconf
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME'
config config status.showUntrackedFiles no
在我的〜/ .myconf目录是一个Git的裸库。
用法
通常Git命令然后可以用git的别名,如配置或任何你选择使用。
config status
config add .vimrc
config commit -m "Add vimrc"
config push
优点
更多相关信息
您更新/与之同步您的点文件git push/pull
命令(GitHub上充当“中央”资料库)。 当涉及到符号链接点文件我写了一篇关于它的文章。 快来看看吧: 轻松管理您的点文件 。
其主要思想是有所有你想跟踪在Git和其在主目录符号链接的真正点文件独立的目录(通常称为.dotfiles)。
已经有很多关于这个方法所做的工作,所以我会建议你检查DFM(点文件管理器):