깃으로 버전 관리하기

eunsour 2020. 8. 14.
반응형

※ 깃 저장소 만들기

1. 깃 초기화 하기

$ git init


※ 버전 만들기

1. 스테이지와 커밋 이해하기

  • 작업 트리(working tree) : 작업 트리는 파일 수정, 저장 등의 작업을 하는 디렉터리로, '작업 디렉터리(working directory)'라고도 한다.
  • 스테이지(stage) : 버전으로 만들 파일이 대가히는 곳. 스테이징 영역(staging area)라고도 한다. 예를 들어 작업 트리에서 10개의 파일을 수정했는데 4개의 파일만 버전으로 만들려면 4개의 파일만 스테이지로 넘겨주면 된다. 
  • 저장소(repository, 리포지토리) : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳.
먼저 작업 트리에서 문서를 수정한다. 수정한 파일 중 버전으로 만들고 싶은 것을 스테이징 영역, 즉 스테이지에 저장한다. 그리고 스테이지에 있던 파일을 저장소로 커밋하는 것이 깃이 버전을 만드는 순서이다. 

 

2. 작업 트리에서 빔으로 문서 수정하기

깃에서는 아직 한번도 버전을 관리하지 않은 파일을 untracked files라고 부른다.

 

3. 수정한 파일을 스테이징 하기 - git add

작업 트리에서 파일을 만들거나 수정했다면 스테이지에 수정한 파일을 추가한다. 이렇게 깃에게 버전을 만들 준비를 하라고 알려주는 것을 '스테이징(staging)' 또는 '스테이지에 올린다'라고 표현한다.

$ git add hello.txt
$ git status

결과 >> 수정한 파일 hello.txt가 스테이지에 추가됨.

스테이지에 올릴 때 경고 메시지가 나타나는 이유
윈도우의 줄바꿈 문자와 리눅스의 줄바꿈 문자가 서로 다른데, 윈도우에서는 CR문자와 LF문자(합쳐서 CRLF문자라고 부른다), 리눅스와 맥에서는 줄이 바뀌는 자리에 LF문자가 삽입된다. 그래서 윈도우에서 텍스트 문서를 스테이지에 올릴 때는 'warning: LF will be replaced by CRLF in hello.txt' 같은 경고 메시지가 나타난다. 이 메시지는 깃에서 자동으로 텍스트 문서의 CRLF 문자를 LF 문자로 변환해서 커밋할 것이라는 의미이다.

 

4. 스테이지에 올라온 파일 커밋하기 - git commit

$ git commit -m "message1"
커밋 메시지는 한글로 적어도 되지만 터미널 창에서 한/영 전환도 번거롭고, 나중에 외국인 개발자와 공유할 수도 있으므로 주로 영어로 작성한다.

결과 >>

저장소에 저장된 버전을 확인할 떄
$ git log

 

5. 스테이징과 커밋 한꺼번에 처리하기 - git commit -am

$ git commit -am "message2"

결과 >> git commit -a -m "message" 라고 입력해도 된다.


※ 커밋 내용 확인하기

1. 커밋 기록 자세히 살펴보기 - git log

$ git log

2. 변경 사항 확인하기 - git diff

작업 트리에 있는 파일과 스테이지에 있는 파일을 비교하거나, 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교해서 수정한 파일을 커밋하기 전에 최종적으로 검토할 수 있다.

$ git diff

결과 >>

 

3. 방금 커밋한 메시지 수정하기

문서의 수정 내용을 기록해둔 커밋 메시지를 잘못 입력했다면 커밋을 만든 즉시 커밋 메시지를 수정할 수도 있다. 

$ git commit --amend

※ 작업 되돌리기

1. 작업 트리에서 수정한 파일 되돌리기 - git checkout

파일을 수정한 뒤 소스가 정상적으로 동작하지 않는 등의 이유로 수정한 내용을 취소하고 가장 최신 버전 상태로 되돌려야 할 때 checkout 명령을 사용하면 작업 트리에서 수정한 내용을 쉽게 취소할 수 있다.

$ git checkout -- hello.txt
checkout으로 되돌린 내용은 다시 복구할 수 없다.

 

2. 스테이징 되돌리기 - git reset HEAD 파일 이름

수정된 파일을 스테이징했을 떄, 스테이징을 취소하는 방법

$ git reset HEAD hello2.txt

결과 >>

 

3. 최신 커밋 되돌리기 - git reset HEAD^

수정된 파일을 스테이징하고 커밋까지 했을 때, 가장 마지막에 한 커밋을 취소하는 방법.

$ git reset HEAD^
HEAD^는 현재 HEAD가 가리키는 브랜치의 최신 커밋을 가리킨다. 이렇게 되돌리면 커밋도 취소되고 스테이지에서도 내려간다. 취소한 파일이 작업 트리에만 남음. 
최근 3개의 커밋을 취소하려면 $ git reset HEAD~3 처럼 사용한다.

 

4. 특정 커밋으로 되돌리기 - git reset 커밋 해시

특정 버전으로 되돌린 다음 그 이후 버전을 삭제할 수도 있다. 특정 커밋으로 되돌릴 때는 git reset 명령 다음에 커밋 해시를 사용한다.

$ git reset --hard 복사한 커밋 해시

결과 >> 복사해서 붙인 커밋이 가장 최신 커밋으로 변경됨.

 

5. 커밋 삭제하지 않고 되돌리기 - git revert

커밋으로 되돌릴 때 수정했던 것들 나중에 사용할 것을 대비해서 커밋을 되돌리더라도 취소한 커밋을 남겨두어야 할 때 사용

$ git revert 복사한 커밋 해시

 

 

 

Reference

 
Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문
저자 : 이고잉, 고경희
출판 : 이지스퍼블리싱
발매 : 2019.12.06

 

반응형

댓글