다라다라V
article thumbnail
728x90
반응형
깃에서는 문서를 수정할 때마다 간단한 메모와 함께 수정 내용을 스냅숏으로 저장하는데 이것을 "버전"이라고 합니다. 깃의 가장 주요한 기능은 버전관리입니다. 문서를 수정하면서 수정 내용을 버전으로 저장하는 방법과, 저장한 버전을 사용해 이전 내용으로 되돌리는 방법을 알아봅시다. 이는 다음에 배울 백업과 협업 기능에도 중요한 내용입니다.

📌 깃 저장소 만들기

📚 깃 초기화 하기 - git init

  • 깃 저장소를 만들고 그 디렉터리로 이동해서 깃을 초기화하면 그때부터 해당 디렉터리에 있는 파일의 버전을 관리할 수 있음
  • git init 명령을 통해 깃을 사용하도록 디렉터리가 초기화됨
  • git init 명령어를 입력하면 디렉터리에 .git 디렉터리가 생김, 이 디렉터리가 버전이 저장될 "저장소(repository)"

 


📌 버전 만들기

프로그램 개발에는 수정 내용이 쌓이면 새로 번호를 붙여서 이전 상태와 구별합니다. 이렇게 번호 등을 통해 구별된 것을 "버전"이라고 합니다. 깃의 버전을 만드는 방법을 알아봅시다.


📚 깃에서 버전이란

"보고서_최종_진짜최종.hwp", "찐찐찐찐최종_제출용.hwp" 이런 식으로 문서의 이름을 바꾸다보면 어떤 내용을 왜 수정했는지 모릅니다.

이렇게 파일을 다른 이름으로 저장하는 것 보다 훨씬 쉽게 버전을 만들고 만든 시간과 수정 내용을 기록하는 것이 버전관리 시스템입니다. 깃에서는 버전을 관리하면서 무엇을 변경하였는지 시점마다 확인할 수 있습니다. 또한 이전 버전으로 쉽게 돌아갈 수도 있습니다.


📚 스테이지와 커밋 이해하기

깃 버전을 만드는 단계를 이해하기 위해 아래 그림과 함께 저장소 개념을 배우겠습니다.

  • 작업 트리(working tree) : 파일 수정과 저장 등의 작업을 하는 디렉터리, 우리 눈에 보이는 디렉터리
  • 스테이지(stage) : 스테이징 영역(staging area), 버전으로 만들 파일들이 대기하는 곳
  • 저장소(repository) : 리포지토리, 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳

 

  • 스테이지와 저장소는 깃을 초기화 했을 때 만들어진 .git 디렉토리 안에 있는 숨은 디렉토리
  • Hello.txt 파일 문서를 수정하고 저장하면 파일은 작업 트리에 존재
  • 수정한 Hello.txt 파일을 버전으로 만들고자하면 스테이지에 넣음
  • 다른 파일들도 수정한 뒤 버전으로 만들고 싶으면 스테이지에 넣을 수 있음

 

  • 파일 수정을 끝내고 스테이지에 넣었다면 버전을 만들기위해 깃에 커밋(commit) 명령을 내림
  • 커밋 명령을 내리면 새로운 버전이 생성되면서 스테이지의 파일들이 모두 저장소에 저장됨

 

정리하자면 다음과 같습니다.

  1. 작업 트리에서 문서를 수정
  2. 버전으로 만들고 싶은 파일을 스테이지에 올림
  3. 스테이지에 있던 파일을 저장소로 커밋하면 버전이 만들어짐

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

  • git status 명령어 : 깃 상태를 확인하는 명령어
    • On branch master : 현재 마스터 브랜치에 있다는 뜻
    • No commits yet : 아직 커밋한 파일이 없음
    • nothing to commit : 현재 커밋할 파일이 없음
    • untracked files : 깃에서 한 번도 버전 관리를 하지 않은 파일

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

