git am과 git apply의 차이점은 무엇입니까?


134

모두 git amgit apply패치를 적용 할 수 있습니다. 나는 차이를 보지 못한다. 지금 차이점이 있습니다. git am자동 커밋하지만 git apply파일을 만지지 만 커밋을 만들지는 않습니다. 그게 유일한 차이점인가요?


11
am의 약어로 생각할 수 있습니다 Apply Mail...
Philip Oakley

답변:


144

입력과 출력 모두 다릅니다 :

  • git apply패치 (예 : 출력 소요 git diff)과 작업 디렉토리에 적용 (또는 인덱스, 경우 --index또는 --cached사용).
  • git am전자 메일 메시지 형식의 커밋 사서함 (예 :의 출력 git format-patch)을 현재 분기에 적용합니다.

git amgit apply비하인드를 사용 하지만 이전 ( Maildir또는 읽기 mbox및 이메일 메시지 구문 분석) 및 이후 (커밋 작성)에 더 많은 작업을 수행 합니다.


6
참고 : 출력 git apply도 허용하는 것 같습니다 git format-patch.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

7
git apply출력 git format-patch에서도 작동 하지만 변경 사항은 준비되지 않았으므로 커밋해야합니다 (따라서 적용된 인덱스에서 다른 커밋 지점을 만듭니다). 으로 git am당신이 수행 될 것이다는에 적용되는 인덱스로 (저자 등과 함께) 정보를 커밋합니다. git apply그런 다음 repo (나쁜)를 패치하기위한 git am것이며 합법적 인 기능 변경을 수행하여 repo에 포함 할 수 있습니다 (선호 된 접근 방식).
Prasoon Joshi

18

git apply(예를 들어, 직선에서 차이점을인가 인 git diff반면) git amMBOX Maildir 형식 또는 형식 중 하나, 이메일과 패치 및 패치의 적용 순서를위한 것이며의 "반대"이다 git format-patch. git am전자 메일 메시지에서 커밋 메시지 및 작성자 세부 정보를 추출하려고 시도하므로 커밋이 가능합니다.


9

으로 git am패치를 적용 당신이 사용하는 경우, 그래서 git status당신은 로컬 변경 사항이 표시되지 않습니다.

git apply이 결과, 직접 코드를 작성하는 것처럼 소스 파일의 변경을 할 수 있습니다 git status그리고 git diff당신은, 당신은 / 수정 많은 변화를 추가하고 하나의 새로운 패치로 함께 제출할 수 있습니다 적용한 패치에서 변경 한 내용을 출력됩니다 .

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