Подтвердить что ты не робот

Как я могу разбить один файл с помощью magit?

Скажем, я сделал несколько несвязанных изменений в несвязанных файлах в моем репозитории git. Я хочу просмотреть и зафиксировать каждый из файлов отдельно.

Я запускаю magit-status и получаю список измененных файлов. Но единственные команды magit diff, которые я могу найти (d и d), различают целые версии, а не отдельные файлы.

Мне нужен вывод git diff <filename>, но в буфере magit diff. Как я могу получить magit для разграничения только одного файла?

4b9b3361

Ответ 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.