Git:保持特定文件未合并

Git:保持特定文件未合并,git,Git,是否可以始终保持某些文件未合并 我想要的是: 如果有两个分支(A)和(B),并且它们具有相同的文件。比如说, 在分支(A)中,“设置”文件具有以下内容: this is setup in a branch A this is setup in a branch B 在分支(B)中,“设置”文件具有以下内容: this is setup in a branch A this is setup in a branch B 这些分支没有未提交的文件(不同分支中相同文件的不同提交) 目标是在合并

是否可以始终保持某些文件未合并

我想要的是:

如果有两个分支(A)和(B),并且它们具有相同的文件。比如说,

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

this is setup
in a branch A
this is setup
in a branch B
在分支(B)中,“设置”文件具有以下内容:

this is setup
in a branch A
this is setup
in a branch B
这些分支没有未提交的文件(不同分支中相同文件的不同提交)

目标是在合并这些分支后不接触这些文件。

中的解决方案对此不起作用。因为它们只有在合并时发生冲突时才起作用。(嗯,是的,如果我们合并这两个分支,并且只工作一次,那么会发生冲突。但是如果我们合并(a)到(B),然后(B)到(a),那么两个分支中的文件都会相同)


GIT有这种可能性吗?

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

我可能错了,但您似乎不想合并配置文件。是这样吗?因为有更好的/其他的方法来处理配置文件

佩奇解释了一些解决方案如何处理几种情况

总结:

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

如果您确实需要使它们与主分支和开发分支保持不同,我建议在中提到第二个选项,以及版本2值文件(一个用于主分支,一个用于开发分支),以及模板文件

拥有多个值文件意味着它们不会在分支之间出现合并问题(每个用户只修改与当前分支相关的值文件)。
模板文件用于帮助内容在签出时生成表示实际配置文件的私有文件(使用模板文件的正确语法和正确值,使用正确值文件,)


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

然后运行命令

git rm-缓存路径\u到\u setup.file

因此,它将忽略所有操作中的文件,如合并、拉、推


更多信息:

有点冗长,但在初始合并步骤中使用
--no commit
,然后签出原始文件以确保其未被覆盖,然后提交

目前git邮件列表上还有一个“预合并挂钩”讨论,这也可能给您一些选择


您还可以尝试查看git源代码,按照
.gitignore
(重用所有现有代码;-)的思路添加一个
.gitdonotmerge
文件(到同一目录),并更新合并策略选项,以解决这一中等常见的问题。抓挠你自己的开源之痒的乐趣

一个选项是
git update index——假设[file]
未更改,它将在转移和提交时忽略对文件的更改,但将其保留在存储库中。这是一个危险的命令,因为您需要记住,当您确实要提交更改时,您假定文件未更改。另外,我也不完全确定合并后的行为。

你问的是如何解决问题,而不是如何解决问题。你能退一步,解释一下你为什么想要/需要这个吗?然后我们就可以提供更好的建议。你希望文件中有进一步的更改吗?是的。我希望在这个特定文件和其他文件中有进一步的更改,这些文件通常需要合并。是的,你说得对。它是一个配置文件。我怎样才能使它们在主分支和开发分支上有所不同?@EsenbekKydyruulu阅读了我发布的链接。它包含了一些备选方案。谢谢!它有很多好主意。我认为它们在我的情况下不起作用,但在我看来,我可以使用模板而不是实际的配置文件,并以某种方式对其进行管理。忽略该文件会使其未被存储库跟踪。我需要用卡车。这很有用,但不幸的是在我的情况下不起作用。因为我的应用程序运行在不同的分支上,配置文件会不时更新。“git签出”只执行一次,但它会多次“拉取”配置文件。@EsenbekKydyruulu
git-pull
将触发签出和筛选器触发器。