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

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


具体操作如下:

  1. 先在本地创建个裸仓:
    mkdir config.git
    cd config.git
    git init --bare
  2. 忽略工作区内的所有文件
    echo "*" >> info/exclude
  3. 手动配置工作区为家目录(或其他所有配置文件的共同父目录)
    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. 先克隆仓库到本地的裸仓库:
    git clone --bare remote-repository-url config.git
  2. 手动配置工作区和忽略工作区的所有文件
    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 ~ 恢复所有配置

如何使用 Git 管理配置文件的更多相关文章

  1. Linux下,使用Git管理 dotfiles(配置文件)

    1.管理你的 dotfiles 作为一个计算机深度使用者,并且长期使用 Linux 作为主要操作系统,折腾各种功能强大的软件是常有的事儿.这些软件有它们各自的配置文件,通常以 . 开头,因此有人管它们 ...

  2. intelliJ IDEA之使用svn或git管理代码

    intelliJ IDEA之使用svn管理代码 1.VCS—>import into Version Control—>Share Project(Subversion) 2.点击+    ...

  3. debian安装git管理本地代码

    debian安装git管理本地代码 安装git # aptitude install git-core # aptitude install git-doc git-svn git-email git ...

  4. webstorm中使用git管理服务器上的代码——入门级

    一.首先要确保电脑已经成功安装好git了.(记住git的安装位置) 二.这里需要给webstorm配置一下:依次点击:file –> Settings –> Version Control ...

  5. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

  6. GIT·全局配置文件及项目配置文件

    阅文时长 | 0.03分钟 字数统计 | 48.8字符 主要内容 | 1.引言&背景 2.声明与参考资料 『GIT·全局配置文件及项目配置文件』 编写人 | SCscHero 编写时间 | 2 ...

  7. git 管理

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Helvetica Neue"; color: #3e3e3e; bac ...

  8. 用git管理源代码

    自从做iOS开发的一年多以来,之前一直都是用svn进行代码管理.因为工作需要,我也开始用git管理源代码.关于git的基本使用,在此做一个详细的介绍,希望能对初次接触git的人有所帮助! 本篇博客针对 ...

  9. 使用 Git 管理源代码

    在现代软件开发项目中,要成为一个有效的软件开发人员,我们必须能够与其他项目贡献者并行进行开发.源代码管理(SCM)系统不是什么新思想.为了编写一些能够更快速.简单地开发以后软件项目的软件,已经进行了很 ...

随机推荐

  1. 『现学现忘』Git后悔药 — 27、版本回退介绍

    目录 1.什么版本回退 2.需要了解两个知识点 (1)HEAD是什么 (2)HEAD指针用法 3.git reflog命令介绍 1.什么版本回退 版本回退也可以叫回滚. 若修改过的文件,不仅添加到了暂 ...

  2. Tapdata 实时数据融合平台解决方案(三):数据中台的技术需求

    作者介绍:TJ,唐建法,Tapdata 钛铂数据 CTO,MongoDB中文社区主席,原MongoDB大中华区  首席架构师,极客时间MongoDB视频课程讲师. 我们讲完了这个中台的一个架构和它的逻 ...

  3. skip-host-cache skip-name-resolve

    在mysql 的data 文件夹下 生成了一个.err的文件,打开发展,经常有人访问这个,服务器部署在腾讯云上. 2017-05-23 0:49:04 2996 [Warning] IP addres ...

  4. 向docker镜像中传递变量的两种方式

    测试用到的python文件: #!/usr/bin/env python3 #conding: utf-8 from http.server import HTTPServer, BaseHTTPRe ...

  5. 第三天python3 字典

    字典 dict 特点:key-value键值对的数据的集合    可变的.无序的.key不重复:非线性结构: 字典的初始化 d=dict() 或者 d = { } dict(**kwargs) 使用n ...

  6. 魔怔愉悦之 Vizing 定理

    Vizing 定理 定义 \(\Delta(G)\) 表示图 \(G\) 的点的最大度数,即 \(\displaystyle\Delta G=\max_{i=1}^{|V|}\deg(i)\) . 边 ...

  7. std::hash<std::pair<int, int> >

    标题是搞笑的 ! 这个问题只需要 since C++11 问题:怎么让 unordered_map 支持使用 pair 作为 key? 如果你能把两个东西压到一个基本类型里那么就不用解决这个问题了 . ...

  8. GIt后悔药:还原提交的操作(谨慎操作)

    一.背景: 偶尔会遇到git的版本分支的文件被误改的情况,需要还原,此篇文章可能会帮助到你. PS: 来理解下 Git 工作区.暂存区和版本库概念,可以更好的理解以下的还原操作. * 工作区:就是你在 ...

  9. ERROR: null value in column "name" of relation "res_company" violates not-null constraint

    1 # 创建res.company公司信息的时候,发现它执行了两次create()方法,并且第二次调用create,传了一个[{}]做为参数 2 # 原因是,你创建res.company的时候并没有指 ...

  10. Informatica旗下PowerCenter的元数据库解析

    因客户需求,最近重拾Informatica下的PowerCenter产品,主要研究数据血缘关系.从PowerCenter本身来看,它是一个功能非常强大,速率非常高效的一款付费的ETL工具,可以满足各种 ...