Как легко вишню сорвать с магита?

40

Я использую magit уже несколько месяцев, и мне это очень нравится. Но я все еще делаю это в терминале - сбор вишни.

Какой простой способ сделать это?

caisah
источник

Ответы:

31

Везде, где вы видите коммит в буфере Magit, вы можете выбрать его, перемещая точку там и затем печатая A A. Вы также можете выбрать несколько коммитов одновременно: просто выберите несколько коммитов, используя регион, а затем нажмите A A.

Tarsius
источник
45

Версия Magit <= 1.4.2

Это довольно просто:

  1. Введите обзор magit-status
  2. Проверьте (нажмите b b) ветку, в которую вы хотите вишню забрать.
  3. Сделайте диапазон журналов (нажмите l r l), чтобы найти коммиты, которые вы хотите выбрать. Здесь вы выбираете 2 ветви, которые хотите сравнить.
  4. Выделите коммит, который вы хотите выбрать, и нажмите, Aчтобы применить изменения, а также подготовить их к сообщению коммита. Если вы нажмете, aэто не внесет изменения, а только применит их.

Вам не нужно делать диапазон журнала для вишни. Всякий раз, когда вы видите журнал коммитов, вы можете нажать, Aчтобы выбрать его.

Версия Magit> = 2.1.0

После обновления magit до 2.1 рабочий процесс изменился. Для обоих методов сначала нужно запустить magit-status.

Метод A : Cherry Pick меняется по очереди из другой ветви

  1. Нажмите lи затем, oчтобы получить список других ветвей.
  2. Выберите ветку, из которой хотите выбрать вишню.
  3. Перейдите к нужному коммиту и нажмите, Aа затем Aснова.
  4. Строка состояния покажет вам, какой коммит вы выбрали

    например feature/ABC~4

    Нажмите, Enterчтобы применить изменения.

Метод B : Cherry Pick все изменения из другой ветви

  1. Нажмите, Aчтобы выбрать режим выбора вишни.
  2. Нажмите еще Aраз, чтобы применить и зафиксировать изменения. Нажмите, aчтобы только применить изменения.
  3. Выберите ветку, из которой можно выбрать изменения, и нажмите Enter.

Я лично предпочитаю метод А, так как вы можете лучше обрабатывать конфликты слияния.

CB0
источник
8

Я не использую вишневый сбор, но бью ?в magit-statusшоу y: Cherry. Это запускает команду magit-cherry, которая позволяет вам выбрать голову и восходящий поток. Похоже, это то, что вы хотите.

Вы можете напечатать, C-h r d m Magit RETчтобы прочитать руководство Magit. Вы можете использовать C-s cherryи повторное нажатие C-sдля поиска по руководству. Похоже, информация в разделе 23:

Одним из преимуществ gitявляется то, что он может сказать вам, какие коммиты были объединены вверх по течению, но не локально, и наоборот. Подкоманда Git для этого cherry(не путать с cherry-pick). Magit поддерживает это, вызывая magit-cherryкоторый привязан yпо умолчанию.

Затем Magit сначала попросит вас указать версию для восходящего потока (которая по умолчанию соответствует отслеживаемой в данный момент удаленной ветке, если таковая имеется) и ревизию заголовка (которая по умолчанию равна текущей ветке) для использования в сравнении. Затем вы увидите новый буфер, в котором все коммиты перечислены с указателем направления, их ревизией и первой строкой сообщения о коммите. Маркер направления либо +указывает на коммит, который присутствует в восходящем, но не в заголовке, или -указывает на коммит, присутствующий в заголовке, но не в восходящем.

Из этого списка вы можете использовать обычные привязки клавиш для выбора отдельных коммитов aвишни ( для выбора вишни без A фиксации и для того же самого плюс автоматический коммит). Буфер обновляется автоматически после каждого выбора вишни.

няня
источник
1
При обращении к руководству Magit вы можете сохранить нажатие клавиши, выполнив C-h iвместо C-h r d. Это приведет вас к верхнему уровню информации напрямую.
itsjeyd
1
@itsjeyd Nahh, C-h iперенесет вас к последнему информационному файлу, который вы открыли, поэтому, если я нажму C-h i m, я мог бы потенциально просмотреть меню глав в SICP вместо меню всего. Нажатие dпосле C-h iили C-h rгарантирует, что вы будете в Info-директории, когда до этого нажали m.
няня
Это хороший трюк, я не знал об этом! Кроме того, совершенно не по теме: информационная версия SICP ?! Где я могу получить копию? :)
itsjeyd
@itsjeyd Я держу это в своем Dropbox, я думаю, что получил это отсюда: github.com/webframp/sicp-info
няня
1
Благодарность! Я проверил MELPA, и оказалось, что из этого хранилища создается пакет. Так что установка Info-версии SICP так же проста, как и M-x package-install RET sicp RET:)
itsjeyd