3

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

我想要的是:

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

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

this is setup
in a branch A

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

this is setup
in a branch B

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

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

如何告诉 Git 始终选择我的本地版本防止将来自 master 的文件与 Git 合并中的解决方案不适用于此。因为它们仅在合并它们时发生冲突时才起作用。(嗯,是的,如果我们合并这两个分支并且它只工作一次,就会发生冲突。但是如果我们将 (A) 合并到 (B),然后将 (B) 合并到 (A),那么文件在两个分支)

GIT有这种可能性吗?

4

5 回答 5

4

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

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

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

概括:

  • 如果您可以修改您的程序,让其他人覆盖您未跟踪的配置文件
  • 如果您无法修改程序,请不要跟踪配置文件本身,而是跟踪模板。
于 2012-09-04T11:03:07.983 回答
1

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

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

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

于 2012-09-05T16:25:16.327 回答
1

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

然后运行推荐

git rm -cached path_to_setup.file

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

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

于 2012-09-04T13:18:36.720 回答
1

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

拥有多个值文件意味着它们不会成为分支之间的合并问题(每个用户只修改与当前分支相关的值文件)。
模板文件用于帮助内容过滤器驱动程序在结帐时生成代表实际配置文件的私有文件(使用正确的语法,来自模板文件,以及正确的值,使用正确的值文件,在当前分支之后)

过滤器驱动程序

于 2012-09-04T12:19:54.987 回答
0

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

于 2014-08-18T13:41:30.000 回答