Git을 잘 써보자- 4. git log와 git reset

아래 내용은 Pluralsight의 Master Git, 누구나 이해할 수 있는 Git 입문, 생활코딩 지옥에서 온 Git의 내용을 토대로 정리한 내용입니다.

1. git log

  • git log :
    • git의 커밋 기록을 확인하는 명령어
    • 커밋해시ID를 확인할 수 있음

4-1

  • git log <비교할 브랜치 명 1>..<비교할 브랜치 명 2> : 브랜치간에 차이점 비교

  • git log -p <비교할 브랜치 명 1>..<비교할 브랜치 명 2> : 브랜치간에 차이점 비교 + 코드비교

  • git log --graph --decorate --oneline : 커밋 기록을 그래픽컬하고 간소하게 보여주는 옵션 적용

4-2

  • git log --branches --graph --decorate --oneline : 커밋 기록을 그래픽컬하고 간소하게 보여주면서 모든 브랜치

4-3

  • git log --grep 검색어 : git log에서 특정 단어를 검색하여 보여주는 옵션

  • git log --branches --not --remotes : 푸시 안된 로그 확인

2. git reset

2.1 git reset 기본적인 내용

  • git reset :
    • 특정 지점의 과거 커밋으로 이동, 이동 된 이후의 커밋은 삭제됨
    • 사용 상 주의 요망 : 과거 커밋으로 이동하면서 그 이후 커밋은 삭제되어 되돌릴수 없으므로 주의가 필요
    • 특히 Push 후에는 다른사람의 코드에 문제 일으킬 소지 있으므로 금지
  • 기본 사용법
    • 주로 사용하는 옵션은 3가지 : --mixed, --hard, --soft, 기본값은 --mixed
    • 커밋ID는 앞자리 일부만 사용가능
$ git reset 커밋ID

2.2 git reset –hard

  • --hard 옵션을 적용하면 해당 커밋ID의 상태로 Working Directory와 Index영역 모두 초기화된다.
  • ex:
    1. 프로젝트 디렉토리에 ‘text.txt’파일을 추가 커밋
    2. git reset --hard 이전커밋아이디 명령어를 실행한다.
    3. ‘text.txt’ 파일은 삭제되며 git status에서도 확인이 불가능하다.

2.2 git reset –mixed

  • --mixed 옵션을 적용하거나 옵션을 적용하지 않으면 해당 커밋ID의 상태로 Index영역은 초기화되고 Working Directory는 변경되지 않는다.
  • ex:
    1. 프로젝트 디렉토리에 ‘text.txt’파일을 추가 커밋
    2. git reset --mixed 이전커밋아이디 명령어를 실행한다.
    3. ‘text.txt’파일은 살아있으며, Index영역에는 추가되지 않은 상태다.

2.3 git reset –soft

  • --soft 옵션을 적용하면 해당 커밋ID의 상태로 Index영역과 Working Directory 모두 변경되지 않는다.
  • ex:
    1. 프로젝트 디렉토리에 ‘text.txt’파일을 추가 후 커밋
    2. 다시 ‘text2.txt’ 파일을 git add text2.txt
    3. git reset --soft 이전커밋아이디 명령어를 실행한다.
    4. ‘text.txt’, ‘text2.txt’ 파일 모두 git status를 확인 해보면 add된 상태를 확인할수 있다.