Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 仅合并文件的某些部分_Git_Git Merge_Gitignore - Fatal编程技术网

Git 仅合并文件的某些部分

Git 仅合并文件的某些部分,git,git-merge,gitignore,Git,Git Merge,Gitignore,我是Git(一般的版本控制)的新手。我相信我的问题有一个简单的解决办法,只是我还没有找到它 我对本地分支机构做了大部分更改,比如X master和X都有一个不同的配置文件(master有server的config,local有my localhost的config)。所以,当我将X合并到master中时,我必须将配置添加到git ignore中。这是可行的,但是当我需要更改X上的配置时,我应该怎么做?同样的配置应该适用于master?不,没有简单的解决方案。事实上,也没有切实可行的解决办法 三向

我是Git(一般的版本控制)的新手。我相信我的问题有一个简单的解决办法,只是我还没有找到它

我对本地分支机构做了大部分更改,比如X


master和X都有一个不同的配置文件(master有server的config,local有my localhost的config)。所以,当我将X合并到master中时,我必须将配置添加到git ignore中。这是可行的,但是当我需要更改X上的配置时,我应该怎么做?同样的配置应该适用于master?不,没有简单的解决方案。事实上,也没有切实可行的解决办法

三向合并的一个基本特性是,如果您将分支A合并到B,然后(立即)将B合并到A,则两个分支上的状态都相同。这在所有版本控制系统中都是正确的,但在Git中更为明显,因为Git将回顾历史,意识到B上没有变化,只需将B移动到与A相同的修订版本。再加上Git总是合并整个树这一事实,这意味着在以两种方式合并某些文件的同时,保持分支之间的文件不同需要每次手动处理该文件,并且永远不会忘记。不实际

具有源代码的版本控制存储库无论如何都不是环境特定文件的正确位置,因为源代码将用于需要不同配置的环境中

建议的步骤是使用版本化模板和未版本化的实际配置。另见



实际上,也有一些例外,比如子树策略,但没有一个与此用例相匹配

您可以使用SourceTree轻松完成此操作

SEI发布了关于程序员的相关文章,介绍了如何实现自己的要求,但您并不是真的想这样做——您应该在环境变量中输入用户或特定于环境的配置值。