728x90
# 출처 : [도서]Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문(이고잉)
깃에서 버전이란
문서를 수정하고 저장할 때마다 생기는 것.
위의 사진처럼 수정 사항을 저장하는 과정에선, 어떤 파일에서 어떤 내용을 수정했는지 기억할 수 없다.
이를 쉽게 버전을 만들고 만든 시간과 수정 내용까지 기록할 수 있는 것이 바로 깃과 같은 버전 관리 시스템!
깃에서 버전을 관리하면,
- 원래 파일 이름은 그대로 유지하면서 파일에서 무엇을 변경했는지를 변경 시점마다 저장할 수 있다.
- 각 버전마다 작업했던 내용을 확인할 수 있고, 그 버전으로 되돌아 갈 수 도 있다.
깃의 구조
- 작업트리(working tree) / 작업 디렉터리(working directory)
- 파일 수정, 저장 등의 작업을 하는 디렉터리
- 눈에 보이지 디렉터리가 작업 트리
- 스테이지(stage) / 스테이징 영역(staging area)
- 버전으로 만들 파일이 대기하는 곳
- 10개의 파일을 수정했지만 4개의 파일만 버전으로 만들고 싶다면, 4개의 파일만 스테이지로 넘겨주면 된다.
- 저장소(repository, 리포지토리)
- 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳
- 스테이지의 내용은 .git/index 파일에 저장되고, 저장소의 내용은 .git/HEAD 파일에 저장
스테이지와 저장소는 눈에 보이지 않는다.
깃을 초기화할 때 만드어지는 .git 디렉터리안에 숨은 파일 형태로 존재하는 영역이다.
git안에 숨어있는 스테이지와 저장소 영역을 상상하며 깃이 버전을 만드는 과정을 아래에 설명하겠다.
깃이 버전을 만드는 순서
1. 작업 트리에서 문서 수정
2. 수정한 파일 중 버전으로 만들고 싶은 것을 스테이지에 저장
3. 스테이지에 있던 파일을 저장소로 커밋
깃 버전 만들기
1. 깃 상태 확인
git status
On branch master | 현재 master 브랜치에 있습니다. |
No commits yet | 아직 커밋한 파일이 없습니다. |
nothing to commit | 현재 커밋할 파일이 없습니다. |
2. 새로운 파일 생성 및 저장 & 깃 상태 확인
vim hello.txt
git status
※ Untracked files : 한번도 버전 관리하지 않은 파일
버전 만들 준비를 하라고 알려주는 것을 '스테이징' 또는 '스테이지에 올린다'라고 표현
스테이징 내용을 .git/index 파일에 저장하기 때문에 스테이지에 올리는 것을 '인덱스에 등록한다'라고도 표현
3. 스테이지에 수정한 파일 추가 및 깃 상태 확인
git add hello.txt
git status
4. 커밋하기 및 깃 상태 확인
커밋(commit) : 깃에서 버전을 만드는 것
커밋 시, 그 버전에 어떤 변경 사항이 있었는지 확인하기 위해 메시지를 함께 기록
git commit -m "message1"
git status
※ 커밋 후, 결과 메시지를 보면 파일 1개가 변경되었고, 파일에 1개의 내용이 추가되었다고 알려준다.
nothing to commit | 버전으로 만들 파일이 없다. |
working tree clean | 작업 트리에 수정사항이 없다. |
5. 버전 생성 확인
git log
스테이징과 커밋 한꺼번에 처리하기
3, 4번에서 사용한 git add와 git commit을 한번에 사용할 수 있는 명령어가 존재한다.
git commit -am "message1"
다음과 같이 -am 옵션을 사용하여 스테이지에 올리고, 커밋하는 과정을 한꺼번에 처리할 수 있다.
(git commit -a -m "message1"으로 사용해도 가능)
단, 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용할 수 있다.
728x90
'IT > Git' 카테고리의 다른 글
[Git] 버전 만드는 단계마다 파일 상태 알아보기 (0) | 2022.08.11 |
---|---|
[Git] 커밋 내용 확인하기 (0) | 2022.08.11 |
[Git] 깃 저장소 만들기 (0) | 2022.08.04 |
[Git] 리눅스 명령어 알고가기 (0) | 2022.08.04 |
[Git] 설치 및 환경 세팅 (0) | 2022.07.31 |