如何使用git管理一个代码库但拥有不同的环境

8

我目前在个人项目中使用git,遇到了一个问题:在两个不同的环境下使用同一份代码库。想知道如何在git中使用最干净的方式。

主要台式机

我大部分时间都在这台电脑上进行开发。我在这里有一个git存储库,它是从我的内部服务器上的一个空存储库克隆而来的。我在这里完成大部分工作,并将其推回内部服务器,以便将其用作主要的真相来源,并方便备份。

笔记本电脑

有时候我想在路上编码,所以我从内部服务器上克隆了一份,并创建了一个名为“laptop-branch”的新分支。不幸的是,某些目录MSVC++版本与主要台式机环境不同。我只修改了“laptop-branch”中的文件并在那里提交了它们。

现在我在度假时用笔记本电脑做了很多更改,想要将它们推送到源代码库,但不想将与目录和编译器版本相关的更改推回源代码库。

最好的方法是什么?

编辑: 在这种情况下,不是一个配置文件,而是VC++解决方案/项目文件被更改了。


+1,我期待一些有趣的回答。 - Josh K
我喜欢这个问题,但似乎更适合在stackoverflow上讨论。 - Unfundednut
@MrStatic:你可能是对的。 - Josh K
这个问题更适合在Stack Overflow上提问。它很快就会被迁移到那里。 - quack quixote
2个回答

5

我做的方式...

...不是通过 .gitignore 提交特定于环境的文件。

在 CodeIgniter 中,这意味着:

  • .htaccess
  • database.php
  • config.php

就是这样。

根据您的应用程序设置,这可能会产生不同的影响。通常我会有一个名为 config.example.phpexample.htaccess 的文件,我将它们提交到 git 上。然后如果我需要设置一个环境,我会修改这些文件并在此过程中重命名它们。因为它们被 git 忽略,所以你不必担心它。

如果你有很多特定于环境的代码,那么你需要重新思考你的应用程序布局。


我也为我正在开发的Web应用程序做了这件事,但在我处理部署方法时遇到了一些问题。最终,我在配置文件中管理我的环境(它是一个Django应用程序,因此您可以在配置文件中使用Python),但仍认为这是一种不太优雅的解决方案。 - staackuser2
这不是一个肮脏的黑客行为。这是管理多个环境的标准操作程序,几乎一直都是如此。本地环境、开发环境、预发布环境、生产环境。 - Josh K
很难测试,所以在我看来这是一个不太优雅的hack。 - staackuser2
@emostar:你说的“难以测试”是什么意思? - Josh K
也许我们在谈论不同的事情...我说的是在Django配置文件中使用Python,这使得根据你编写的Python代码进行环境测试变得很困难。 - staackuser2

0

我认为现在使用.gitignore解决方案已经太晚了。

我建议:

  • 在您的台式机上创建一个笔记本电脑分支
  • 从笔记本电脑上拉取更改到此分支
  • 检出配置文件,该文件应该没有从主分支更改
  • 验证它是否有效并进行微调
  • 提交更改
  • 检出主分支
  • 将其与笔记本电脑分支合并

嗯,有一个桌面分支不是更好吗?这样两台机器都可以与主分支同步。然后我从桌面上的桌面分支和笔记本电脑上的笔记本电脑分支工作,并从主分支合并/变基? - staackuser2
是的,那是更好的方法。但正如Josh所提到的,你真的想要完全从git中排除那些机器相关的文件。它们几乎没有任何价值,即使你需要它们,当你再次检出它们时,它们可能已经不再与你的IDE兼容了。这会带来更多的麻烦而不值得。 - Peter Tillemans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接