【问题标题】:"selectively" merging with git“有选择地”与 git 合并
【发布时间】:2011-09-18 07:47:04
【问题描述】:

我想要一个 git 存储库,其中包含一个用于开发的分支和一个用于部署的分支。我有几个我的项目需要的配置和数据库文件。我希望部署分支没有我的项目的任何配置或数据库文件,但我想将这些文件的版本保留在我的开发分支中以便能够进行测试。在将开发分支合并到部署分支时,有什么方法可以让合并过程忽略这些文件?

【问题讨论】:

    标签: git


    【解决方案1】:

    您可以使用git merge --no-commit 并在提交合并之前删除配置文件。不过,可能还有更精简的可能性。

    但是,我建议将文件放在两个分支中,或者根本不包含它们。您使用什么语言和开发环境?它们是否提供了一些可能性来根据您尝试制作的构建类型指定不同的文件?

    【讨论】:

    • 我已经在几个不同的项目中遇到过这种情况,所以我没有考虑任何语言/构建系统。根据我是在测试还是部署来指定不同的文件当然可以;我只是认为让 git 处理这个可能更优雅。不过,也许这不是 git 的目的。
    【解决方案2】:

    来自专业 git 书:http://git-scm.com/book/en/Customizing-Git-Git-Attributes#Merge-Strategies

    在你的分支上

     echo 'myconfig.cfg merge=ours' >> .gitattributes
    

    您可以 gitignore (man gitignore) 或将 .gitattributes 保留在本地仅在您的分支中。

    【讨论】:

    • 谢谢,这就是我要找的。​​span>
    【解决方案3】:

    您可以进行伪合并。这实际上是尚未合并的提交的变基。因此,如果在某个时间点您之前合并并保留了两个分支的外观,您应该只合并上次合并后引入的提交的差异。

    这是描述这种“特殊合并”的答案:

    Always ignore a certain commit on merge in git

    【讨论】:

      猜你喜欢
      • 2016-08-12
      • 1970-01-01
      • 2013-07-07
      • 2015-10-26
      • 2021-04-20
      • 2017-04-21
      • 2018-07-23
      • 2010-10-01
      相关资源
      最近更新 更多