본 게시글은 모두의 git,github(저자 : 강민철)의 내용을 개인적으로 정리하는 글입니다.
깃 초기 설정
깃이 설치완료 되었다면 cmd 창에서 아래와 같이 git을 치면 잘 설치된 것이다.
윈도우 탐색기 폴더에서 깃 배시를 누르면 아래와 같은 화면이 뜬다.
- git config --global user.name "유저 이름" : 모든 버전에는 만든 사람 또는 지은이와 같은 개념이 필요
- git config --global user.email "유저 이메일" : 해당 유저에게 연락하기위한 연락처 개념
- git config --global user.name : 설정한 유저 이름 확인
- git config --global user.email : 설정한 유저 이메일 확인
버전 관리
버전 관리에는 세 가지 공간이 있다.
- 작업 디렉터리(working directory) : 프로젝트가 위치하는 공간 즉, 버전 관리의 대상이 위치하는 공간
- 스테이지(stage) : 다음 버전이 될 후보가 올라가는 공간
- 저장소(repository) : 버전이 만들어지고 관리되는 공간
작업 디렉터리
작업 디렉터리에 있는 프로젝트가 아래 그림처럼 여러 파일과 폴더로 이루어져 있다고 가정해보면, 우리는 이 프로젝트에 새로운 파일 또는 폴더를 생성할 수도 있고, 기존의 파일 또는 폴더를 수정하거나 삭제할 수도 있다.
즉, 작업 디렉터리에 변경 사항을 만들 수 있다.
스테이지
'버전을 만든다'는 말은 '특정 순간의 변경 사항을 기억한다'는 말과 같다.
그렇기 때문에 작업 디렉터리에 있는 프로젝트에 변경 사항이 생기는 순간 새로운 버전을 만들 수 있게 된다.
이 변경 사항은 새로운 파일이 추가 되는 것일 수도 있고, 특정 파일을 수정하거나 삭제하는 것일 수도 있다.
이때 모든 변경 사항을 모두 새로운 버전으로 만들 필요가 없다.
변경 사항 중에서 새로운 버전에 포함하고 싶지 않은 경우도 있기 때문이다.
그렇기에 새로운 버전을 만들기 전에 작업 디렉터리 내에서 변경 사항이 생긴 파일 중 다음 버전이 될 후보를 선별하는 작업이 필요하다.
그래서 깃으로 버전을 만들 때는 작업 디렉터리 내에서 변경된 파일들 중에서 새로운 버전이 될 파일만 특별한 공간으로 옮기는 작업을 거치게 된다.
이 특별한 공간이 바로 스테이지이다.
스테이지는 변경 사항이 있는 파일 중 다음 버전이 될 후보가 올라가는 공간이다.
스테이지는 스테이징 영역 또는 인덱스라고 부른다.
작업 디렉터리는 프로젝트가 위치한 공간이라 눈으로 직접 볼 수 있는 반면, 스테이지는 명시적으로 보이지 않는다.
저장소
다음 버전이 될 후보들을 모두 스테이지로 옮겼다면 이제 이 파일을 새로운 버전으로 만들어야 한다.
스테이지에 있는 파일을 바탕으로 새로운 버전을 만들면 새 버전이 저장소에 추가된다.
작업 디렉터리에서 만들어진 모든 버전들의 내역이 저장소에 있다.
따라서 저장소는 버전이 만들어지고 관리되는 공간이다.
스테이지와 마찬가지로 저장소는 사용자에게는 명시적으로 보이지 않는다.
스테이지에 올라온 파일을 토대로 새로운 버전을 만들면 새로운 버전이 될 후보가 더 존재하지 않으니 스테이지는 깨끗하게 비워진다.
이과정을 반복하면 저장소에는 새로운 버전들이 차곡차곡 쌓이게 된다.
이때 작업 디렉터리에서 버전이 될 후보 파일을 스테이지로 옮기는 것을 '스테이지에 추가한다(add)', '해당 파일을 스테이지 시킨다(staged)' 라고 표현한다.
스테이지에 추가된 파일을 '추가된 파일' 또는 '스테이지된 파일' 이라 표현한다.
또한, 저장소에 새로운 버전을 만드는 것을 커밋한다(commit) 라고 표현한다.
저장소에 저장된 각각의 버전들을 커밋이라 부르기도 한다.
'Git & GitHub' 카테고리의 다른 글
[GitHub] 소스트리로 clone, push, fetch, pull, pull request 하기 (1) | 2023.12.28 |
---|---|
[Git] 소스트리(Sourcetree)로 브랜치(Branch) 다루기 (2) | 2023.12.27 |
[Git] 버전 비교, 커밋 되돌리기, 임시 저장 (+소스트리 실습) (1) | 2023.12.26 |
[Git] 소스트리로 태그 만들기(+커밋 해시 개념) (1) | 2023.12.26 |
[Git] 소스트리(Sourcetree)로 커밋(commit)하기 (0) | 2023.12.25 |