Programing

'git format-patch'와 'git diff'의 차이점은 무엇입니까?

lottogame 2020. 9. 16. 08:22
반응형

'git format-patch'와 'git diff'의 차이점은 무엇입니까?


'git format-patch'와 'git diff'의 출력 사이에 차이가 없습니다. 그리고 'git diff'를 사용하여 패치를 생성 한 다음 git apply를 사용하여 적용 할 수 없습니까?

내 문제는 인덱스에 변경 사항이 추가되었지만 분명히 git format-patch는 커밋 만 허용하므로 diff 출력을 사용할 수 있다면이 명령을 사용하여 인덱스 변경 사항에 대한 패치를 생성 할 수 있습니다.

git diff --cached > index.patch

로 생성 된 패치 git format-patch에는 커밋에 대한 메타 정보 (커미터, 날짜, 커밋 메시지 등)도 포함되며 이진 데이터의 차이가 포함됩니다. 모든 것이 메일 형식으로 지정되어 쉽게 보낼 수 있습니다. 이를 수신 한 사람은 해당 커밋을 다시 만들 수 git am있으며 모든 메타 데이터는 그대로 유지됩니다. git apply간단한 diff의 수퍼 세트이므로 함께 적용 할 수도 있습니다 .

으로 생성 된 패치 git diff는 컨텍스트 (생각 diff -u) 와 함께 간단한 차이가 될 것 입니다. 와 함께 적용 할 수도 git apply있지만 메타 데이터는 다시 생성되지 않습니다 (존재하지 않기 때문에).

요약 git format-patch하면는 커밋을 전송하는 git diff데 유용하고 두 트리 간의 차이를 얻는 데 유용합니다.


매뉴얼에서 git-format-patch 는 이메일 제출에 적합한 패치를 준비하고 git-diff 는 변경 사항을 보여줍니다.

그것들은 서로 다른 두 가지이며 다른 목적을 가지고 있습니다. 그들은 단지 패치 형식을 출력합니다. 그러나 git-format-patch커밋에 대한 데이터 (날짜, 작성자, 커밋 메시지)를 추가하고이를 Unix 메일 메시지로 보내기에 적합한 형식으로 번들로 묶습니다 (파일 일 뿐이므로 다른 방법으로 전송하고 git-am).

또한 git-format-patch지정한 범위의 각 커밋에 대한 패치 파일을 생성합니다. 이러한 변경 사항은 git-am.

git-diff요청한 두 상태 간의 차이를 보여주고 패치 파일을 만드는 데 사용할 수 있습니다. 그러나 이것은 일반적인 패치 파일이며 패치를 적용하면 작업 디렉토리의 상태가 변경됩니다.

그리고 그렇습니다. 그런 식으로 인덱스 용 패치를 만들 수 있습니다.

참고 URL : https://stackoverflow.com/questions/4624127/what-is-the-difference-between-git-format-patch-and-git-diff

반응형