Я согласен с Брайаном, что вы пытаетесь сделать, что магит не может сделать с помощью простого ключа? Вероятно, для него уже есть привязка клавиш. Если нет, я просто C-z
захожу в оболочку и запускаю команду, затем набираю fg
, чтобы вернуть emacs на передний план.
Изменить: мой поток выглядит следующим образом.
- Я начинаю рабочий день. Я набираю
git diff
в командной строке, чтобы посмотреть, есть ли у меня незафиксированные изменения с предыдущего дня (не забудьте включенные цвета!) Причина, по которой я делаю это в командной строке, а не в magit, заключается в том, что я еще не в emacs.
- Я либо открываю незафиксированные файлы в emacs
emacs file1 file2
, либо открываю некоторые файлы, над которыми собираюсь работать.
- Я кодирую до тех пор, пока не исправлю ошибку или не закончу новую функцию.
- В emacs я набираю
C-c i
, чтобы открыть окно статуса Magit.
- Я прокручиваю вниз до раздела «Изменения» и рядом с каждым файлом нажимаю вкладку, чтобы увидеть разницу каждого изменения. Я либо нажимаю
s
, чтобы применить эти изменения, либо u
, чтобы отменить эти изменения.
- При желании я могу просмотреть код различий и выполнить те же действия
s
и u
для поэтапного и нестадийного разделов кода. Полезно, если у меня где-то есть отладочный код и я хочу его убить.
- После того, как я убедился, что все мои изменения выглядят хорошо и подготовлены, я набираю
c
, чтобы открыть журнал magit-edit-log. Я набираю сообщение о коммите, а затем набираю C-c C-c
, чтобы зафиксировать его. Затем P
нажать его. Сделанный!
Обратите внимание, что это звучит как много шагов, но это быстро становится естественным, и весь процесс буквально занимает 30 секунд, чтобы я мог сравнить весь свой набор изменений, подготовить их и зафиксировать их с сообщением. Все время пребывания в Emacs. Это намного проще, чем переходить в командную строку.
Иногда при отправке через Magit возвращается ошибка, обычно вызванная новым кодом в удаленном репо, который я должен извлечь перед отправкой. В этом случае F
вытащить изменения, затем P
снова нажать. Честно говоря, почему-то вместо того, чтобы тянуть через магит, я вообще просто Ctrl-z
в этой ситуации выпадаю в шелл, git pull
и git push
.
Редактировать: кажется, я помню, что стандартные цвета 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")))
person
Mauvis Ledford
schedule
01.05.2011