커밋 조회
커밋 기록 조회하기
git log
로컬 브랜치의 최근 커밋 조회하기
git branch -v
커밋 메시지 수정
직전 커밋 메시지를 vi 편집기로 수정하기
git commit --amend
직전 커밋 메시지를 편집기 없이 바로 수정하기
git commit --amend -m [메시지]
커밋 되돌리고 삭제(reset)
특정 시점으로 커밋을 되돌리고, 시점 이후의 커밋 삭제하기 (웹툰 사이트 | 설명 사이트)
- 이미 원격 저장소에 push한 경우 사용하지 않는 것을 권장
- 로컬 저장소와 원격 저장소의 커밋 내역이 불일치됨
- 코드 공유를 하지 않는 환경에서 사용을 권장 (개인 프로젝트 등)
옵션 | git reset --soft | git reset --mixed | git reset --hard |
공통점 | 특정 커밋으로 HEAD를 이동 | ||
커밋 삭제 영역 | Repository | Repository Staging Area |
Repository Staging Area Working Directory |
용도 | 1. commit 취소 2. 파일을 수정해야할 때 (유지된 커밋과 diff로 비교) 3. 잘못된 커밋(메시지 등)을 수정할 때 ※ 스테이징 영역의 장점 사이트 |
1. commit + add 취소 2. 파일을 수정해야할 때 (특정 시점의 커밋과 diff로 비교) 3. 스테이징 파일을 재지정할 때 |
모든 영역을 되돌리고 싶을 때 |
최근 커밋으로 되돌리기
git reset --[옵션] HEAD^
이전의 n번째 커밋으로 되돌리기
git reset --[옵션] HEAD~n
특정 커밋으로 되돌리기
git reset --[옵션] [커밋해시]
되돌리되, 기존 작업을 스테이징 영역과 작업 디렉터리에 유지하기
git reset --soft [커밋해시]
되돌리되, 기존 작업을 작업 디렉터리에 유지하기
git reset --mixed [커밋해시]
git reset [커밋해시]
되돌리되, 기존 작업을 아예 유지하지 않기
git reset --hard [커밋해시]
커밋 되돌리고 유지(revert)
기존 커밋을 유지하며, 특정 커밋을 반대로 수행한 것을 새로운 커밋으로 생성하기
- 커밋을 반대로 수행이란?
- 생성한 것을 삭제하고, 반대로 삭제한 것을 생성함
- 이동된 파일을 다시 되돌림
- 병합을 원래대로 다시 하거나 취소
- 충돌을 고려해야 함 (예시 사이트)
- 스택처럼 뒤에서부터 하나씩 처리하는 것을 권장
- 커밋 기록을 유지하기 때문에 원격 저장소에 이미 push한 경우에도 사용 가능
- 다른 사람의 커밋을 취소할 수 있음
- 코드를 공유하는 협업 환경에서 작업을 되돌려야 할 때 유용
특정 커밋을 반대로 수행하기
git revert [커밋해시]
지정한 커밋의 범위를 반대로 수행하기
- 예시로 [ 2..5 ]는 3,4,5를 반대로 수행하고 2의 상태가 됨
git revert [되돌아갈 커밋해시]..[되돌리길 시작할 커밋해시]
특정 커밋을 반대로 수행하고, 커밋을 생성하지 않기
- 대신에 스테이징 영역에 저장되므로 따로 커밋해야 함
git revert --no-commit [커밋해시]
최근 커밋부터 n개의 커밋을 반대로 수행하고, 커밋을 생성하지 않기
- 대신에 스테이징 영역에 저장되므로 따로 커밋해야 함
git revert --no-commit HEAD~n..
충돌이 발생했을 때, 해결하면 계속 수행하기
git revert --continue
충돌이 발생했을 때, 무시하고 다음 커밋으로 넘어가기
git revert --skip
충돌이 발생했을 때, 중단하고 이전 상태 복원하기
git revert --abort
커밋 reset 취소
HEAD가 참조했던 모든 기록을 조회하기
git reflog
삭제된 시점으로 되돌아가기
- 정확히는 포인터가 다시 가리킴
git reset --hard [커밋해시]
다른 관련 명령어