我有一个.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文件进行版本控制。
答案 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个名为bar
和baz
的遥控器。
有关遥控器(URL,refspec等),本地分支(如上游跟踪分支等)的信息存储在.git/config
文件中。
如果您确实需要覆盖某些配置,则可以在本地编辑.git/config
文件,或者如果您可以选择全局使用~/.gitconfig
或等效文件。
答案 2 :(得分:0)
添加已经很好的答案,并实际回答OP的问题:
我正在考虑创建一个指向它的硬链接(
ln .git/config configurations/git/config configuration/git
),但它似乎并不是最好的方式。
有没有办法避免这种情况?
在对硬链接进行版本控制时Git会正常工作吗?
没有
答案 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
我只是在自述文件中添加这样的建议以进行回购。只需复制/粘贴许多行并对重要设置(如常规文件)进行版本控制就很容易了。它还会为所有回购用户转移更新。