[Git] 커밋 히스토리 조회하기 & 되돌리기

git log

$ git log는 히스토리를 조회하는데 사용하는 명령어이다. 시간순으로 히스토리를 보여주며, 가장 최근의 커밋이 가장 먼저 나온다.

Untitled

순서대로 체크섬, 저자 이름, 저자 이메일, 커밋 날짜, 커밋 메세지를 보여준다.


git log 옵션

$ git log에는 유용한 옵션들이 여럿 존재한다. 아래의 표를 참고하자.

Untitled


조회 제한 조건

특정 시간이나 날짜로부터 원하는 조건의 커밋 기록을 확인할 수 있다.

  • --since, --after
  • --until, --before

    → “2.weeks”, “2020-05-24”, “1 years 2 day 3 minutes ago” 등의 조건으로 시간 설정이 가능하다.

  • --author
  • --grep

    → 저자를 지정하거나 커밋 메세지에서 키워드를 검색할 수도 있다.

  • --S

    → 커밋 변경 내용 안의 텍스트를 검색한다.

  • --committer

    → 입력한 커미터의 커밋만 보여준다.

  • --no-merges

    → merge commit을 제외한 결과만을 보여준다.


되돌리기

커밋을 하다보면 다양한 상황을 마주한다. 커밋 메세지를 빠트리거나, 파일을 빼먹거나, 수정이 덜 되었거나. 이런 경우를 위해 되돌리기가 존재한다.

$ git commit --amend는 바로 직전에 한 커밋을 덮어쓴다. 파일을 수정하고 stage한 후, 해당 명령어를 실행하는 것으로 사용할 수 있다. 이전의 커밋은 히스토리에도 남지 않는 ‘없던 일’이 된다.

커밋이 아닌 staging을 되돌리는 방법 또한 존재한다. $ git reset명령어를 사용하는데, $ git status명령어를 실행하면 도움말로 알려준다.

파일의 변경사항을 되돌리는 방법, 그러니까 최근 커밋 버전으로 되돌리는 방법 또한 존재한다. $ git checkout -- [file] 이 이에 해당한다.

중요한 사실은 커밋하지 않은 데이터는 복구할 수 없다는 것이다. 커밋과 저장을 생활화 하자.

참고자료