Git | Git의 기록 갱신 | git commit --amend


git commit –amend 명령어

git commit –amend 은 이전 커밋을 수정하는 경우에 유용한 명령입니다. 이 명령을 실행하면 전혀 새로운 스냅 샷을 커밋하는 것이 아니라 스테이지 된 변경 내용과 직전의 위탁의 결합이 이루어집니다. 또한 스냅 샷에 변경을 가하지 않고 단순히 이전 커밋 메시지를 편집하는 경우에도 유용합니다.

Git 튜토리얼 : git commit –amend

그러나 직전의 위탁의 수정은 그것을 덮어 쓰는 것이 아니라, 전혀 다른 커밋으로 바꿀 것을 의미합니다. Git은 그것이 위 그림에서 별표 (*)와 같이 새로운 커밋처럼 보입니다. 공개 저장소에 대한 작업을 할 경우이 사실을 기억해야합니다.

사용법

git commit --amend

스테이지되는 내용을 직전의 위탁과 결합하고 그 결과 생성 된 스냅 샷 직전의 위탁을 대체 명령입니다. 스테이지 영역에 아무것도없는 상태에서이 명령을 실행하면 스냅 샷을 다시 작성하지 않고 이전 커밋 메시지 편집을 할 수 있습니다.

보충 설명

개발 현장에서는 불완전한 커밋이 수행 될 수 일상적으로 발생합니다. 파일의 무대를 잊거나 커밋 메시지의 형식 지정을 잘못 할 경우가 종종 있습니다. –amend 플래그는 이러한 가벼운 실수를 수정하는 경우에 유용합니다.

공개 된 커밋의 수정은 금지

git reset 페이지에서 다른 개발자와 공유중인 위탁의 취소를해서는 안되는 이유를 설명했습니다. 수정도 마찬가지가 성립 공개 저장소에 푸시 된 커밋의 수정을해서는 안됩니다.

수정 된 커밋은 실제로 완전히 새로운 커밋이며 이전의 커밋은 프로젝트의 기록에서 삭제됩니다. 이것은 공개 된 커밋을 취소 한 경우와 유사한 문제를 일으 킵니다. 다른 개발자가 이미 작업의 기반으로 사용하는 커밋을 수정하면 그들의 작업의 기반이 손실 된 것 같습니다. 이것은 개발자에게 혼란을 가져, 그 때의 회복은 귀찮습니다.

사용 예

다음 예제에서는 Git 기반의 개발에있어서 일반적인 시나리오를 보여줍니다. 두 파일을 편집하여 하나의 스냅 샷으로 커밋 할 예정 이었지만 먼저 커밋 할 때 한쪽의 파일을 추가하는 것을 잊지합니다. 이 수정을 위해서는, 단순히 파일을 스테이지하고 –amend 플래그를 지정하고 커밋하면 되나요 :

# Edit hello.py and main.py
git add hello.py
git commit

# Realize you forgot to add the changes from main.py
git add main.py
git commit --amend --no-edit

이전 커밋 메시지를 표시하기 위해서는 편집기가 사용되며, 또한 –no-edit 플래그를 지정하면 커밋 메시지를 변경하지 않고 커밋 수정을 할 수 있습니다. 필요하다면 그것을 수정하고 평소와 같이 파일을 저장하고 닫습니다. 결과로 생성되는 커밋은 불완전한 커밋을 대체 hello.py 과 main.py 에 변경 내용을 하나의 스냅 샷으로 저지른 것처럼 보입니다.