git - 管理本地配置文件的 git 存储库的有效方法

标签 git config

我将配置文件(~/.bashrc~/.emacs~/emacs 等)存储在 git 中。我配置它的方式只是在主目录中添加一个 git 存储库。

我发现这种方法有一些问题:

  • git gui 需要很长时间,因为它会递归扫描整个主目录。
  • 我有时会不小心将文件添加到应该转到新存储库的配置存储库(我创建了一个新项目,比如在 ~/projects/foo 中,忘了它还没有 git repo 初始化,并在 foo 目录中执行 git add bar.xyz。这会导致一个文件被添加到配置 repo)。

我不确定将 git 存储库嵌套在已有 git 存储库的目录下是否明智,尽管我还没有遇到任何基本问题。

是否有更好的方法,或者这是人们在 git 中存储本地配置文件的标准方式?

最佳答案

我正在使用 git repo 来管理点文件。它包含:

  1. 目录 dotfiles,其中包含我要跟踪的实际点文件/dotdirs。
  2. 一个 shell 脚本,用于在 $HOME 中创建 dotfiles/.* 的符号链接(symbolic link),例如

    for dotfile in dotfiles/.* ; do
      case $(basename $dotfile) in
        .)
          ;;
        ..)
          ;;
        *)
          ln -sv $(realpath dotfile) $HOME/$(basename $dotfile)
          ;;
      esac
    done
    

当我在 dotfiles 中添加新内容(通常是将 dotfile 移动到 repo 中)或在新的干净的 $HOME 中时,脚本会手动运行。

repo 可以驻留在任何地方。我在我使用的每台主机上的 $HOME 中都有一个克隆。

通过这种方式,我有一个更小且非嵌套的工作树,可以有选择地跟踪点文件。

附注您可能想将 dotfiles/.config/* 之类的条目添加到 .gitignore,它包含许多我不想跟踪的文件。

关于git - 管理本地配置文件的 git 存储库的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17082038/

相关文章:

node.js - 如何在 Heroku 系统变量中设置主文件夹?

git - 从中央仓库创建本地分支的标准方法是什么?

使用 OAuth 访问 token 的 GitHub 克隆

git - 如何让vi重绘屏幕?

c++ - 仅 header 库的配置 (C++)

python-2.7 - Tesseract 的路径错误

git - `go get` 和 `git clone` 之间的区别?

git log 每个文件的提交计数

asp.net-mvc - 在 web.config 文件中创建自定义变量?

c# - App.config 验证