仅使用Git合并修改的文件

时间:2009-05-11 12:48:50

标签: git

我有一个包含Content& amp;的存储库。源文件。开发人员应该只对源文件有效。为节省空间,开发人员不应将内容文件(以GB为单位)克隆到其本地存储库。源文件不作为子模块存在于项目中,而是位于内容所在的相同位置。

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

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

您根本不应该从Source分支中删除文件。如果SourceMaster只是同一个存储库中的分支,那么开发人员无论如何都会拥有内容;让它躺在身边是没有害处的。

答案 2 :(得分:1)

使用git-merge合并两个分支,然后git-revert删除删除内容文件的提交。

% git checkout Master
% git merge Source
% git revert <content-removal-commit-id>

或者你可以反过来做,然后删除内容删除提交 你合并成大师。它有点复杂,但它可能会使你的大师历史更清洁。

% git checkout Source
% git branch SourceMerge
% git checkout SourceMerge
% git revert <content-removal-commit-id>
% git checkout Master
% git merge SourceMerge

答案 3 :(得分:0)

您确定要在回购邮件中包含这些媒体/ doc文件吗?是否要跟踪200GB媒体库的更改?

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

http://git-scm.com/docs/gitignore