Как использовать Magit еще эффективнее? - PullRequest
8 голосов
/ 15 апреля 2011

После нескольких часов пробного использования Git с использованием shell я переключился на magit

Это довольно аккуратно и эффективно: мне больше не нужно набирать "git", чтобы больше вызывать команду git!

Но я все же нашел один недостаток, сравнивающий командную строку оболочки

Каждый раз, когда я набирал : для вызова команды git, вывод выводился в другом окне. Мне пришлось набрать C-x o , чтобы переключиться обратно, затем снова ввести команду git.

Есть ли лучший способ продолжать печатать и смотреть на выходе одновременно, кроме режима оболочки в emacs?

Должен ли я перевязать вывод в каком-либо другом режиме? который из? или более элегантное решение?

Большое спасибо

Ответы [ 3 ]

4 голосов
/ 01 мая 2011

Я согласен с Брайаном, что вы пытаетесь сделать, что магит не может сделать с помощью простого триггера?Вероятно, для него уже есть привязка ключей.Если не я просто C-z, чтобы перейти в оболочку и запустить команду, введите fg, чтобы вернуть emacs на передний план.

Редактировать: Мой поток выглядит следующим образом.

  1. Я начинаю день на работе.Я набираю git diff в командной строке, чтобы посмотреть, есть ли у меня какие-либо незафиксированные изменения за предыдущий день (не забудьте включенные цвета !). Причина, по которой я делаю это в командной строке в отличие от magit, заключается в том, чтопотому что я еще не в emacs.
  2. Я либо открываю несвязанные файлы в emacs emacs file1 file2, либо открываю некоторые файлы, над которыми собираюсь работать.
  3. Я кодирую доМы исправили ошибку или завершили новую функцию.
  4. В emacs я набираю C-c i, чтобы открыть окно статуса Magit.
  5. Прокручиваю вниз до раздела «Изменения» и нажимаю рядом с каждым файлом.вкладка, чтобы увидеть различия каждого изменения.Я либо нажимаю s, чтобы выполнить эти изменения, либо u, чтобы удалить эти изменения.
  6. При желании я могу просматривать код diff и делать то же самое s и u для этапов и нестабильных разделов.код.Полезно, если у меня где-нибудь есть какой-то отладочный код и я хочу его убить.
  7. После того, как я подтвердил, что все мои изменения выглядят хорошо и готовятся, я набираю c, чтобы открыть журнал magit-edit-log.Я набираю сообщение о коммите и затем набираю C-c C-c, чтобы его зафиксировать.Затем P, чтобы подтолкнуть его.Готово!

Обратите внимание, что это звучит как много шагов, но становится быстро естественным, и весь процесс буквально занимает 30 секунд, чтобы я смог разобрать весь свой набор изменений, подготовить их и зафиксировать их с помощьюсообщение.Все время пребывания в Emacs.Гораздо проще, чем просто перейти в командную строку.

Иногда, когда я выполняю push через Magit, возвращается ошибка, обычно вызванная новым кодом в удаленном репо, который я должен вытянуть, прежде чем нажать.В этом случае F для изменения изменений, затем P для повторного нажатия.Честно говоря, по некоторым причинам, вместо того, чтобы тянуть через magit, я обычно просто Ctrl-z в этой ситуации, падаю в оболочку, git pull и git push.

Редактировать: я думаю, что я помню diff по умолчанию Magitцвета довольно зверские.Я использую следующее в моем .emacs, я уверен, что украл откуда-то:

;; change magit diff colors                                                                                                                                                                                 
(eval-after-load 'magit                                                                                                                                                                                     
  '(progn                                                                                                                                                                                                   
     (set-face-foreground 'magit-diff-add "green3")                                                                                                                                                         
     (set-face-foreground 'magit-diff-del "red3")                                                                                                                                                           
     (when (not window-system)                                                                                                                                                                              
       (set-face-background 'magit-item-highlight "black"))))                                                                                                                                               

(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG$" . diff-mode))                                                                                                                                             
(eval-after-load 'diff-mode                                                                                                                                                                                 
  '(progn                                                                                                                                                                                                   
     (set-face-foreground 'diff-added "green4")                                                                                                                                                             
     (set-face-foreground 'diff-removed "red3")))
2 голосов
/ 15 апреля 2011

Я обычно использую встроенные команды Magit для большей части своей работы, когда я использую Magit, и просто использую обычный терминал, когда мне нужно делать то, что я не могу сделать из встроенных команд Magit.Magit имеет встроенные команды для почти всего моего повседневного использования;что вы регулярно используете, что Magit не поставляет, и вы все равно не будете делать это в полноценном терминале?

0 голосов
/ 26 ноября 2012

Совет по magit-run* решает эту проблему. Может нарушить другие звонки на magit-run*, я не проверял это дальше ...

(defadvice magit-run* (around stay-in-magit activate)
  (flet ((pop-to-buffer (buf &optional act rec) (display-buffer buf act)))
    ad-do-it))
...