Проект обновления для Android Studio: Merge vs Rebase vs Branch Default

Извините, если это кажется излишним, поскольку я знаю, что есть много вопросов относительно Merge vs Rebase, но, похоже, не существует такого броска в "Default Default".

Вам дается случай, когда несколько человек работают над чем-то (например, Android-приложение в Android Studio) одновременно. Каков наилучший вариант для обновления проекта/притяжения, если кто-то подталкивает к мастер-ветке, и вы хотите задействовать новый мастер, чтобы он не перезаписывал работу, над которой вы все еще работаете, и еще не совершил и нажимал на мастер? Android Studio перечисляет "Merge" "Rebase" и "Branch Default" при нажатии "Обновить проект". Из того, что это звучит, я хотел бы сделать "Rebase" (затем "Merge"?), Но я не совсем уверен.

Ответы

Ответ 1

припрятать

Ключевым моментом здесь является то, что вы получили незафиксированную работу, которую хотите сохранить. Прежде чем пытаться объединить что-либо, вы должны сохранить ваши изменения, чтобы сохранить незафиксированные изменения и очистить рабочий каталог.

Запустите git stash чтобы сохранить ваши изменения. После этого вы сможете получить изменения без каких-либо проблем.

После успешного извлечения вы можете git stash apply для повторного применения изменений, которые вы сделали до извлечения.

Слияние и перебазирование

Хранение ваших изменений работает, только если у вас есть только незафиксированные изменения. Если в какой-то момент вы совершили, но не подтолкнули, вам нужно будет либо сделать ребаз или слить.

fooobar.com/questions/106/... содержит отличную информацию о различиях.

В общем, слияние проще, но некоторые считают, что оно "загрязняет" историю git коммитами слияния.

Перебазирование требует дополнительной работы, но поскольку у вас нет коммита слияния, оно по существу сделает слияние невидимым.

Опять же, в вашем случае вам не нужно объединять или перебазировать. Просто спрятать, потянуть, затем применить шкатулку, и все должно быть хорошо.

Ответ 2

enter image description here

Согласно заявлению IntelliJ IDEA documnetatition:

Тип обновления

  • Слияние: выберите этот вариант, чтобы применить стратегию слияния. Результат идентичен результату запуска git fetch ; git merge или git pull --no-rebase.
  • Rebase: выберите эту опцию, чтобы применить стратегию ребазирования. Результат идентичен результату запуска git fetch ; git rebase или git pull --rebase.
  • По умолчанию для ветки: выберите этот параметр, чтобы применить команду по умолчанию для ветки. Команда по умолчанию указана в разделе branch.<name> файла конфигурации .git/config.

Очистить рабочее дерево перед обновлением

В этой области укажите метод сохранения изменений при очистке рабочего дерева перед обновлением. Изменения будут восстановлены после завершения обновления. Доступны следующие варианты:

  • Использование Stash: выберите этот вариант, чтобы сохранить изменения в Git заначка, так что вы можете применять патчи с затащенным изменением даже снаружи IntelliJ IDEA, потому что они создаются самим Git. Использование
  • Полка: выберите этот вариант, чтобы сохранить изменения на полке. Стеллажи - это внутренняя операция IntelliJ IDEA, сгенерированные патчи из отложенных изменений обычно применяются (без полки) внутри IntelliJ IDEA. Применение отложенных изменений за пределами IntelliJ IDEA также возможно но требует дополнительных шагов.

Ответ 3

Я не мог найти ответ на этот вопрос (т.е. рабочий поток) в любом из документов Google... поэтому здесь практически весь опыт работы с Android Studio и Git полностью из пользовательского интерфейса.

(Я рвусь при мысли о переключении между командной строкой и IDE - это означает, что IDE не хватает!)

  • Смените свои изменения с помощью: Щелкните правой кнопкой мыши Project → Git → Repository → Stash Changes. Дайте ему имя.
  • Извлеките обновления, которые сделал ваш коллега: Right Click Project → Git → Repository → Pull
  • Смените изменения вашего кода с помощью: Щелкните правой кнопкой мыши Project → Git → Репозиторий → UnStash Changes → Apply Stash
  • Затем вы увидите пользовательский интерфейс "Файлы, объединенные с конфликтами". Здесь вы выбираете файл и выборочно объединяетесь.

Внимание

Пользовательский интерфейс слияния слияния "Слияние версий" TERRIBLE. Как только вы попробуете, вы поймете, что я имею в виду. Удачи, пытаясь получить "Синхронизировать прокрутку", чтобы на самом деле работать. Я искренне надеюсь, что этот интерфейс будет рассмотрен в течение первых нескольких недель 2015 года.

Ответ 4

Согласно документации:

Слияние: выберите этот параметр, чтобы выполнить слияние во время обновления. Это эквивалентно запуску
git fetch, а затем git merge или git pull --no-rebase.

Rebase: выберите этот параметр, чтобы выполнить rebase во время обновления. Это эквивалентно выполнению
git fetch, а затем git rebase, или 'git pull --rebase (все локальные коммиты будут помещены поверх обновленного верхнего потока).

По умолчанию для веток: выберите этот вариант, если вы хотите применять разные стратегии обновления для разных веток. Вы можете указать тип обновления по умолчанию для каждой ветки в разделе branch.<name> файла конфигурации .git/config.

Слияние с Rebase

Подробнее здесь

Ответ 5

Обновите проект Git с помощью терминала Android Studio

  1. мерзавец добавить.
  2. git commit -m "что угодно"
  3. мастер происхождения git push

Это то, что я хотел найти ответ из вашего поста. Так вот почему я пишу этот ответ.