Как я могу разбить один файл с помощью magit?
Скажем, я сделал несколько несвязанных изменений в несвязанных файлах в моем репозитории git. Я хочу просмотреть и зафиксировать каждый из файлов отдельно.
Я запускаю magit-status
и получаю список измененных файлов. Но единственные команды magit diff, которые я могу найти (d
и d
), различают целые версии, а не отдельные файлы.
Мне нужен вывод git diff <filename>
, но в буфере magit diff. Как я могу получить magit для разграничения только одного файла?
Ответы
Ответ 1
Magit позволяет вам "анализировать и передавать каждый из файлов отдельно" непосредственно из буфера magit-status
без необходимости использования каких-либо отдельных буферов diff.
Вы просто разворачиваете интересующие вас файлы (с TAB, который показывает вам diff для файла в точке); то вы можете выполнить бит, который вы хотите зафиксировать (либо весь файл, либо отдельные куски, либо даже отмеченную область) с s до стадии (или u до неустановленной). Повторите все изменения, связанные с этим фиксацией, и, как только все необходимое будет поставлено, нажмите c, чтобы начать фиксацию.
n.b. Если вы действительно хотите просмотреть diff для файла в отдельном буфере, вы можете использовать vc-diff
, привязанный к C-x v = в этом файловом буфере. (n.b. эта функциональность по умолчанию в Emacs, а не часть Magit).
(отредактируйте: ответ переписан с учетом комментария aap, который теперь кажется противоположным тому, что он имел в виду в то время.)
Ответ 2
Я рекомендую смотреть видео создателем magit.
Это 20 минут, и он показывает вам рабочий поток, как и предполагалось.
Кроме того, небольшой совет: вы можете использовать 1 2 3 для изменения
многословность текущего заголовка.
Еще один маленький совет: если вас не устраивает размер кусков,
вы можете создавать произвольные регионы - по праву - отмечая
области и нажмите s. Это волшебство.
Я не знал об этом варианте на некоторое время, я был на самом деле
отбрасывая консоль и делая git add -p
старомодным способом.
Ответ 3
Есть определенные преимущества, чтобы не идти против зерна при использовании инструментов, о чем свидетельствуют другие ответы.
С другой стороны, иногда вы просто хотите сообщить своему редактору, что делать, и чтобы люди в Интернете отвечали на ваши вопросы, а не говорили, что хотите сделать что-то еще.
magit предоставляет интерфейс меню для работы с текущим файлом через M-x magit-file-popup
. Ключи, которые вам нужно нажать здесь, - "дю". Это может быть слишком много нажатий клавиш для вас, если это так, вы можете вызвать magit-diff
прямо так:
(magit-diff "master" nil (list buffer-file-name))
Вам может потребоваться определить вашу собственную функцию и привязку клавиш для этого.
magit-diff
имеет преимущества перед vc-diff
, потому что если позволяет перейти к местоположению diff.