我已经为客户端X创建了一个rails网站。我现在有一个客户端Y,他想要一个与客户端X完全相同但网站不同的网站。
我从clientXcode创建了一个git分支,并将其命名为clientYcode。然后,我对视图进行了所有更改,使其看起来与众不同,而拉拉则是一个不同皮肤的网站。
现在这里是我对git不了解的内容:我在视图,模型和控制器中对clientXcode进行了很多更改;现在我想将这些更改合并到clientYcode中,排除任何视图更改。由于视图,模型和控制器在rails中都有自己的文件夹,我希望能够做到这样的事情:
git merge client_x_code 'app/controllers/*', 'app/models/*'
问题1:使用git可以实现这样吗?如果是这样,我该怎么做?
问题2:分支是制作项目副本的最佳解决方案吗?
答案 0 :(得分:9)
我找到了解决问题的最简单方法......
git checkout clientYcode
git checkout clientXcode "app/controllers/"
git checkout clientXcode "app/models/"
这就是我想要的!
答案 1 :(得分:2)
最简单的操作方法是合并所有内容,但要保留的目录内容除外 您可以通过在该目录中添加合并驱动程序来完成此操作,作为How do I tell git to always select my local version for conflicted merges on a specific file?问题详细信息。
使用该合并驱动程序,在这种情况下,分支是一个很好的解决方案。
提取物:
我们在
.gitattributes
目录中定义了dirWithCopyMerge
文件(仅在合并将发生的分支中定义:myBranch
),我们有一个.git\config
文件现在包含合并驱动程序。
[merge "keepMine"]
name = always keep mine during merge
driver = keepMine.sh %O %A %B