使用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\master
,someguy42\feature1
,someguy42\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的文件的原始副本?
答案 0 :(得分:0)
我不是Android Studio用户,但是我使用Intellij Ultimate,并且您遇到的行为不是预期的行为。
如果我检出feature1
,不做任何更改,然后检出feature2
,则我的工作副本正好变成feature2
- feature1
中的任何内容都没有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')
进行过滤)检查是否是这种情况。