cari

Rumah  >  Soal Jawab  >  teks badan

git - Merge 分支时,如何保持指定的文件不被 Merge?

就像SO上这个问题描述的场景: http://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-a-sp

有两个分支,每个分支使用不同的配置,例如:

config.txt (on release branch):
database = 10.9.8.7

config.txt (on develop branch):
database = 192.168.0.1

当需要把develop分支的功能合并到release分支时,不希望config文件被合并;
有以下几种解决方案:

  1. 使用merge strategy;创建一个merge driver,对指定的文件使用指定的merge strategy;
    缺点:文件无改动时,merge driver不会启动,还是会被合并;rebase不管用;
  2. 提交时,使用assume-unchanged;
    缺点:提交时需要时刻关注文件改动;
  3. 使用subtree(submodule)

不知道大家有没什么建议?

参考: http://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-a-sp

http://stackoverflow.com/questions/2250040/using-github-to-host-public-git-repositories-whilst-ensuring-that-sensitive-data#

http://blog.miniasp.com/post/2014/12/23/Git-Advanced-Assume-Unchanged-Skip-worktree.aspx

高洛峰高洛峰2796 hari yang lalu1001

membalas semua(1)saya akan balas

  • 过去多啦不再A梦

    过去多啦不再A梦2017-04-28 09:08:32

    Lebih mudah untuk mengekalkan fail konfigurasi untuk persekitaran yang berbeza jika ia diletakkan dalam fail yang berbeza

    //config.txt
    #默认生产环境
    database = 10.9.8.7
    
    //config.dev.txt
    #开发环境
    database = 192.168.0.1
    
    //config.test.txt
    #测试环境
    database = xxx
    

    Pertimbangan alam sekitar dibuat dalam kod (kaedah biasa termasuk IP, nama hos, pembolehubah persekitaran, dll.) dan konfigurasi berbeza dibaca secara berasingan

    Penyelesaian selanjutnya ialah mempunyai pusat konfigurasi khusus yang bertanggungjawab untuk mengeluarkan konfigurasi, dan peri pemastautin yang bertanggungjawab mencari pusat konfigurasi untuk menarik konfigurasi, konfigurasi cache dan bekerjasama dengan pusat untuk mengemas kini konfigurasi, dsb.

    Ringkasnya, saya secara peribadi merasakan bahawa mengekalkan konfigurasi persekitaran berbeza melalui cawangan berbeza akan mencapai separuh hasil dengan dua kali ganda hasil... Jika anda menambah persekitaran ujian, persekitaran pra-keluaran, dan mungkin juga persekitaran ujian unit, persekitaran kotak pasir, dsb., jika terdapat lebih daripada 3 konfigurasi berbeza, ia akan tetap Jika anda menggunakan penyelenggaraan cawangan, ia pada dasarnya akan runtuh... Jika anda mesti melakukannya, disyorkan untuk meniru bentuk phpunit.xml.dist, gitignore keluar config.txt, dan kemudian kekalkan config.txt.dist rasmi dalam kod, baca config.txt dahulu, dan kemudian baca config.txt.dist

    balas
    0
  • Batalbalas