Git、图像和web开发最佳实践



我环顾四周,但还没有找到确切的答案。

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

我是不是错过了Git的一些功能来解决这个问题,还是这正是使用Git的网络开发人员所做的——接受图像在存储库中维护?

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

感谢

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

您肯定可以将图像放入存储库,并使用Git跟踪它(使用git add),以及PDF和其他简短的二进制文件。Git将跟踪是否对这些文件进行了任何更改。例如,您编辑了图像/调整了图像大小。它将不得不重新提交整个图像,因为它被视为一个二进制文件,Git肯定会对该文件进行新的快照,而不是引用以前的文件,因为它已经更改了。

提交代码更改和使用二进制/图像文件进行更改之间的区别在于,您实际上可以看到代码中的差异,但不能看到二进制文件中的差异。

但是,如果您不希望对图像文件进行版本跟踪,可以将它们添加到git忽略的目录中,正如您所提到的,并且您可以使用您喜欢的任何实用程序保持同步。

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

链接到Git手册关于提交/快照如何工作

当我提交一个映像,但随后在将来的提交中删除它时,它的批量是否仍然是存储库历史中不可逆的一部分

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

我不能评论最佳实践,因为我对网络开发的知识有限,也没有听说过任何最佳实践。希望我已经阐明了Git作为一个scm。

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

最新更新