2012-09-02 8 views
85

git amgit apply 모두 패치를 적용하는 데 사용할 수 있습니다. 나는 그 차이를 보지 못한다. 지금은 차이점이 있습니다 : 은 자동으로 커밋되지만, git apply은 파일에만 닿기는하지만 커밋은 생성하지 않습니다. 그게 유일한 차이점입니까?git am과 git apply의 차이점은 무엇입니까?

+7

'am'은'Apply Mail'의 약자로 생각할 수 있습니다 ... –

답변

74

입력 및 출력 모두 다르다 (--index 또는 --cached이 사용되는 경우, 또는 인덱스)

  • git apply (예 git diff의 출력) 패치를 받아 작업 디렉토리에 적용된다.
  • git am은 전자 메일 메시지 (예 : git format-patch의 출력)로 포맷 된 커밋 사서함을 가져 와서 현재 분기에 적용합니다.

git am uses git apply behind the scenes하지만,의 (a Maildir 또는 mbox 및 분석 이메일 메시지를 읽고) 전 (커밋을 만드는) 후에 더 많은 작업을 수행합니다.

+5

참고 :'git apply'도'git format-patch' 출력을 허용하는 것으로 보입니다. –

+3

'git apply'도'git format-patch'의 출력을 위해 작동 할 것입니다. 그러나 변경 사항은 무대가되어 커밋되어야합니다 (따라서 적용된 인덱스에 다른 커밋 포인트가 생성됩니다). 'git am'을 사용하면 커밋 정보 (작성자와 함께)를 적용된 색인으로 옮길 수 있습니다. 'git apply'는 repo (bad)를 패치하기위한 것이고'git am'은 합법적 인 기능 변경을 받아서 repo (선호 접근법)에 포함시킬 수 있습니다. –

6

git am을 사용하면 패치를 적용하므로 git status을 사용하면 로컬 변경 사항이 표시되지 않습니다.

git apply

당신이, 당신은/수정 많은 변화를 추가 할 수 있습니다 신청 한 결과, 스스로 패치에서 만든 git statusgit diff 출력됩니다 변경 사항을 코드를 작성하는 것처럼 소스 파일의 변경을 할 수 있습니다 및 그것들을 하나의 새로운 패치로 함께 제출하십시오.

9

git applygit am 반면 (예 git diff부터) 직선 차이점을 가하는 것은 MBOX Maildir 형식 또는 형식 중 하나, 이메일과 패치 및 패치의 서열을인가하고 git format-patch의 "반대"이다. git am은 커밋 메시지를 추출하고 전자 메일 메시지의 세부 정보를 작성하여 커밋 할 수 있습니다.

관련 문제