git&github

git 버전 관리

MoonjuLee 2023. 2. 7. 23:35

이전 글로 git과 github를 쬐금 알아보았습니다.

이번 포스팅은 git으로 파일 버전 관리를 할 때 알아두면 좋은 내용들을 정리해 보겠습니다!

 

git은 파일을 수정할 경우 간단한 메모와 수정 내용을 스냅샷으로 찍어 저장합니다. 

이렇게 저장된 것들이 버전이라고 불립니다. (물론 이전에 git을 초기화해야 합니다.)

 

git 초기화부터 알아보도록 하겠습니다!

 

특정 디렉토리에 git -init 명령어를 사용하여 초기화하면 '. git/'이라는 숨긴 폴더가 생성됩니다.

위에서 말씀드린 것처럼 초기화가 되면 버전을 관리할 수 있습니다.


미리 용어를 정리하겠습니다!

  • 작업트리(working directory) : 현재 내가 작업하고 있는 디렉토리
  • 스테이지(stage) : 버전으로 만들 파일이 대기하는 곳 -> 스테이징 or 인덱싱
  • 저장소(repository) : 스테이지에서 대기하고 있던 파일을 버전으로 만들어 저장하는 곳 -> 커밋

버전이 만들어지는 과정

 

1. 

[1] vim을 통해 txt파일을 만듦

문서를 작성하면 작업트리에 저장됩니다.(파일을 수정하고 저장해도 작업트리에 저장됩니다.)

[2] 파일 생성 후 git 상태 체크

아직 작업트리에서 한 번도 버전관리가 되지 않은 상태를 untrackead 상태라고 합니다.(추적되지 않은 파일)

 

2.

[3] git add 후 상태 체크

git add 명령어를 통해 스테이지에 올린 후 확인해 보면 커밋할 변경 사항이 생겼다는 메시지가 뜹니다.

또, 로그를 찍어보면 아직 커밋된 것이 없다는 메시지가 뜹니다.

 

3.

[4] git commit 후 상태 체크

커밋을 하여 스테이지에서 저장소로 올린 후 확인해 보면 (HEAD -> master)라는 메시지가 표시됩니다.

이제부터 git이 이 파일의 버전을 관리합니다. 

(HEAD -> master 이 메시지는 최신 버전에 표시됩니다.)

 

4.

[5] 작업 트리에서 파일 수정 후 상태 체크

[4]번 사진에서 커밋한 파일을 수정, 저장한 후 상태를 확인해 보면 [2]번 사진의 unteacked라는 메시지와는 다르게 

modified라는 메시지를 확인할 수 있습니다.

작업트리 영역에서 수정된 파일을 이전으로 되돌리기 위해서는 git bash에서 알려주는 방법으로

git restore 파일명.확장자 or git checkout -- 파일명.확장자 명령어를 입력하면 작업트리에서 수정한 내용을

수정 전으로 되돌릴 수 있습니다.

 

5.

[6] 수정한 파일 스테이지에 올린 후 상태 체크

작업트리에서 스테이지로 올린 후 상태를 확인해 보면 [3]번 사진의 new file: 메시지가 아니라 modified라는 메시지를 

확인할 수 있습니다. ([3]번 사진의 unstage 명령어도 다른 것을 확인할 수 있습니다.)

 

6.

[7] 스테이지에서 저장소로 올린 후 log
[8] 자세한 log (git log --stat)

커밋을 한 후 새로운 버전이 저장되었습니다.

저장소로 올라온 파일은 2개의 커밋 로그를 가졌고 위에서 말한 것처럼 (HEAD -> master)라는 표시가 최신입니다.

(커밋을 삭제하거나 이전 버전으로 되돌리는 명령어들도 있으니 알아보시면 도움이 됩니다. 따로 언급은 안 하겠습니다.)

 


정리하자면 git은 버전관리를 위해 

 한 번도 버전관리가 되지 않은 untracked 상태에서 git add 명령어를 통해 staged 상태가 되고 commit이 되면

unmodified 상태가 되고, 파일이 수정되면 modified 상태가 되고 반복적으로 git add 명령어를 통해 staged 상태가 되고

또 한 번 커밋을 통해 unmodified 상태로 되돌아가는 구조이다.

 

git에서의 file life cycle

그림 출처 : http://git-scm.com

 

Git

 

git-scm.com

 

다음에는 git의 branch와 백업에 대해 알아보도록 하겠습니다!