git - 从 Ant 迁移到 Intellij 中的 Grade 时如何保留 git 信息?
问题描述
我使用 Ant 作为构建工具在 Intellij 中开发了两个版本的 java lib。我正在为 VCS 使用 git。它有所有血腥的更新日志、版本标签、检查点等。
我最近决定为未来的工作切换到基于 Gradle 的构建。我的 IDE 保持不变 - Intellij。虽然我已经成功地将我的build.gradle
文件(新项目的)配置到一个阶段,我的旧源现在可以作为 Maven 依赖项发布
- 我对如何迁移 git 信息感到困惑。如何做到这一点?
在我的脑海中,我可以想到一些方法来做到这一点,尽管我非常不确定。如果他们是坏的/好的,一定要把他们击落/肯定他们。
- 只需将 .git 复制到我的新(gradle)项目的根目录中,然后将 Ant 特定/相关文件留在 repo 中。
- 在将源传输到 gradle 项目之前,删除对源之外的所有内容的跟踪,提交,然后传输源和 .git。
环境:
IDE:Intellij 2020.3
Gradle:7.2
操作系统:Windows 20H2
git:2.33.0.windows.1(假设所有存储库都是本地的)
Ant:找不到版本
常见问题
到目前为止你做了什么?
我在 Intellij 中创建了一个基于 Gradle 的新项目。然后我手动将源文件复制到新项目的源中。然后我修改了build.gradle
这个项目的文件,所以一切都在这个新头像中运行。
那么你的问题是什么?
我的旧基于 Ant 的投影在其根文件夹中有 .git。我的基于 Gradle 的新项目目前还没有。如果我git init
在新项目的根目录中,则基本相同源代码的早期 VCS 信息将丢失。另一方面,如果我一味地将.git转移到新文件夹,git在外部目录中唤醒时会不会感到惊讶?我该怎么办?
为什么你不只是克隆 repo 并对其进行修改,直到它成为一个 Gradle 项目,然后在 Intellij 中打开它?
这样做很麻烦,充满了配置问题,并且没有利用工具。当在 Intellij 中创建一个新的 Gradle 项目时,它会自动创建很多东西——Intellij 特定的配置、Gradle 特定的配置、其他一些底层的东西等。将非 Gradle 目录转换到类似于 Intellij Gradle 的程度项目对我来说似乎很重要,更不用说它可能会以休眠的方式被破坏。另一方面,仅传输源要容易得多。那么如何不丢失旧的 .git 是个问题。
解决方案
最好的做法是将.git
文件夹与任何源/测试文件/资源一起从旧项目文件夹移动到新文件夹。
在一个可以直接从 Ant 项目拉入 Gradle 项目的世界中,一个 repo。正如@BoristheSpider 所建议的那样,克隆就足够了。然而,正如我在评论中所建议的那样,克隆然后修改一个 Ant 项目直到它成为一个 Gradle 项目,既不容易也不实用,尤其是当 IDE 将为您创建一个新的 Gradle 项目时,或者当一个项目是无论如何都计划使用IDE。
在这种情况下,移动.git
(和相关来源)与克隆 Ant 存储库完全相同。只是这一次,IDE 无需修改即可为您做到这一点。
...另一方面,如果我盲目地将.git转移到新文件夹中,当它在外部目录中醒来时,它不会感到惊讶吗?
好吧,Git 可以处理它。尽管 Git 的典型使用围绕着记录项目的增量更改,并且很少废弃整个 repo 目录,但它没有任何区别。到 Git。即使目录中唯一剩下的就是.git
添加更多内容,也不会破坏 VCS 与旧文件的连续性。把它想象成开始一本新书来代替通常的章节。
推荐阅读
- c - 从命令行传递参数时 *argv[] 中的字符大小
- javascript - 如何将 PHP 数组传递给 Javascript 数组
- c# - C# wpf基于listitem选择绑定tabcontrol
- python - 在一个条件语句中检查多个变量
- heroku - 将前端和后端应用程序部署到 Heroku
- c# - 如何使用主键自动生成更新表中的行
- django-rest-framework - DRF - 在过滤器中,使用字段值而不是默认的 pk / id
- mongodb - Mongodb查询执行时间
- php - 如何使用 TAD 类 php 解决连接问题
- reactjs - How to fix this function to handle different error type of error catching