在git中更改了跟踪文件并允许更改分支

时间:2016-11-22 07:03:56

标签: git

我有以下情况: 在上游(原始)服务器上,我有一个模板文件,显示程序的基本配置。 此文件必须保留在那里。

我分叉项目并希望更改模板文件,在我的遥控器上我有两个分支:master,devel。我希望更改两个文件但不提交它,因为我将来会发送合并请求,并且必须保留基本配置。

目前我尝试了3件事:

  1. 更改分支和提交时保持文件不变(低技术解决方案)。
  2. 使用:git update-index --assume-unchanged。这对我来说听起来像是最好的解决方案,问题在于我无法在不提交的情况下更改master和devel之间的分支(Git不会允许它)。
  3. 取消它。正如我所说,这不是真正的解决方案,因为它必须留在回购中。
  4. 任何可能对我有帮助的建议/最佳做法?

1 个答案:

答案 0 :(得分:0)

这是一个常见问题。您有一些配置文件或模板必须在回购中保持某种方式,但您希望能够在结帐时在本地更改它以进行测试或部署或其他任何方式。

最简单的解决方案是拥有两个文件。一个是存储库附带的标准配置/模板。这是签入的。另一个是覆盖文件。这将覆盖标准配置中的任何文件。这不会被签入,或者已经签入并留空,并添加到.gitignore

例如,这里有一个master.config文件已经签入,而local.config文件不是。

master.config
    some: thing
    database:
        type: mysql
        host: localhost
        user: test
        pass: test

local.config
    database:
        host: production.db
        user: production_user
        pass: s3kr3t

生成的配置将是两者的合并。

    some: thing
    database:
        type: mysql
        host: production.db
        user: production_user
        pass: s3kr3t

您必须编写代码才能进行合并。