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

时间:2013-06-13 07:59:23

标签: git config

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

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

  • git gui需要永远,因为它递归扫描整个家庭目录。
  • 我有时会意外地将文件添加到应该转到新repo的配置仓库中(我创建一个新项目,比如~/projects/foo,忘记它还没有初始化git repo,并执行{{ 1 {}在git add bar.xyz目录中。这会导致文件被添加到配置库中。

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

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

2 个答案:

答案 0 :(得分:3)

我正在使用git repo来管理dotfiles。它包含:

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

    for dotfile in dotfiles/.* ; do
      case $(basename $dotfile) in
        .)
          ;;
        ..)
          ;;
        *)
          ln -sv $(realpath dotfile) $HOME/$(basename $dotfile)
          ;;
      esac
    done
    
  3. 我在dotfiles中添加新内容后(通常将点文件移动到repo中)或新的干净$HOME中手动运行脚本。

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

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

    P.S。您可能希望将dotfiles/.config/*等条目添加到.gitignore,它包含许多我不想跟踪的文件。

答案 1 :(得分:3)

我将我的dotfiles保存在Git存储库中,就像你一样 - 我的家庭目录是一个Git存储库。

  • git gui:我很少使用它,所以我不确定它的性能如何受到大量未跟踪文件的影响。但是,我的~/.gitignore文件只包含*。也许忽略一切都会为你加速git gui

  • 无意中添加文件:创建一个只包含~/.gitignore的{​​{1}}文件,还可以解决在忘记初始化新项目存储库时意外将文件添加到dotfiles存储库的问题(它如果你真的想要添加文件,请告诉你使用*

  • 我从未遇到过嵌套存储库的问题。

一些注意事项:

  • 我将-f设置为~/.gitignore的主要原因是*未显示我的主目录中的每个文件。它迫使我一直使用git status,这有点烦人,但不是那么大的交易。

  • 养成使用git add -f代替git clean -dx的习惯。您必须记住在新项目存储库中运行git clean -dxf,但如果您不在您认为自己所在的目录中,它将阻止您意外删除主目录中的所有文件。

  • Git有时会决定重置文件权限。如果要在Git存储库中保留敏感文件(git config clean.requireForce false),这可能会很糟糕。我通过chmod og-rwx钩子处理这个问题,该钩子修复了某些文件和目录的权限(例如,post-checkout)。