상세 컨텐츠

본문 제목

Pro Git (2) - 히스토리 조회, 되돌리기, alias

Programming/Git

by 쌩우 2019. 10. 14. 18:22

본문

커밋 히스토리 조회

저장소에서 몇 번의 커밋을 하였는지, 언제 하였는지 궁금할 수 있다.
명령어는 git log이다.
특별한 argument 없이 실행하면 저장소의 커밋 히스토리를 시간순으로 보여준다.
가장 최근의 커밋이 가장 먼저 나온다.
원하는 히스토리를 검색할 수 있게 다양한 옵션을 지원한다.

  1. -p
    : 각 커밋의 diff 결과를 보여준다. 다른 유용한 옵션은 -2가 있다. 이는 최근 두 개 결과만 보여준다.
    git log -p -2 와 같은 명령을 실행하면 최근 두개의 commit에 대한 diff 결과를 보여줄 것이다.

  2. --stat
    : 이름처럼 통계적 결과를 내준다. 어떤 파일이 수정됐는지, 얼마나 많은 파일이 변경됐는지,
    또 얼마나 많은 라인을 추가하거나 삭제했는지 보여준다.

옵션설명
-p커밋들에 적용된 패치 보여주기
--stat커밋에서 수정된 파일의 통계정보 보여주기
--shortstat--stat 결과 중 수정한 파일, 추가된 라인, 삭제된 라인만 보여주기
--name-only커밋 정보중 수정된 파일목록만 보여주기
--name-status수정된 파일의 목록을 보여줄 뿐만 아니라, 파일을 추가했는지 수정한 것인지 삭제한 것인지도 보여주기
--abbrev-commit체크섬 처음 몇 자만 보여주기
--relative-date상대적인 형식으로 작성 시간 보여주기
--graph브랜치와 머지 히스토리 정보를 아스키 그래프로 보여주기
--pretty지정한 형식으로 보여주기
  1. --since / --until
    : 시간을 기준으로 조회하는 옵션.
    ex) 지난 2주 동안 만들어진 커밋들만 조회하는 명령

     $ git log --since=2.weeks

이 옵션은 다양한 형식을 지원한다.

  1. --author
    : 저자를 지정하여 검색하기

  2. --grep
    : 커밋 메시지에서 키워드 검색하기

  3. --all-match
    : 여러 옵션을 설정한 경우, 모두 만족하는 커밋을 찾으려고 할 때

Modified 파일 되돌리기

수정한 파일을 다시 최근 커밋된 버전으로 되돌리는 방법은 뭘까?
사실 답은 git status 명령어가 다 알려준다.

    Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working
    directory)
  modified: CONTRIBUTING.md

알려주는대로 하면, CONTRIBUTING.md라는 파일이 원래대로 돌아갔을 것이다.
하지만 이 명령어는 수정한 내용이 전부 사라지므로 주의해야 한다.

변경한 내용을 아예 버리지 않고, 당장에는 되돌려야 하는 상황이라면
stash 명령어나 branch를 사용하자.

Git Alias

명령어를 일일이 다 치기 귀찮고 복잡하니까, 간단히 쓸 수 있게 alias를 만들 수 있다.
이는 git config를 통해서 만들 수 있다.
예시는 아래와 같다.

    $ git config --global alias.co checkout
    $ git config --global alias.br branch
    $ git config --global alias.ci commit
    $ git config --global alias.st status

이렇게 만들어둔 alias는 사용이 가능해진다.
git status => git st 로 짧게 쓸 수 있게 된다.

이미 있는 명령을 편리하고 새로운 명령으로 만들어 사용할 수도 있다.
예를 들어 파일을 unstaged상태로 변경하는 명령을 만들어서 편해질 수도 있다.

    $ git config --global alias.unstage 'reset HEAD --'

"git reset HEAD -- 어떤파일"의 입력과 "git unstage 어떤파일"은 같은 명령이 된다.

'Programming > Git' 카테고리의 다른 글

Pro Git (3) - 브랜치 part 1  (0) 2019.10.16
Git pull과 fetch의 차이  (0) 2019.10.14
Pro Git (1) - 기초, 시작  (0) 2019.10.14

관련글 더보기

댓글 영역