2010-03-02 98 views
3

我有两个存储库。我在开发机器上本地创建了一个项目,然后将其克隆到客户服务器上的测试环境中。我模拟客户服务器上的环境,但为此我需要在本地计算机上仅显示一些文件(以及其他一些文件中的某些行),但它们不能出现在远程环境中。本地保留提交克隆Git

我已经删除了这些文件,就在我把克隆了一个项目,并承诺在单个这些变化在远程仓库提交,但一推(又回到了原点库)后,我会忽略这个承诺上线我的本地存储库。我希望两个存储库都同步,除了这个单独的提交,所以项目 在两个略有不同的环境上运行。

我该怎么做?在推/拉后如何在不改变远程回购的情况下在本地忽略提交?

回答

2

简单的答案是不保留特定机器的版本控制什么,或者至少保持特定的机器在提交这实际上是正在使用的应用程序副本或文件的模板文件。

请参见:Is there a way to make TortoiseSVN temporarily ignore versioned files?

+0

好吧,也许我可以生活在没有跟踪的其他文件。更改后的文件...该死的,有一个在它的路径.htaccess文件,我将不得不完全untrack它,因为我不能把它分解。 是不是有什么办法可以做出一些改变“私有”,因此他们不会推送到另一个克隆?或者我将不得不填写功能请求? – craesh 2010-03-02 21:49:08

1

如何创建一个分支包含你的本地修改?

+0

保持一个独立的分支将意味着每一个推/拉后变基他们。我希望有一个更直接的解决方案。 – craesh 2010-03-02 21:37:10

0

通常情况下,对配置文件,您在回购保持模板配置文件,一个脚本一起能够产生与根据当前环境的正确值的“私人”(即未版本)配置文件/平台。

这样,你不必应付任何“条件”承诺。

又见SO问题“How to track config files of submodules in Git?

注:我知道你不一定谈论配置文件本身,但仍然可以给您提供有关如何管理类似文件的想法。

1

正如@奔詹姆斯回答说,如果能留下出该文件的Git。如果没有,根据您的开发模式,有两种解决方案。 (第2解决方案可以推广到定制提交对每个开发任何开发团队。)

  1. 如果你总是在本地机器上提交代码和客户端老抽,但从来没有提交或推:假设该更改已提交,请使用git revert恢复本地计算机上的提交。然后,在远程客户端上运行另一个到重做客户端更改。 不要再次从客户端推送。您可以继续使用git pull --rebase更新客户端,以避免重复合并的成长足迹承诺

  2. 如果您需要在本地机器上提交代码,你需要在远程客户端上提交代码:有一个简单的但恼人的方式来做到这一点。每次推/拉时,您都可以通过重投来保持您的地方。

    • git pull --rebase
    • 推前,使用git rebase -i <LOCAL_COMMIT>重新排序的本地提交的最新提交
    • 推与git push origin master~:master推一切,但当地(现最后)拉提交