【问题标题】:Import into Android Studio with synchronized Git使用同步 Git 导入 Android Studio
【发布时间】:2014-01-19 05:34:45
【问题描述】:

我想利用 Android Studio 中的新导入来完成我非常大的 Eclipse 项目。主要原因是利用最初的 Gradle 创建并添加风味支持。

其中一项重大更改是文件结构,因此可以支持多种风格。我的 Eclipse 项目已经在 git 中,我不想在导入自动重新组织文件时丢失历史记录。有没有办法让 git 在导入期间识别文件“移动”,或者每个文件都必须手动更新?

【问题讨论】:

    标签: git import android-studio


    【解决方案1】:

    Git 没有跟踪您的文件。 Git 正在跟踪文件的内容。文件名只是元数据。因此,即使文件被移动或重命名,git 也应该能够跟踪您的内容。因此您的历史不会丢失。

    编辑

    为了根据您的评论为您提供一个示例,我创建了一个新的 git 存储库并添加了一个新文件。 Git状态显示如下:

    $ git status
    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    #   (use "git rm --cached <file>..." to unstage)
    #
    #   new file:   src/com/fun/HelloGitApp.java
    #
    

    提交新文件后,我确实运行了以下命令序列:

    $ mkdir -p src/main/java/com/fun
    $ mv src/com/fun/HelloGitApp.java src/main/java/com/fun/HelloGitApp.java
    $ rm -R com/
    $ git add --all
    

    Git 现在可以识别文件刚刚被重命名。您可以使用新的 git status 进行测试:

    $ git status
    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #   renamed:    com/fun/HelloGitApp.java -> main/java/com/fun/HelloGitApp.java
    #
    

    【讨论】:

    • 我是 git 新手(长期 svn),所以我认为它不会知道不是通过系统命令的移动。因此,如果我允许 git 使用 /src/com/fun/a.java 到 /src/main/java/com/fun/a.java 等更改来覆盖现有项目目录,那么 git 应该遵循
    • 我编辑了我的答案,以便根据您的评论为您提供一个示例。希望这会有所帮助
    • 我印象深刻的是它能够拿起那个mv。我会继续尝试导入,并按照您展示的方式尝试更新。
    • 好的,最终状态表明所有文件都是“新文件”,但它们也被“重命名”并显示了从旧位置到新位置的正确跟踪。现有文件以相同状态显示为“新文件”和“重命名”是否可以?我还可以从本地 .git 签出一个干净的副本,以便在推送之前确认修改正确吗?
    • 您添加了所有文件吗?例如使用 git add --all 。在您的存储库的根目录中?我不知道你是否知道这本很棒的免费 git 书 (gitscm.org/book)。我相信值得一读。
    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 2015-06-17
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多