使用 Git 推送到某些存储库时是否可以排除特定文件(*.ai、*.psd)?

我的需求来自尝试使用 Git 进行版本控制和部署 赫罗库. 。如果我在部署中包含图形资源,则 slug 大小会比预期的要大。但是,我确实需要将所有项目文件包含在我的主文件中 github 存储库。

有帮助吗?

解决方案

解决实际问题的简单方法是创建一个 .slugignore 存储库根目录中的文件,其中列出了不应打包在 slug 中的文件。

其他提示

您可以维持其部署到Heroku的,其中包含没有这些文件的第二分支,但主仍合并。 (当然,你必须当您修改大师。爱和.PSD文件,你能制定出一个系统解决合并冲突)。

你问的具体的事情是不可能的,原因很简单,当你推,你从一个仓库转移的确切提交到另一个,并且不具有相同的树两次提交被定义不同的提交。

提示:最新的GIT中的版本有--porcelain一个git status选项,这将给容易解析像“M文件1”,“DU文件2”的信息(改性和未合并/分别由我们删除)。你可以写你的部署分支的git-merge包装它试图合并,并自动清理的预期冲突:

git checkout deploy
if ! git merge master; then
    git rm $(git status --porcelain | awk '/^DU/ {print $NF}')
fi

(我打印$NF代替$2的原因是,如果重命名的文件的,它会像“杜ORIGINAL_NAME - > NEW_NAME”,并将其放置在工作树副本将是NEW_NAME,不ORIGINAL_NAME)

当然,此脚本可以得到,如果你的情况更为复杂 - 你可以看看只有特定扩展名(它们添加到限制AWK模式),或者甚至捕捉整个输出一个Perl脚本,所以你可以很容易地做一些更看中逻辑...

有没有直接简单的方法来做到这一点。这当然是便于管理,但有很多的痛苦(GIT是不是为了做到这一点)。

这会更容易些可能,如果你问的Heroku提供了一种从deploy排除某些文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top