使用Git只合并修改过的文件

使用Git只合并修改过的文件,git,Git,我有一个包含内容和源文件的存储库。开发人员应该只处理源文件。为了节省空间,开发人员不应该将内容文件(以GB为单位)克隆到本地repo。源文件不作为子模块出现在项目中,而是位于内容所在的同一位置 我的方法是这样的-我从Master创建了一个分支Source,然后从该分支删除了内容文件。我向开发人员发布了相同的克隆分支 当我将源分支的更改合并回主时,内容文件在主中被删除。如何限制它?如果不可能,那么有没有办法实现我的要求,让一个单独的分支/克隆只包含过滤过的文件,即其中的源文件?您根本不应该从源分支

我有一个包含内容和源文件的存储库。开发人员应该只处理源文件。为了节省空间,开发人员不应该将内容文件(以GB为单位)克隆到本地repo。源文件不作为子模块出现在项目中,而是位于内容所在的同一位置

我的方法是这样的-我从Master创建了一个分支Source,然后从该分支删除了内容文件。我向开发人员发布了相同的克隆分支


当我将分支的更改合并回时,内容文件在中被删除。如何限制它?如果不可能,那么有没有办法实现我的要求,让一个单独的分支/克隆只包含过滤过的文件,即其中的源文件?

您根本不应该从
分支中删除这些文件。如果
Source
Master
只是同一存储库中的分支,那么开发人员无论如何都会拥有内容;把它放在周围没有什么害处。

显而易见的答案是,您应该拥有独立的源和内容存储库。或者只保留内容。

您确定要将这些媒体/文档文件包含在您的repo中吗?是否要跟踪200GB媒体库的更改

如果您在源分支上时将其所有者目录引用放在.gitignore文件中,git将忽略这些文件,因此不会触摸/删除它们

用于合并两个分支,然后删除删除内容文件的提交

% git checkout Master
% git merge Source
% git revert <content-removal-commit-id>
%git签出主机
%git合并源
%git还原
或者,您也可以采用另一种方式,在提交之前删除内容删除 你合并成大师。它稍微复杂一点,但它可能会让你的主历史更清晰一点

% git checkout Source
% git branch SourceMerge
% git checkout SourceMerge
% git revert <content-removal-commit-id>
% git checkout Master
% git merge SourceMerge
%git签出源
%git分支源合并
%git签出源合并
%git还原
%git签出主机
%git合并源合并

内容文件的类型为flv、wmv、pdf和大小超过200GB的文档。在远程克隆过程中,这将给网络带来巨大的开销,因为这是跨位置开发团队的工作。我认为,对Git来说,扫描如此大量的文件以检测某些源文件中的更改也是一个性能瓶颈?所以你没有先检查这是否真的是个问题就开始行动了?嗯。1) 我的观点仍然是:如果源代码和主代码是同一存储库中的分支,那么它们无论如何都会被克隆到开发人员的机器上。2) 您计划多久克隆一次完整的存储库?3) Git首先使用文件修改次数;仅当这些内容不同时,才会检查内容。这里没有损失。4) 让您的远程团队克隆一次存储库,然后让那边的人克隆该存储库。非常简单。应用程序框架不允许将源文件与内容分离。我可以使用Git从同一个源使用文件模式(例如,源文件使用java、.groovy等,内容使用rest)创建单独的存储库吗?+1同意。在我自己的CMS项目中,我有一个包含代码的根项目、一个包含用于测试的小示例数据文件的测试项目和一个只包含配置和内容的内容项目。@kaychaks:获取应用程序框架的源代码并修复错误。如果无法获得源代码,请提交错误报告。@kaychaks:在同一文件夹或子文件夹中混合多个存储库通常是一个非常糟糕的主意。即使这是可以做到的,但这是自找麻烦。只有在他们没有被追踪的情况下,它才会忽视他们,而我认为他们没有。