【发布时间】:2009-11-27 06:07:21
【问题描述】:
我在这里阅读了一些 git 问题,但找不到这个问题的答案:
我有一个公共分支和一个私有分支,我希望允许某些文件分流。
这些是带有密码和我的本地自定义的配置文件。
我确实希望能够以两种方式合并分支:从私有到公共再返回,但我不想让这些特定文件自动合并。
有没有办法以这种方式设置 git?我很想找到一个自动化的解决方案 :) - 这样就可以像往常一样进行合并。
编辑:这是对我有用的解决方案(感谢 VonC 对 gitattribute 的建议)
对我来说唯一出乎意料的是“合并保护”仅在两个分支中的文件发生分歧后才开始工作,而不是在应用以下配置后立即开始
.gitattributes(如果你想分享这个,用 git 跟踪)或 .git/info/attributes:
file1 merge=keepmine
path/file2 merge=keepmine
keepmine 是命名的自定义合并管理器,它只是一个调用的无操作命令,而不是在下面设置的选定文件上的内部合并驱动程序
当从私有分支合并到公共分支时,我通常使用git merge --squash private。这样私人编辑就不会进入公共分支的 git 历史记录。
.git/config:
#public repository
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = <public repo git url>
#private repository
#has to set up with git init and populated with the initial commit to branch mybranch
[remote "private"]
push = +:
url = /path/to/local/private/repo
[merge "keepmine"]
name = dont_merge_selected_files
driver = echo %O %A %B
[branch "master"]
remote = origin
merge = refs/heads/master
#private branch settings
[branch "mybranch"]
remote = private
merge = refs/heads/mybranch
如果有改进的方法请评论
【问题讨论】: