Як просто створити виправлення з моєї останньої версії git?


186

Я шукаю магічну команду створення патчу з останнього зробленого комітету.

Мій робочий процес іноді виглядає приблизно так

vi some.txt
git add some.txt
git commit -m "some change"

і тепер я просто хочу писати

git create-patch-from-last-commit-to-file SOME-PATCH0001.patch

але що я повинен помістити туди замість create-patch-from-last-commit-to-file?



Відповіді:


297

В загальному,

git format-patch -n HEAD^

(ознайомтеся з довідкою щодо багатьох варіантів), хоча це дійсно для їх надсилання. Для єдиного вчинення просто

git show HEAD > some-patch0001.patch

дасть вам корисний пластир.


18
будьте обережні з "git show HEAD> some-patch0001.patch", якщо його називають кольоровим терміналом, він знімає також кольорові послідовності у файл.
hrach

12
Ви також можете використовувати git diff > change.patch. Ви також можете включити діапазон редагування, що дозволяє створювати виправлення для невідомих змін. Однак велика різниця полягає в тому, що вона не буде включати відмінності у двійкові файли . Дивіться відповідь на те, яка різниця між 'git format-patch' та 'git diff'? для більш детальної інформації.
Рангі Кін

4
@hrach не на Linux, це не так
Робін Грін,

4
Ні, тому що це не те, що говорить перший рядок. Або git format-patch -1чи git format-patch -n HEAD^повинен працювати.
Марно

4
Дякую, я не зрозумів, що це буквально літера 'n', я подумав, що це заповнювач (формат-патч має варіанти '-n' та '- <n>').
Етьєнн

60

Беручи з відповіді @Useless, ви також можете використовувати загальну форму без параметрів для останньої фіксації та помістити її у файл із:

git format-patch HEAD^ --stdout > patchfile.patch

Або, будучи більш чистим для користувачів Windows, коли потрібно уникнути допомоги, подвоївши їх:

git format-patch HEAD~1 --stdout > patchfile.patch

2
Працювали для мене - дякую. Якщо ви користуєтеся Windows та Git, вам доведеться уникнути моркви (я знаю, грізна): "git format-patch HEAD ^^ --stdout> patchfile.patch"
Стів Мідглі

3
Щоб уникнути проблеми Windows з необхідністю уникнути цієї карети (через що вона виглядає як інша дійсна команда git), ви можете скористатися альтернативою git format-patch HEAD~1. Я думаю, що це в кінцевому рахунку менш заплутано в Windows.
Майкл Берр

30

інший спосіб, якщо у вас є ідентифікатор фіксації цього конкретного коміксу, ви можете використовувати,

git format-patch -1 {commit-id}

9

Вам потрібна -pопція для git log:

git log -1 -p --pretty='%b'

Використовуйте цей, якщо ви не переймаєтесь електронною поштою з рядків / дати / теми на початку файлу.
Райан Х.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.