【问题标题】:Git: keep specific files unmergedGit:保持特定文件未合并
【发布时间】:2012-08-29 00:35:11
【问题描述】:

是否可以一直保持某些文件未合并?

我想要的是:

如果有两个分支(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有这种可能性吗?

【问题讨论】:

  • 您问的是如何解决问题,而不是如何解决问题。你能退后一步,解释一下你为什么想要/需要这个吗?然后我们可以就如何做事提供更好的建议。
  • 您希望文件有进一步的变化吗?
  • 是的。我希望这个特定文件以及其他需要像往常一样合并的文件有进一步的变化

标签: git


【解决方案1】:

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

我可能是错的,但您似乎想阻止配置文件被合并。那正确吗?因为有更好的/其他方式来处理配置文件。

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

总结:

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

【讨论】:

  • 是的,你是对的。它是一个配置文件。我怎样才能让它们在主分支和开发分支中保持不同?
  • @EsenbekKydyruulu 阅读我发布的链接。它包含一些替代品。
  • 谢谢!它有很棒的想法。我认为它们不适用于我的情况,但在我看来,我可以使用模板而不是实际的配置文件并以某种方式对其进行管理。
【解决方案2】:

如果你真的需要让它们与主分支和开发分支不同,我推荐Ikkeanswer 中提到的第二个选项,以及版本 2 值文件(一个用于主分支,一个用于开发分支),加上一个模板文件。

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

【讨论】:

  • 这非常有用,但不幸的是在我的情况下不起作用。因为我的应用程序在不同的分支上运行,并且配置文件会不时更新。 'git checkout' 只执行一次,但之后会'pull's config file 很多次。
  • @EsenbekKydyruulu git pull 将触发结帐和过滤器触发器。
【解决方案3】:

在文件所在的目录下创建一个.gitignore文件,然后把文件名放进去!

然后运行推荐

git rm -cached path_to_setup.file

所以,它会在合并、拉取、推送等所有操作中忽略文件...

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

【讨论】:

  • 忽略该文件使其无法跟踪存储库。我需要被卡车运送。
【解决方案4】:

有点啰嗦,但在您的初始合并步骤中使用--no-commit,然后检查原始文件以确保它没有被覆盖,然后提交。

目前 git 邮件列表上还有一个“pre-merge hook”讨论,这也可能给你一些选择。 git list

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 2022-01-01
      • 2012-12-09
      相关资源
      最近更新 更多