Я согласен с Брайаном, что вы пытаетесь сделать, что магит не может сделать с помощью простого триггера?Вероятно, для него уже есть привязка ключей.Если не я просто C-z
, чтобы перейти в оболочку и запустить команду, введите fg
, чтобы вернуть emacs на передний план.
Редактировать: Мой поток выглядит следующим образом.
- Я начинаю день на работе.Я набираю
git diff
в командной строке, чтобы посмотреть, есть ли у меня какие-либо незафиксированные изменения за предыдущий день (не забудьте включенные цвета !). Причина, по которой я делаю это в командной строке в отличие от magit, заключается в том, чтопотому что я еще не в emacs. - Я либо открываю несвязанные файлы в emacs
emacs file1 file2
, либо открываю некоторые файлы, над которыми собираюсь работать. - Я кодирую доМы исправили ошибку или завершили новую функцию.
- В emacs я набираю
C-c i
, чтобы открыть окно статуса Magit. - Прокручиваю вниз до раздела «Изменения» и нажимаю рядом с каждым файлом.вкладка, чтобы увидеть различия каждого изменения.Я либо нажимаю
s
, чтобы выполнить эти изменения, либо u
, чтобы удалить эти изменения. - При желании я могу просматривать код diff и делать то же самое
s
и u
для этапов и нестабильных разделов.код.Полезно, если у меня где-нибудь есть какой-то отладочный код и я хочу его убить. - После того, как я подтвердил, что все мои изменения выглядят хорошо и готовятся, я набираю
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")))