최신 git commit에서 간단히 패치를 작성하려면 어떻게해야합니까?


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'의 차이점은 무엇입니까?에 대한 답변을 참조하십시오 . 자세한 내용은.
Rangi Keen

4
@hrach는 리눅스에서 그렇지 않습니다
Robin Green

4
아니요, 첫 번째 줄이 아니기 때문입니다. 하나 git format-patch -1또는 git format-patch -n HEAD^작동합니다.
쓸모없는

4
고마워, 나는 그것이 문자 'n'이라는 것을 이해하지 못했고, 그것이 자리 표시 자라고 생각했습니다 (format-patch에는 '-n'및 '-<n>'옵션이 모두 있습니다).
Étienne

60

@ 쓸모없는 답변에서 가져 와서 마지막 커밋에 대한 매개 변수없이 일반 양식을 사용하여 다음을 사용하여 파일에 넣을 수 있습니다.

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

또는 캐럿을 두 배로 늘려서 탈출해야 할 때 Windows 사용자를 위해 더 깨끗해집니다.

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

2
나를 위해 일했습니다-감사합니다. 당신은 Windows 및 힘내를 사용하는 일이 있다면, 당신은 당근 (내가 가증스러운 알고) 탈출해야 "자식 형식 - 패치 HEAD를 ^^ --stdout> patchfile.patch"
스티브 Midgley

3
해당 캐럿을 이스케이프 처리 해야하는 Windows 문제 (다른 유효한 git 명령처럼 보이게 함)를 피하기 위해의 대안을 사용할 수 있습니다 git format-patch HEAD~1. 나는 그것이 Windows에서 덜 혼란스럽게 생각합니다.
Michael Burr

30

다른 방법으로, 해당 커밋의 커밋 ID가 있으면 사용할 수 있습니다.

git format-patch -1 {commit-id}

9

-pgit log 옵션 이 필요합니다 .

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

파일 시작 부분의 전자 메일 보낸 사람 / 날짜 / 제목 줄이 마음에 들지 않으면이 옵션을 사용하십시오.
Ryan H.

5
git format-patch -1

나를 위해 일을 해요.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.