# Mac配置dotfiles **Repository Path**: aeoogo/dotfiles ## Basic Information - **Project Name**: Mac配置dotfiles - **Description**: 使用dotfiles和stow管理你的配置。 - **Primary Language**: Shell - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-11-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用dotfiles和stow管理你的配置 [dotfiles](http://dotfiles.github.io/)指将HOME目录下的`.XXX`文件或目录同步到Github上的方式。通常情况下,我们在开发过程中装的大部分工具,都会在HOME目录下创建一个以`.`开头的文件或目录,存放`配置`或者`状态`。 因此我们希望的是用Github版本管理这些`配置`,而不是`状态`。 好吧,让我们来看看到底如何版本管理这些“dotfiles”。 ## 安装 ```bash cd ~/ git clone https://gitee.com/gebing/dotfiles.git cd dotfiles ./dotfiles.sh ``` PS: - 执行`dotfiles.sh`要求安装Homebrew和Git。如果未安装,请手工安装或执行下面的`brew.sh`命令。 - 执行`dotfiles.sh`会提示是否覆盖Home目录下原文件,如果想跳过提示,请执行`./dotfiles.sh -f`。 - 执行`dotfiles.sh`成功后,设置在重新打开终端后生效。如果想立即生效,请根据shell类型执行`source ~/.bash_profile`或`source ~/.zshrc`。 ## 初始化Mac设置 此dotfiles还提供了2个初始化脚本,以便于用户在使用新Mac电脑是初始化Mac OSX系统设置和安装Homebrew。 - 初始化Mac OSX系统设置,请执行以下的命令: ```bash cd ~/dotfiles ./macosx.sh ``` PS: - 大家可以Clone此项目,并修改`macosx.sh`文件。 - 安装Homebrew和常用软件,请执行以下的命令: ```bash cd ~/dotfiles ./brew.sh ``` PS: - 大家可以Clone此项目,并修改`brew.sh`文件。 ## 使用stow管理symlink [GNU stow](http://www.gnu.org/software/stow/)是管理符号链接(symlink)的一个小工具。Mac上安装只需要执行:`brew install stow`,其他平台上安装说明,请访问官网。 安装完stow之后,我们可以开始symlink一些dotfiles了。以此dotfiles为例,我将dotfiles分发链接整个目录(link_folder)和链接目录中部分文件(new_folder)两类。 - 链接目录中部分文件(new_folder) 执行stow,会将目录中的全部文件及子目录中的全部文件,在Home目录下按照目录结构创建相应的symlink。当修改Home目录下对应文件的内容时,实际上是修改了dotfiles目录下的文件。 我们修改相应的配置后,就可以执行git命令将更改内容同步到git仓库中。 如果我们在dotfiles中增加了新的文件,需要重新执行以下命令,在Home目录下创建dotfiles中新增的文件的symlink。 ```bash cd ~/dotfiles stow --no-folding new_folder ``` - 链接整个目录(link_folder) 执行stow,会将目录中的所有子目录,在Home目录下创建相应的目录symlink。当修改Home目录下对应目录下的内容时,包括新增或删除文件,实际上是修改了dotfiles目录下的文件;而修改dotfiles目录下的文件,其变化会自动反应到Home目录下对应目录,而不再需要重新创建symlink。 在我们修改相应的配置后,可以执行git命令将更改内容同步到git仓库中。 ## 参考资料 - [使用dotfiles和stow管理你的dotfiles](https://github.com/jcouyang/dotfiles) - [Mathias’s dotfiles](https://github.com/mathiasbynens/dotfiles)