7

我有一个 .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 会正常工作吗?

编辑:解释为什么要这样做

这样做的主要动机是我想对我的用户的主文件夹进行版本控制。我将使用此版本控制来帮助我进行某种部署。我想保持所有克隆同步。如果我管理不好,就会出现冲突,我会解决这个问题。也许我也会对另一个受保护的 git 文件进行版本控制。

4

4 回答 4

3

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

  cat .gitconfig >> .git/config

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

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

于 2013-04-25T02:47:46.170 回答
3

正如@Tuxdude 所说,分享.git/config自己是不好的信息。

但是Git (1.7.10+) 现在支持配置包含

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

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

我只是在 repo 的自述文件中添加了这样的建议。只需复制/粘贴多行和对常规文件等重要设置进行版本控制非常容易。它还为 repo 的所有用户传输更新。

于 2019-01-15T12:09:32.363 回答
1

对文件进行版本控制是个坏主意.git/config

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

例如,您可能只有一个远程命名origin,而其他开发人员可能已将远程命名为类似的名称foo。另一个开发人员可能有 2 个名为bar和的遥控器baz

有关远程(URL、refspec 等)、本地分支(如上游跟踪分支等)的信息存储在您的.git/config文件中。

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

于 2013-04-24T23:56:50.740 回答
0

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

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

不:

  • Git 中不表示硬链接:请参阅“ Git 和硬链接
  • 符号链接将简单地存储为带有链接文件路径的文本文件。
于 2013-04-25T11:28:08.787 回答