使用 Git 同步配置文件

现在很多软件的配置都可以在线同步或者支持导入导出,可以很方便的在不同设备上使用。但电脑上还有很多本地配置文件没有办法同步,跨多个设备使用时很难保持一致,换电脑也很麻烦。其实可以使用 Git 来管理这些配置文件,既可以方便的备份、跨设备同步,还能进行版本控制,防止误操作。

主要思路就是在电脑上创建个裸仓,将工作区设置为所有配置文件的根目录,一般是用户的家目录。然后忽略掉所有文件,仅将需要备份的文件强制暂存起来就可以了。


具体操作如下:

  1. 先在本地创建个裸仓:

    1
    2
    3
    mkdir config.git
    cd config.git
    git init --bare
  2. 忽略工作区内的所有文件

    1
    echo "*" >> info/exclude
  3. 手动配置工作区为家目录(或其他所有配置文件的共同父目录)

    1
    2
    git config core.bare false
    git config core.worktree ~
  4. 这时可以 git status 检查下配置是否正确,例如应该回显了 nothing to commit 而不是整个工作区的文件

  5. 第一次添加文件的时候需要使用 -f 选项: git add -f ~/xxx.conf,否则会提示文件已经被忽略了

  6. 剩下的步骤就和正常使用 Git 一样了,git add -u/git commit/git push/git pull


如果已经有了配置的仓库,需要在新设备上第一次恢复配置,具体操作步骤如下:

  1. 先克隆仓库到本地的裸仓库:

    1
    git clone --bare remote-repository-url config.git
  2. 手动配置工作区和忽略工作区的所有文件

    1
    2
    3
    echo "*" >> info/exclude
    git config core.bare false
    git config core.worktree ~
  3. 因为之前克隆的是裸仓,暂存区内没有内容,所以需要先执行 git reset 命令重建下暂存区

  4. 现在可以使用 git status 检查本地配置文件和远端配置文件的差异,或者使用 git diff 对比

  5. 保险起见,应该 git checkout filename 逐个恢复,也可以使用 git checkout ~ 恢复所有配置