Git:保持特定文件不合并

时间:2012-09-04 10:53:14

标签: git

是否可以一直保留一些文件?

我想要的是:

如果有两个分支(A)和(B),则它们具有相同的文件。例如,

在分支(A)中,文件“setup”具有以下内容:

this is setup
in a branch A

在分支(B)中,文件“setup”具有以下内容:

this is setup
in a branch B

这些分支没有未提交的文件(不同分支中相同文件的不同提交)。

目标是在合并这些分支后保持这些文件不被触及。

How to tell Git to always select my local versionPrevent merging a file from master with Git中的解决方案不起作用。因为它们仅在合并时发生冲突时起作用。 (好吧,如果我们合并这两个分支并且它可以工作一次就会发生冲突。但是如果我们合并(A)到(B),然后(B)到(A),那么文件变成相同的两个分支)

GIT是否有这种可能性?

5 个答案:

答案 0 :(得分:4)

不,git没有简单的方法可以做到这一点,因为git如何处理合并。

我可能错了,但似乎你想保持配置文件不被合并。是对的吗?因为有更好的/其他方式来处理配置文件。

This页面解释了如何处理多种情况的一些解决方案。

要点:

  • 如果您可以修改程序,请让其他人覆盖未跟踪的配置文件
  • 如果您无法修改程序,请不要跟踪配置文件本身,而是跟踪模板。

答案 1 :(得分:1)

如果你真的需要让它们与主分支和开发分支不同,我建议在Ikke' answer和版本2值文件(一个用于主,和一个用于开发分支),以及一个模板文件。

拥有多个值文件意味着他们不会在分支之间合并问题(每个用户只修改与当前分支相关的值文件)。
模板文件用于帮助内容 filter driver 在结帐时生成私有文件,该文件代表实际的配置文件(使用正确的语法,来自模板文件和正确的值,使用正确的值文件after the current branch

filter driver

答案 2 :(得分:1)

在文件所在的目录中创建一个.gitignore文件,然后将文件名放入其中!

然后运行推荐

  

git rm -cached path_to_setup.file

因此,它将忽略所有操作中的文件,如merge,pull,push,......

更多信息:https://help.github.com/articles/ignoring-files

答案 3 :(得分:1)

有点长,但是使用--no-commit进行初始合并步骤,然后签出原始文件以确保它没有被覆盖,然后提交。

目前git邮件列表上还有一个“预合并挂钩”,这也可能为您提供一些选择。 git list

你也可以尝试查看git源代码并在.gitdonotmerge的行中添加.gitignore文件(到同一目录)(重新使用所有现有代码;-)和更新合并策略选项,以便解决这个适度常见的麻烦。抓你自己的开源痒的乐趣!

答案 4 :(得分:0)

一个选项是git update-index --assume-unchanged [file],它将在暂存和提交时忽略对文件的更改,但会将其保留在存储库中。这是一个危险的命令,因为当您 想要提交更改时,您需要记住您已假设文件未更改。此外,我还不完全确定合并后的行为方式。