如何仅使用Android Studio git插件GUI对齐git工作副本

时间:2019-04-04 01:51:24

标签: android-studio testing github intellij-idea version-control

使用git命令行完成各种目标有十多年的答案,但是这个问题是如何使用Android Studio 3.3.1的标准git插件,仅 GUI “修复”一个常见的“问题”。也许没有git命令行是“不可能的”。如果是这样,那就是答案:“不可能”,但是您将不得不怀疑VSC插件的作者。

场景

您想测试一些托管在github.com上的代码,并且只想使用Android Studio的GUI。系统会要求您进行测试,但不知道如何切换分支并与要测试的代码保持完全匹配。您对遥控器具有只读访问权限。

结帐/克隆

在Android Studio中,选择VCS > Checkout from Version Control > Git,然后粘贴使用网络浏览器时找到的URL。因此可能类似于https://github.com/someguy42/someproggy42。您按下测试按钮,它显示连接成功。然后,您点击克隆按钮。

您检查遥控器:VCS > Git > Remotes...如果您要的遥控器不在那里,请执行(plus sign) > (url of repository found in github.com)。您将此远程的名称指定为someguy42

然后您执行访存VCS > Git > Fetch。在Android Studio的右下角,单击,然后看到someguy42\mastersomeguy42\feature1someguy42\feature2。您在网络上注意到这两个功能都是从master分支出来的。

一切都很好。到目前为止。

测试两个分支

要求您同时测试这两个功能。

因此,从左击IDE右下角的列表中,右键单击someguy42\feature1 > Checkout As... > feature1

您完成了功能1上的工作。也许您添加了一条日志语句或其他内容,但是却不想保存。

现在是该功能2的时候了,因此您可以像以前一样重复该过程:从IDE右下角的列表中,右键单击someguy42\feature2 > Checkout As... > feature2

您注意到一些奇怪的事情。现在,您的IDE中具有 feature1和feature2的混合物!

您可以通过以下操作向自己证明这一点:转到Android app文件夹,右键单击并选择Git > Compare with Branch...,然后将其与远程someguy42\master进行比较。您希望仅在Feature2中看到文件更改,,但是Feature1和Feature2文件都在列表中

问题

要通过以下步骤(仅通过Android Studio GUI和VCS插件执行),使您的工作副本成为只有Feature2的文件的原始副本?

1 个答案:

答案 0 :(得分:0)

我不是Android Studio用户,但是我使用Intellij Ultimate,并且您遇到的行为不是预期的行为


如果我检出feature1,不做任何更改,然后检出feature2,则我的工作副本正好变成feature2feature1中的任何内容都没有feature2应该在那儿。那就是应该的方式。

但是,如果我在feature1时修改了一些文件,然后检出feature2(不首先提交所做的更改),则我的工作副本将成为feature2的混合体>以及我在feature1上所做的未提交的更改 –可能包含也可能不包含来自feature1本身的代码的更改。

给出的示例:如果feature1引入了新参数newParam1,并且出于测试目的, I 引入了这样的日志行:

private doSomething(String oldParam, String newParam1) { // feature1 change
    logger.debug("newParam1="+newParam1); // my own uncommited change
    //...

然后,不提交该行,我切换到feature2,它引入了一个新的但不同的newParam2,我将得出以下结论:

private doSomething(String oldParam, String newParam2) { // feature2 change
    logger.debug("newParam1="+newParam1); // my own uncommited change
    //...

应该是这样的。
如果那是您遇到的问题,那就没问题-只需回滚(Ctrl + Alt + Z)或搁置(Ctrl + Alt + H)您自己的未提交更改,然后再签出其他分支,以确保您的工作区是干净的。

如果上述不是您遇到的问题,则可能是错误。我将删除分支的本地副本,再次将其检出,如果再次发生相同的情况,请在YouTrack处提交错误。


PS:尽管feature2的两个分支都来自feature1,但master还是选择了feature2的更改。如果是这种情况,那么也可以在feature2上进行这些更改。您可以使用版本控制(Alt + 9)→日志检查feature2的提交日志(也许可以通过 Branch:image = Image.open(path_img) draw = ImageDraw.Draw(image) draw.ellipse((top, left, bottom, right), fill = 'white', outline ='white') 进行过滤)检查是否是这种情况。