![](/img/trans.png)
[英]how to config git to overwrite non text file instead of version controlled it?
[英]How to version the .git/config file?
我有一个 .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 文件进行版本控制。
你不能“版本”你的 .git/config 文件。 您可以做的是在您的工作目录中创建一个 .gitconfig 并提交它。 然后在克隆之后执行。
cat .gitconfig >> .git/config
当然,这充满了各种潜在的问题。 如果有人编辑.gitconfig
怎么.gitconfig
? 您需要撤消.git/config
,然后在git pull
之后重新追加。 如果.gitconfig
在不同的分支上发生变化怎么办? 您需要撤消.git/config
并在git checkout <branch>
上重新附加
所以,我不建议更改.git/config
; 但如果你必须,你必须。
正如@Tuxdude 所说,共享.git/config
本身是错误的信息。
因此,对于重要的选项,您可能会说将它们放在文件中: .git.config/repository.config
并在.git/config
放置指向它的链接,例如:
[include]
path = ../.git.config/repository.config
我只是在 repo 的自述文件中添加了这样的建议。 只需复制/粘贴多行并对常规文件等重要设置进行版本控制就很容易了。 它还为所有 repo 用户传输更新。
对.git/config
文件进行版本控制是个坏主意。
Git并不让你下什么版本的.git
目录,因为内容的.git
是本地的存放区,以及2人来自同一个远程URL克隆,不用有下的同一组文件.git
后目录克隆人。
例如,您可能只有一个名为origin
远程,而其他开发人员可能将远程命名为foo
东西。 另一个开发人员可能有 2 个名为bar
和baz
遥控器。
有关远程(URL、refspec 等)、本地分支(如上游跟踪分支等)的信息存储在您的.git/config
文件中。
如果你真的需要覆盖一些配置,你可以在本地编辑.git/config
文件,或者如果它是一个可以全局设置的选项,请使用~/.gitconfig
或等效文件。
添加到已经很好的答案,并实际回答 OP 的问题:
我正在考虑创建一个硬链接(
ln .git/config configurations/git/config configuration/git
),但它似乎不是最好的方法。
有没有办法避免这种情况?
对硬链接进行版本控制时,Git 会正常工作吗?
不:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.