如何从我的旧日食复制品“解耦”我的新Android工作室repro?

时间:2014-12-23 18:29:10

标签: git

更新

我对此问题的意图是完成将我的eclipse项目迁移到Android Studio并保留所有文件历史记录。我什么时候开始使用eclipse项目的克隆,但遇到了以下问题。我重新开始使用eclipse repro的副本,而不是克隆,并设法得到我想要的(请参阅下面的答案)

原始问题:

我将我的eclipse项目迁移到android studio。为了保留git历史,我将现有的eclipse repo克隆到了temp空间/ tmp / git_rename(例如)

在克隆的复制品中,我做了以下事情:

  1. 删除了Android Studio中不需要的任何文件(例如项目设置)
  2. 将源和资源目录移动到android studio中的位置 (例如我将src的内容移动到app / src / main / java)
  3. 我通过创建一些新的分支来做到这一点。在我做的时候承诺并将它们合并回主人。

    我当时拥有的是一个git repo,其源文件位于迁移的android studio项目源文件的相同位置

    然后我将这个.git目录复制到我的android studio目录的根目录

    我认为这完成了我想要的大部分内容(我可以看到所有java和资源文件的历史记录)。

    问题在于,由于我做了一个克隆,所有旧的分支只是对旧日食回购的引用,如下所示。我真的希望这是一个“standlone”存储库,所有旧的分支,提交本地。我还有一个问题,我有一个本地主人和一个远程主人。然后我会将其推送到某个远程备份。

    我认为这应该相当容易,但我接近我想要的东西,我真的不想破坏任何东西。


    有人可以给我一些指导,告诉我如何从我所在的位置(如下所示)转到一个包含本地所有分支和一位主人的单一仓库吗?

    enter image description here

2 个答案:

答案 0 :(得分:1)

如果你想做的就是让你的repo停止跟踪它的遥控器,你可以使用git remote rm [remotename]删除对遥控器的引用。如果origin是您唯一的遥控器,则在新的git repo中执行git remote rm origin会删除对origin的引用。

您可以阅读有关使用和操作遥控器here

的更多信息

答案 1 :(得分:0)

我最后一次从头开始做了这件事。我将记录我所做的事情,希望它能帮助其他人找到一个好的方法将eclipse ADT项目迁移到Android Studio并维护所有git历史记录(这对我来说并不明显)。

这假设您已完成迁移向导并迁移了应用的Android Studio版本,但您现在也想要移除所有git历史记录。 如果你还没有那么做,那就相当紧张,你可以从找到的开发者页面上的说明开始here

完成迁移后,您将在Android Studio中获得源代码的副本,但没有git历史记录。这是我如何移动我的。

基本思想是创建一个.git目录,该目录具有所有现有历史记录,但结构与android studio使用的一样,然后将其复制到项目根目录。这是一个相当简单的过程,但我在这里写下了每一个血腥的细节。你可以跳过其中的一些步骤(比如制作新的分支),但这就是我所做的。

  1. 确保你已经完成了所有事情并指向你日食回购中的主人

  2. 将您现有的eclipse git repo复制(通过cp -rp, git clone)到临时区域。请注意,您正在复制整个仓库,所有文件,目录等,包括.git目录

  3. 转到临时区域并使用git确认一切都在那里,即没有待处理的更改

  4. 创建并切换到名为delete_things_not_needed_in_A_S

  5. 的分支
  6. 使用rm -r删除android studio中不存在的任何内容。对我来说,我留下了src,我的清单和.git目录(你可以选择性地复制我猜,而不是复制和删除)

  7. 使用git提交这些更改并将它们合并到master中,然后创建一个名为move_directories_to_match_as_structure的新分支。

  8. 现在进入临时区域并创建需要与Android Studio结构匹配的任何目录。例如在AS中,包根位于app / src / main / java vs eclipse中,它直接位于项目目录的根目录中。

  9. 接下来,使用mv,将您保存的目录保存到Android studio中将存在的位置。你应该得到的是你在eclipse repo中所拥有的目录的一小部分,但是与AS期望的目录相匹配。

  10. 删除所有"遗留下来"目录,例如原始src(您将其内容移动到另一个位置,但目录仍然存在)

  11. 做最后的检查,此时你应该只有包含你想要保留历史记录的文件和.git目录的目录,没有别的。

  12. 使用git,提交这些更改,将它们合并到master中,然后创建(并切换到)名为files_added_by_android_studio的最终新分支

  13. 使用cp -rp复制(这很重要) .git目录到你的android studio项目根目录。请注意,您对迁移的android studio项目所做的唯一更改是复制.git目录。

  14. 使用我在下面显示的内容创建或更新Android项目目录根目录和app子目录中的.gitignore文件。

  15. 在你的android studio项目的根目录中,使用git gui(或git status)确认只有一只手满了新文件

  16. 提交并合并为主

  17. 启动android studio并启用版本控制集成(在主菜单栏下的VCS下)

  18. 应该这样做。这听起来比实际更复杂。基本上你是在复制现有的.git文件夹,修改它以便它能够在android工作室中看到它们发生的变化而不是它们在eclipse中发生的情况,然后将修改后的.git文件夹复制到你的android工作室项目中。 / p>

    以下是我使用的两个.gitignore文件:

    在项目根目录中。

    .gradle
    /local.properties
    /.idea/workspace.xml
    /.idea/libraries
    .DS_Store
    /build
    
    在app文件夹中:

    /build