Git 시리즈 (2)

1 분 소요

개요

  • 이번 포스트에선 git으로 버전관리하는 내용을 다룬다.
  • 버전관리란 하나의 디렉터리 내부에서 많은 파일들이 생성, 수정, 삭제되는 시점의 역사를 특정한 hash값으로 기억하는 것이다.
  • 이를 통해 버전마다의 상세내용을 시간이 지나서도 확인하거나 이전 버전으로 되돌리는 등의 작업이 가능해진다.

버전 만들기

  • 버전관리를 할 때에는 총 3가지의 영역이 있음을 인지해야한다.
    1. 작업트리
    2. 스테이지
    3. 저장소(repository)
  • 작업트리는 실제로 자신의 컴퓨터에 저장되어있고 직접 생성, 수정, 삭제작업이 이루어지는 디렉터리를 의미한다. 즉, 눈에 보이는 디렉터리가 바로 작업트리이다.
  • 스테이지는 버전으로 만들 파일이 대기하는 공간이다.
  • 저장소(repository)는 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳이다.

  • git 버전관리를 하려면 현재 디렉터리에 git을 초기화시켜야 한다.
      $ git init
    
  • 이 상태에서 현재의 git 상태를 보면 아래와 같은 결과가 나온다. 현재 master브랜치에 있으며 이전에 커밋한 파일과 현재 커밋할 파일이 없음을 나타낸다.
      $ git status
    
      // on branch master
      // No commits yet
      // nothing to commit
    
  • 파일을 하나 생성한 후 다시 git 상태를 확인해보자. 그럼 현재 git에 의해 추적되지 않은 파일이 있다고 메세지가 나온다.
      $ vi test1.txt
      $ git status
    
      // untracked files: test1.txt
    
  • 해당 파일을 추적되게끔 만들면서 스테이지 영역으로 옮기려면 아래 명령어를 사용한다. 그럼 해당 파일은 추적이 되면서 commit할 수 있게 변경되었다는 메세지가 나온다.
      $ git add test1.txt
      $ git status
    
      // changes to be committed:
      // new file:  test1.txt
    
  • git에서 버전을 만든다는 ‘커밋을 한다’고도 말할 수 있다. 스테이지 영역에 파일이 들어와야 커밋을 할 수 있으며 버전을 만들 수 있다.
      $ git commit -m "create test1.txt"
      $ git status
    
      // nothing to commit
      // working tree clean
    
      $ git log --oneline
    
  • 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때에는 스테이징과 커밋을 동시에 할 수 있다.
      $ git commit -am "update test1.txt"
    

커밋 & 파일 상태 확인하기

  • 저장소에 저장된 버전을 확인할 때
      $ git log
    
  • 변경사항 확인할 때
      $ git diff
    
  • 현재 디렉터리에서의 파일 상태를 확인할 때
      $ git status
    

작업 되돌리기

  • 작업트리에서 수정한 내용을 이전 버전 내용으로 되돌리고 싶을 때
      $ git checkout -- test1.txt
    
  • 작업트리에서 수정한 내용을 스테이징했는데 이를 취소하고 싶을 때
      $ git reset HEAD test1.txt
    
  • 수정내용을 커밋했는데 이를 되돌리고 싶을 때
      // 가장 최신의 커밋 하나만 되돌릴 때
      $ git reset HEAD^
        
      // 가장 최신의 커밋 3개를 되돌릴 때
      $ git reset HEAD~3
        
      // 특정 커밋으로 되돌릴 때
      $ git reset [커밋 해시값]
    
  • 커밋을 되돌리고 수정했던 것들을 삭제해도 된다면 git reset을 사용해도 되지만 수정내용을 삭제하지 않으면서 취소한 커밋을 남겨놓아야할 때가 있다. 이 때 아래 명령어를 사용한다.
      $ git revert [커밋 해시값]
    

카테고리:

업데이트:

댓글남기기