我将我的dotfiles存储在github中,因为没有自动化,所以很费劲.我必须自己更新.
有没有办法可以自动安装/更新/同步dotfiles?我的意思是在一个新的服务器,我下载dotfiles并执行install脚本将dotfiles复制到本地.一段时间后,我可以执行updateToRemote脚本将本地更改推送到远程仓库,在另一台服务器上,我可以执行updateToLocal脚本将远程更改拉到本地.
这样的事情.
Von*_*onC 31
关于dotfiles的主要信息来源是dotfiles.github.io.
它基于符号链接方法引用了诸如使用Git和Github管理您的Dotfiles之类的博客文章.
对于初学者,我们将所有的dotfiles放入一个名为dotfiles的文件夹中,如下所示:
/home/smalleycreative/dotfiles/vimrc.
然后,我们将简单地从我们的主目录中对它们进行符号链接.
Jaime提到了Atlassian教程" 存储你的dotfiles的最佳方式:一个简单的Git存储库 "
该技术包括使用特制的别名将Git裸存储库存储在"side"文件夹(如
$HOME/.cfg或$HOME/.myconfig)中,以便针对该存储库运行命令,而不是通常的.git/本地文件夹,这会干扰任何其他Git存储库.
(然后dotfiles文件夹作为git repo进行管理)
上面的答案非常好,而且正是我在"真实操作系统"上的表现.
我在使用cygwin/msys的着名商业操作系统上遇到了这个问题,因此使用符号链接有时可能会出现一些我最喜欢的软件的"本机"端口.
为了解决这个问题,我尝试将文件夹$ HOME直接作为git存储库.在一些失败后,我发现密钥全部在.gitignore文件中.
所以,我一直在使用了一段时间的设置是通过使$ HOME的存储库,制作的.gitignore文件,并单独添加所需的"点文件"文件创建的.我还在备份驱动器(z:在本例中为z)中添加了一个存储库作为上游,以获得自动备份.如果您的文件夹已备份,则添加上游是不必要的复杂问题.因此,假设"/z/Backups/Dotfiles.git"是一个预先存在的"裸"存储库,在msys shell中,设置的步骤是:
$ 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 >>
Run Code Online (Sandbox Code Playgroud)
接下来我将以下内容放入$ 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/
Run Code Online (Sandbox Code Playgroud)
最后,以下命令(道歉我没有捕获这些输出)将.gitignore本身添加到存储库:
$ cd $HOME
$ git add .gitignore
$ git commit -m "Added some rules so git status on the dotfiles is useful."
$ git push
Run Code Online (Sandbox Code Playgroud)
现在,您添加到主目录的任何"普通"文件都会被dotfiles repo忽略,但任何新的dotfiles都会显示为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)
Run Code Online (Sandbox Code Playgroud)
到目前为止,这一直运行良好,即使一些子目录是他们自己的(不相关的)git存储库.有时会出现非git细分的"怪癖",但到目前为止还没什么问题.