작업 트리에서 파일을 만들거나 수정했다면 스테이지에 파일을 추가할 수 있습니다. 이것을 '스테이징(staging)' 또는 '스테이지에 올린다'라고 표현합니다.

  • 깃에서 스테이징할 때는 사용하는 명령은 git add
  • git status 로 깃 상태를 확인
    • utracked files 문구가 changes to be committed로 바뀜
    • 스테이지에 파일이 올라갔다는 의미

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

깃에서 버전을 만드는 것을 커밋한다고 합니다. 커밋할 때는 그 버전에 어떤 변경 사항이 있었는지 확인하기 위해 메시지를 기록해야 함

  • git commit 명령어 : 깃에서 파일을 커밋하는 명령어
  • git commit -m 명령어 : 커밋과 함께 저장할 메시지를 적을 수 있음
  • git status 로 깃 상태를 확인
    • nothing to commit, working tree clean : 버전으로 만들 파일도 없고 작업 트리도 수정사항 없이 깨끗하다
  • git log : 버전이 제대로 만들어졌는지 확인하기
    • 커밋을 만든 사람, 만든 시간, 커밋 메시지가 함께 나남
    • 수정한 파일을 커밋하면 수정과 관련된 여러 정보를 함께 저장하고 필요할 때 확인

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

commit 명령에 -am 옵션을 사용하면 스테이지에 올리고 커밋하는 과정을 한꺼번에 처리할 수 있습니다. 단, 한 번이라도 커밋한 적이 있는 파일어야 가능합니다.


📌 커밋 내용 확인하기

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

  • commit 이라는 항목 옆에 문자열을 커밋 해시(commit hash), 깃 해시(git hash)라고 함, 커밋을 구변하는 아이디
  • 커밋 해시 옆의 (HEAD -> master)는 이 버전이 가장 최신이라는 버전
  • Author : 이 버전을 누가 만들었는지 표시
  • Date : 이 버전이 언제 만들어 졌는지 표시
  • 아래는 커밋 메시지
  • git log 명령어를 입력했을 때 나오는 정보들을 '커밋 로그'라고 함

📚 변경 사항 확인하기 - git diff

  • git diff 명령어 : 사용하면 작업 트리에 있는 파일과 스테이지에 있는 파일을 비교하거나, 스테이지 파일과 저장소 파일을 비교

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

깃에서는 버전을 만드는 단계마다 상태를 다르게 하여 관리합니다. 파일의 상태를 통해 파일의 버전 관리 중 어느 단계에 있는지 어떤일을 할 수 있는지 확인해야합니다.

 


📌 작업 되돌리기

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

  • 파일을 수정한 후 수정한 내용을 취소하고 가장 최신 상태로 되돌려야할 수 있음. 이때 사용하는 명령어가 checkout 
  • git checkeout -- "파일 이름" : 작업 트리(디렉터리)의 변경사항을 취소

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

  • 수정된 파일을 스테이징했을 때, 스테이징을 취소하는 방법도 있음
  • git reset HEAD "파일 이름" : 스테이지에서 내려보낼 수 있음, unstaged 메시지가 출력됨

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

  • 수정된 파일을 스테이징하고 커밋까지 했을 때, 가장 마지막에 한 커밋을 취소하는 방법
  • 커밋도 취소되고 스테이지에서 내려감, 취소한 파일이 작업 트리에 남음

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

  • 특정 커밋으로 되돌릴 때는 git reset 명령 다음에 커밋 해시를 사용
  • git reset --hard "커밋 해시" : 커밋 해시가 가장 최신 커밋이 됨

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

  • git revert 명령어 : 커밋을 되돌리더라도 취소한 커밋을 남길 때 사용하는 명령어
반응형

'코딩언어 > Git & GitHub' 카테고리의 다른 글

[Git&GitHub] 04. 깃허브로 백업하기  (0) 2022.12.31
[Git&GitHub] 03. 깃과 브랜치  (0) 2022.12.30
[Git&GitHub] 01. 깃 시작하기  (0) 2022.12.23
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!