Как выровнять рабочую копию git, используя только графический интерфейс Android Studio git - PullRequest
3 голосов
/ 04 апреля 2019

Существует множество давних ответов на использование командной строки git для достижения различных целей, но этот вопрос заключается в том, как использовать стандартный плагин git для Android Studio 3.3.1, Только GUI to "исправить "общую" проблему ".Может быть, это "невозможно" без командной строки git.Если это так, то это ответ: «невозможно», но вам придется задуматься об авторах плагина VSC.

Сценарий

Вы хотите протестировать некоторый код, размещенный на github.com, и использовать только графический интерфейс Android Studio.Вас просят проверить, но вы не знаете, как переключать ветки и точно соответствовать коду, который вы должны тестировать.У вас есть доступ только для чтения к пультам.

Оформление заказа / клонирование

В 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 вы нажимаете и видите someguy42\master, someguy42\feature1, someguy42\feature2.Вы замечаете в Интернете, что обе функции отошли от мастера.

Все хорошо.Пока что.

Тестирование двух ветвей

Вам предлагается протестировать обе функции.

Итак, из списка, который вы видите, щелкнув левой кнопкой мыши в правом нижнем углу IDE, выщелкните правой кнопкой мыши на someguy42\feature1 > Checkout As... > feature1.

Вы завершаете свою работу над функцией 1. Может быть, вы добавляете оператор ведения журнала или что-то, но ничего не хотите сохранить.

Теперь пришло время для функции 2, поэтому вы повторяете процесс, как и раньше: из списка в правом нижнем углу IDE, вы нажимаете правой кнопкой мыши на someguy42\feature2 > Checkout As... > feature2.

Вы замечаете что-то странное.Теперь у вас есть смесь Feature1 и Feature2 в вашей IDE!

Вы можете доказать это, перейдя в папку Android app, щелкните правой кнопкой мыши и выберите Git > Compare with Branch..., и вы сравнитес пультом someguy42\master.Вы ожидаете увидеть только файлы, измененные в feature2, , но файлы feature1 и feature2 находятся в списке .

Вопрос

Какие шаги выполняются исключительно черезГрафический интерфейс Android Studio и плагин VCS позволили бы сделать вашу рабочую копию гарантированной первичной копией только файлов из feature2?

1 Ответ

0 голосов
/ 11 апреля 2019

Я не пользователь 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) или Shelve (Ctrl + Alt + H) ваших собственных незафиксированных изменений перед проверкой других веток, чтобы убедиться, что ваше рабочее пространство чистое.

Если вышеупомянутое не , что вы испытываете, это может бытьг .Я бы удалил свои локальные копии веток, проверил их снова и, если то же самое повторилось, отправил сообщение об ошибке по адресу YouTrack .


PS: Это также можетбыть в том случае, если feature2 выбрал вишню изменения из feature1, несмотря на то, что обе ветви произошли от master.Если бы это было так, тогда было бы нормально, чтобы эти изменения были также на feature2.Вы можете просмотреть журнал фиксации для feature2, используя Контроль версий (Alt + 9) → Журнал (возможно, фильтрация по Ветвь: feature2) для проверкиесли это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...