我想知道是否可能在我的本地仓库中使用生产数据库凭据在主分支中使用配置文件,在开发分支中使用在配置文件中使用不同凭据和数据库。
我一直没有运气,我发现最接近的答案是使用git属性,但是只有在合并发生冲突的情况下,它才能保留配置文件。我想一直在每个分支上保留未修改的配置文件。有人知道我该怎么做到吗?或有关如何管理这些文件的任何建议?
Git与分支无关。它实际上是关于[[commits。分支(确切地说是分支名称)只是find提交的一种方式。这是commits的问题。
如果将问题形成为:两个不同的提交是否可以包含名称相同但内容不同的文件?
答案很明确:是的,可以。[您问了一个明显的后续问题:给出了两个不同的提交,其中文件F具有不同的内容,当我合并这些提交时,F的内容会发生什么?您会看到哪里问题开始出现。
在Git中,合并是关于合并工作
。因为每个提交代表文件的snapshot,所以Git在这里需要third提交。第三个提交是在[[both分支上的一些共享的通用提交。请记住,在Git中,提交通常位于同时有多个分支上。短语在分支上仅表示通过使用分支名称-分支的[[tip提交-并向后工作,我们可以进入所涉及的提交。因此,如果我们有不同的提交字符串: I--J <-- branch1
/
...--G--H
\
K--L <-- branch2
我们可以考虑合并工作
,它是从共享的公共提交从H
开始的,该文件保存所有文件的快照。我们将H
中的快照与J
中的快照进行比较。如果文件F
H
更改为J
,则为更改。接下来,我们将H
中的快照与L
中的快照进行比较。如果文件F在此处已更改,则为更改。 Git现在将合并更改。如果更改是“将系统配置为以某种方式运行”和“将系统配置为以其他方式运行”,则这些更改可能会发生冲突。它们是否冲突以及如何冲突取决于配置的工作方式。 Git只理解lines。如果提交H
中文件F的第47行在J
和
L
中都被更改,又在不同地中被更改,那就是冲突了。如果仅提交J
更改到第47行,Git认为从J
进行更改必须是可以的。我想一直在每个分支上保留未修改的配置文件。有人知道我该怎么做到吗?通常的答案是:甚至不要尝试。这些文件不应该依赖于[[分支,因为当您拥有此文件时:
...--G--H <-- master, dev
提交H
中的文件是相同的,无论是由于名称H
还是由于名称master
而使用提交dev
。两个分支名称都标识同一提交 H
。
untracked(也可能设置为[[ignored)。这意味着Git从不关注它们。当您从一个提交切换到另一个提交,或者从一个分支切换到另一个分支时,即使它们也意味着切换提交,它们也不会改变。
在不同的工作树]中执行基于凭据和数据库的工作。每个Git存储库都带有一个工作树,因此您只需使用同一基础存储库的两个不同克隆即可轻松获得两个不同的工作树。
如果您的Git至少为2.5(最好是至少为2.15,因为直到那时才修复的相当大的错误),您可以将一个Git存储库与git worktree add
一起使用,以向该存储库添加第二个工作树。
git checkout
或git switch
命令给出的分支name修改文件,请考虑使用签出后挂钩。您可以在此类钩子中编写所需的任何代码,并可以读取此处使用的分支的名称。这样做很痛苦,而且充满陷阱:只要您有足够的磁盘空间,单独的工作树方法就更好了。