如何对我的.git / config文件进行版本控制?

时间:2013-04-24 23:48:51

标签: git version-control config gitignore

我有一个.gitignore文件,如下所示:

.*
!.gitignore

我想对我的.git/config文件进行版本设置,这样当我执行git pull时,我的.git / config文件会自动更新。

我该怎么做?

我尝试过类似的事情:

.*
!.gitignore
!.git/config

但是这没用。我知道如果我创建一个链接(ln -s .git/config configurations/git/config)我可以对其进行版本化,但我希望有一种更好的方法来自动更新原始链接。

我正在考虑创建一个指向它的硬链接(ln .git/config configurations/git/config configuration/git),但它似乎并不是最好的方法。有办法避免这种情况吗?在对硬链接进行版本控制时Git会正常工作吗?

编辑:解释原因

这样做的主要动机是我想要对我的用户的主文件夹进行版本控制。我将使用此版本控制来帮助我进行某种部署。我想保持所有克隆同步。如果我管理不好,就会出现Conflits,我会照顾它。也许我会对其他受保护的git文件进行版本控制。

4 个答案:

答案 0 :(得分:3)

您无法'版本化'.git / config文件。你可以做的是在你的工作目录中创建一个.gitconfig并提交它。然后在你执行克隆之后。

  cat .gitconfig >> .git/config

当然,这充满了各种各样的潜在问题。如果有人编辑.gitconfig怎么办?您需要撤消.git/config,然后在git pull之后重新附加。如果.gitconfig在另一个分支上发生变化怎么办?您需要撤消.git/config并重新附加git checkout <branch>

所以,我不建议改变.git/config;但如果你必须,你必须。

答案 1 :(得分:2)

.git/config文件进行版本设置是个坏主意。

git不允许您对.git目录下的任何内容进行版本设置,因为.git的内容是您的repo的本地内容,而且有两个人从同一个远程URL克隆,不需要具有相同的内容克隆后.git目录下的文件集。

例如,您可能只有一个名为origin的远程,而另一个开发人员可能已将远程命名为foo。另一位开发人员可能有2个名为barbaz的遥控器。

有关遥控器(URL,refspec等),本地分支(如上游跟踪分支等)的信息存储在.git/config文件中。

如果您确实需要覆盖某些配置,则可以在本地编辑.git/config文件,或者如果您可以选择全局使用~/.gitconfig或等效文件。

答案 2 :(得分:0)

添加已经很好的答案,并实际回答OP的问题:

  

我正在考虑创建一个指向它的硬链接(ln .git/config configurations/git/config configuration/git),但它似乎并不是最好的方式。
  有没有办法避免这种情况?
  在对硬链接进行版本控制时Git会正常工作吗?

没有

  • 硬链接未在Git中显示:请参阅“Git and hard links
  • 符号链接只会存储为带有链接文件路径的文本文件。

答案 3 :(得分:0)

如@Tuxdude所说,共享.git/config本身是不好的信息。

但是Git (1.7.10+) now supports config inclusion

因此,对于重要的选项,您可能会说将它们放置在文件中:.git.config/repository.config,然后在.git/config中放置链接,如下所示:

[include]
        path = ../.git.config/repository.config

我只是在自述文件中添加这样的建议以进行回购。只需复制/粘贴许多行并对重要设置(如常规文件)进行版本控制就很容易了。它还会为所有回购用户转移更新。