【问题标题】:Source controlling extra files to an already created repository (e.g. binary files)将额外文件源控制到已创建的存储库(例如二进制文件)
【发布时间】:2015-09-08 15:32:15
【问题描述】:

对于提出这个看起来非常令人困惑的问题,我提前道歉。

不久前我创建了一个存储库,刚刚重新格式化了我的计算机,因此我正在尝试取回我的所有文件。但是,当我创建这个存储库 (https://github.com/F-Tahir/BMRCalculator) 时,我只对 java 项目的 src 文件夹中的文件进行源代码控制(这是正确的方法吗?)。

我想对整个 java 项目文件夹进行源代码控制(所以 bin 文件夹、我添加的额外图像文件夹等)。这是一个好方法还是应该只对 src 文件夹进行源代码控制?

如果是这样,我怎样才能添加这些额外的文件夹并仍然保留旧的提交历史?我可以通过创建一个新的存储库来做到这一点,但我不会有任何旧的提交。

谢谢

【问题讨论】:

    标签: java git


    【解决方案1】:

    将所有需要版本控制的文本文件放到您的版本控制中。这通常包括您的 src 目录、配置文件、pom.xml 文件(如果您使用 Maven)等。

    不是一个好主意将二进制文件放入源代码管理如果它们很大和/或经常更改并且绝对不要将生成的文件放在那里target。原因是版本控制类似于 git 版本文件,通过跟踪版本之间的差异,这对二进制文件不起作用。它们会使您的历史记录变得混乱,并经常导致庞大的存储库占用大量空间来存储二进制文件的历史记录。

    不过,版本控制中没有关于二进制文件的严格规定。有些人甚至support it。如果您的二进制文件小而稳定(例如 Web 项目中的图像),则只需包含它们就可以了。

    如何处理您的二进制文件取决于它们是什么。 jar 包有像 Nexus 这样的存储库。有用于 unix 软件包的存储库(例如 rpms)。如果它们是大文件,请将它们放在已备份的专用位置。

    最后一个选项(我承认也使用过一次或两次)是为你的二进制文件和limit the history 设置一个不同的存储库,这样它就不会占用太多空间,但你只是(有点)滥用 git 作为备份工具。

    您还可以查看一些相关问题:


    查看您的存储库后更新:

    • 通常我不会将 IDE 设置(Eclipse 生成的.settings.project.classpath)放到源代码管理中,因为它们经常更改。因为没有其他内容包含您案例中的项目信息,所以我建议改用 Maven。
    • bin/README.md 移动到您的根目录。
    • 删除bin 目录。它包含重复的图像和.class 文件。它们由您的 IDE 自动生成,因此它们不包含新信息且不经常更改。

    【讨论】:

    • 感谢您的回复。我更新了我的 git 存储库 - 你会建议我删除什么?链接在 OP 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多