Git,图像和Web开发最佳实践

时间:2015-03-30 13:59:51

标签: git web-deployment

我看了一下,但没有找到明确的答案。

目前,我喜欢开发新的网站功能(在Drupal中,但我认为这与其他Web开发项目相关),其中所有代码和支持图像都包含在专用于特定功能的分支中。这样我就可以在部署到生产环境之前轻松地将工作部署到登台环境以供审查。从各种来源我已经读过,似乎将图像放入存储库通常是不可取的,但我并没有真正看到一个不涉及大量额外工作的替代方案。基本上我目前的理念是前端所涉及的所有内容都会被提交,并且不涉及网站实际操作的PDF和其他二进制文件等资源都会保存在一个被忽略的目录中,我会根据需要使用rsync或FTP进行同步。

我是否缺少Git的一些功能可以解决这个问题,或者这只是使用Git的Web开发人员做的事情 - 接受图像是否在存储库中得到维护?

与此相关但有点不同的问题:当我提交图像但随后在将来的提交中将其删除时,它的大部分仍然是存储库历史中不可逆转的部分吗?

由于

1 个答案:

答案 0 :(得分:0)

所以Git是一个版本控制系统,可以对已更改的文件执行快照。

您绝对可以将图片放入存储库,并使用Gi​​t跟踪它(使用git add),以及PDF和其他二进制短片。然后,Git将跟踪是否对这些文件进行了任何更改。例如,您编辑/调整了图像大小。它必须重新发送整个图像,因为它被视为二进制文件,Git肯定会创建该文件的新快照,而不是引用以前的文件,因为它已经改变了。

提交代码更改与二进制/图像文件更改之间的差异是,您实际上可以看到代码中存在的差异,但二进制文件中没有差异。

但是,如果您不想要对图像文件进行版本跟踪,那么将它们添加到git忽略的目录中就行了,正如您所提到的那样,您可以将内容与您喜欢的任何实用程序保持同步。

但是,如果不清楚,我要注意,如果在提交之间没有对图像/二进制文件进行任何更改,则不会占用额外的空间。快照制作将简单地引用以前的文件。即:假设您添加了一个大小为1MB的jpg文件,然后在没有更改文件的情况下进行了4次提交,所有4次提交将引用您添加的初始文件,Git不会制作4个相同的副本。因此,我不明白为什么你不能使用Git来维护回购中的图像,除非你明确地不想这样做,原因是对图像所做的更改对你来说并不重要。< / p>

Link to Git Manual on how commits/snapshots work

当我提交图片但随后在将来的提交中将其删除时,它的大部分仍然是存储库历史中不可逆转的一部分吗?

是。如果您添加了一个图像,然后在以后的提交中将其删除,之前的提交根本不会受到影响,因此该图像仍将存在于存储库的历史记录中。它是不可逆转的,你无法进入并删除图像。 (Git的完整性,也在我链接的Git-Scm书中)。但是,您可以使用提供的命令删除该提交。简而言之,未来的提交不会影响历史提交,这是设计的。将来删除图像只会导致git在将来的提交中不再跟踪该图像。

我无法对最佳做法发表评论,因为我对网络开发方面的知识有限,并且没有听说过任何最佳做法。希望我能把Git视为一个scm。

,查看GitHub,如果您还没有,它是托管您的Git存储库的好地方,它们有免费的公共存储库和付费私有存储库。 BitBucket也是另一种选择!这样您就不必处理所有服务器端维护,即如果您被允许为您的工作执行此操作。