깃으로 버전 관리하기

1. 깃 저장소 만들기


  • 깃 초기화 하기
    $ git init
    

    cd 를 이용하여 저장소를 만들고 싶은 디렉터리로 이동한 뒤 $ git init을 입력하게 되면 깃을 사용할 수 있도록 디렉터리를 초기화하게 됩니다.

    $ git init 디렉터리이름
    

    init 다음에 디렉터리 이름을 입력하면 새로운 디렉터리를 만들고 그곳에서 저장소를 초기화하는 과정을 한꺼번에 처리할 수 있습니다.

2. 버전 만들기


스테이지와 커밋 이해하기

이름설명
작업트리파일 수정, 저장 등의 작업을 하는 디렉터리
스테이지버전으로 만들 파일이 대기하는 곳, 스테이징영역이라고도 함.
저장소스테이지에서 대기하고 있던 파일들이 버전으로 만들어 저장하는 곳

스테이지와 저장소는 눈에 보이지 않고 깃을 초기화했을 때 만들어지는 .git 디렉터리 안에 숨은 파일 형태로 존재하는 영역입니다.

  1. 파일 문서를 수정하고 저장하면 그 파일은 작업 트리에 있게 됩니다.
  2. 이 파일을 버전으로 만들고 싶을 때 스테이지에 넣습니다.
  3. 버전을 만들기 위해 깃에게 ‘커밋(commit)’명령을 내립니다.
  4. 커밋 명령을 내리면 새로운 버전이 생성되면서 스테이지에 대기하던 파일이 모두 저장소에 저장됩니다.

status, add, commit

$ git status

깃의 상태를 확인합니다. 기본적인 상태라면 다음과 같은 메시지가 표시됩니다.
On branch master : 현재 master 브랜치에 있습니다.
No commits yet : 아직 커밋한 파일이 없습니다.
nothing to commit : 현재 커밋할 파일이 없습니다.

$ git add 파일명 // 파일명 대신 . 입력시 전체 스테이징

파일을 스테이지에 올려줍니다.

$ git commit -m"message"

스테이지에 있는 것들을 버전으로 만들게 됩니다. 커밋할 때는 그 버전에 어떤 변경 사항이 있는지 확인하기 위해 메시지를 함께 기록합니다.

$git commit -am"message"

add와 commit을 한번에 수행할 수 있습니다. 단, 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용할 수 있습니다.

$ git commit --amend

가장 최근의 커밋 메시지를 수정할 수 있습니다.

3. 커밋 내용 확인하기


log, diff

$ git log

저장소에 저장된 버전을 확인할 수 있습니다.

$ git diff

작업 트리에 있는 파일과 스테이지에 있는 파일을 비교하거나 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교할 수 있습니다.

4. 버전 만드는 단계마다 파일 상태 알아보기


tracked 파일과 untracked 파일

작업트리에 있는 파일은 크게 tracked 상태와 untracked 상태로 나뉩니다.

분류|설명 —|— tracked 파일| 깃에서 추적하고 있다는 뜻 untracked 파일| 한 번도 깃에서 버전관리를 하지 않았다는 뜻

버전을 만드는 과정에서 $ git status입력시 나타나는 내용

분류설명
changes not staged for commit변경된 파일이 아직 스테이지에 올라가지 않았다는 뜻
changes to be committed스테이지에 올라와있다는 뜻
working tree clean현재 작업트리에 있는 모든 파일의 상태가 unmodified상태

그림1

5. 작업 되돌리기


작업 트리에서 수정한 파일 되돌리기

$ git checkout

파일을 수정했지만 아직 스테이징 하지 않았다면 checkout으로 잡업 트리 변경 사항을 취소할 수 있습니다.

스테이징 되돌리기

$ git reset HEAD 파일명 // 파일명 미지정시 스테이지 모든 파일 되돌림.

스테이지에 있는 파일을 되돌립니다.

최신 커밋 되돌리기

$ git reset HEAD^

최신 커밋이 취소되고 스테이징도 함께 취소됩니다.

reset 명령의 옵션

명령                          설명
–soft HEAD^최근 커밋을 하기 전상태로 작업 트리 되돌리기
–mixed HEAD^최신 커밋과 스테이징을 하기 전 상태로 작업 트리 되돌리기, 옵션없이 git reset HEAD^과 같음
–hard HEAD^최신 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리 되돌리기


특정 커밋으로 되돌리기

git reset 커밋해시

해당 커밋 이후에 만들었던 커밋을 삭제하고, 해당 커밋으로 이동합니다. 이후의 커밋은 파일에만 저장됩니다. –hard 커밋해시 사용시 파일에도 삭제

커밋 삭제하지 않고 되돌리기

git revert 커밋해시 // 여러개의 경우 커밋해시..커밋해시

해당 커밋을 취소하고 새 커밋을 생성합니다. 해당 커밋은 삭제되지 않고, 새 커밋은 해당 커밋이 변경했던 이력을 취소한 새로운 커밋입니다.


본 포스팅은 ‘지옥에서 온 문서 관리자 깃 & 깃허브’를 읽고 공부한 내용을 바탕으로 작성하였습니다.


© 2021. By Backtony