Local
우리가 사용하고 있는 각각의 컴퓨터. 즉, 자기 자신을 가리킨다.
Working Directory(폴더)
현재 작업 중인 프로젝트가 위치한 디렉토리
Staging
commit 할 파일의 예비 저장소
commit이란 소스가 변경되거나 새로 작성되면 local 저장소에 저장하는 액션을 말한다. 한 건의 commit으로 발생된 변경사항을 버전이라고 한다.
Local Repository
각 컴퓨터의 git이 관리하는 로컬 저장소
Working Directory로부터 commit한 내용들이 버전으로 저장되는 곳이다. commit이 된 순간의 파일과 내용들을 가지고 있기 때문에 언제든지 commit 했던 지점으로 돌아갈 수 있다.(복원 가능)
remote
Remote Repository - Github
github 등 외부에 위치한 원격 저장소
여러 명이 함께 소스를 수정하고 개발하기 위해 외부 저장소로 보낸다.
로컬 Git 저장소 생성
1. git 영역으로 초기화 수행
$ git init
깃(Git)에서 폴더 안에 있는 파일들에 대해 이력을 관리하기 위해서 init 명령을 통해 초기화 해야한다. 초기화가 되면 .git이라는 숨김 폴더가 생성되고 해당 폴더에 대한 모든 데이터가 저장된다.
*현재 깃을 초기화 하려는 경로가 내 프로젝트가 위치한 곳이 맞는지 확인. 위치가 올바르지 않은 경우, 불필요하거나 보안상 민감한 파일들이 깃의 관리영역에 포함 될 수 있다.
2. .gitignore 파일 추가
신분증이나 신용카드 번호 등 민감한 개인정보를 구글 드라이브나 Dropbox에 저장하는 것은 매우 위험한 행위이다. 시스템적으로 보안조치가 강하게 걸려있다고 하더라도 근본적으로 민감 정보는 외부 저장소에 저장하지 않는 것이 좋다.
소스 또한 마찬가지이다. 데이터베이스 계정이나 클라우드 시크릿 키, 각종 민감 정보는 저장소에 반영되어서는 안된다.
깃으로 초기화 된 폴더에 .gitegnore라는 파일을 만들고 깃에서 무시해야할 파일의 이름을 작성하면 폴더 내 해당 파일은 더이상 깃에 의해 탐지되지 않는다.
깃에서 일반적으로 무시하는 파일은 보안상 민감 정보, 각종 설정 파일, compile 언어들의 빌드 산출물, 개발용 데이터베이스 등 이다.
3. 파일 확인
$ git status
현재 어떤 파일들이 추적되고 있는지, 특히 Staging area에 어떤 파일들이 들어있는지 확인하는 명령어이다.
4. Staging Area 생성
나의 프로젝트 중 버전관리에 반영할 파일 지정한다. 버전관리에 반영된 파일의 영역이 Staging Area가 된다.
$ git add .
$ git add "<파일명>"
$ git add. 현재 위치에 있는 모든 파일들을 add 한다. *commit 되면 안되는 파일이 있는지 반드시 확인
$ git add "<파일명>" 특정 파일만 add 한다.
원치 않는 파일을 add 했을 경우
$ git rm/reset
5. commit 작업
Staging area에 있는 것들을 로컬 저장소에 변동 기록(버전)으로 관리 할 수 있도록 남기기 위해 commit을 실행한다.
$ git commit -m "<message>"
메세지를 입력하지 않으면 에러가 발생한다. 이 프로젝트, 혹은 수정 사항에 대해 문제가 생겼을 때 빠르게 대응 할 수 있도록 commit에 대한 정보를 기록한다.
6. branch(필수x)
$ git branch -M main
최신 버전의 깃에서는 기본 branch 이름이 main으로 정해져 있다.
branch란 동일한 저장소 내에 소스에 대해 서로 영향을 받지 않는 독립적인 공간이다. 여러 개발자들이 동시에 소스가 덮어씌워질 염려 없이 다양한 작업을 할 수 있도록 한다.
보통 크게 3가지 (혹은 이상)의 branch로 프로젝트가 관리된다.
- main / master
즉시 운영 배포할 수 있는 버전. 사용자가 지금 이용 중인 코드이다.
모든 작업상이 합쳐지는 곳이기 때문에 토이프로젝트 등 가벼운 코드가 아니라면 main에서 작업하는 것은 위험 할 수 있다. 깃에서 최초로 init 명령어로 초기화 했을 때 생성되는 기본 branch 명이다.
인종차별/주종관계를 드러내는 용어를 수정하는 문화가 프로그래밍 전반에 확산되면서 master가 아닌 main을 사용하게 되었다.
main -> master
master slave -> primary
blacklist whitelist -> blocklist allowlist
- stagging
상용에 반영하기 전 테스트 버전
- feature
새로운 기능 추가 개발. 서로 꼬이지 않도록 병렬 작업 한다.
'Back-End' 카테고리의 다른 글
Github 소스 반영 및 협업 (0) | 2023.05.03 |
---|---|
Git & Github란? (0) | 2023.05.02 |