어쩌다데싸
[Git] Git 기초 개념 정리 본문
프로젝트를 진행하면서 Git을 통해 코드를 관리해야 하는 경우가 많아 공부를 시작했다.
기초적인 개념부터 차근차근 주로 사용하는 개념/코드 위주로 정리해야지
1. Git 이란?
수정한 소스를 관리하기 위해 필요한 시스템으로, ‘버전관리’, ‘백업’, ‘협업’ 기능으로 크게 분류할 수 있다.
* 깃 저장소 : 해당 디렉토리(저장소)에 있는 파일들을 버전관리 할 수 있음. 저장소를 만들고 싶은 디렉터리로 이동해서 깃을 초기화 하면 됨
# CLI 에서 깃 저장소 생성
mkdir hello-git # 깃 저장소로 사용하기 위한 디렉터리 생성
cd hello-git # 해당 디렉터리로 이동
git init # 깃 초기화
ls -la # .git 이라는 디렉터리 생성 확인
2. 스테이지와 커밋
버전을 만드는 단계를 이해하기 위해서는 스테이지와 커밋 등 가상의 개념을 이해해야 한다.
- 버전 : 문서를 수정하고 저장할 때마다 생기는 것으로, 간단한 메모와 함께 수정 내용을 스냅숏으로 찍어서 저장하는 것
- 작업트리(working tree) : 파일 수정, 저장 등을 하는 디렉터리로 ‘작업 디렉터리’라고도 함. 앞서 만들었던 로컬 깃 저장소가 작업트리가 됨
- 스테이지(stage) : 버전으로 만들 파일이 대기하는 곳. 작업트리에서 10개의 파일을 수정하고 4개의 파일만 버전으로 만들려면 해당 4개의 파일만 스테이지로 넘겨주면 됨
- 저장소(repository) : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳.스테이지와 저장소는 눈에 보이지 않고 깃이 초기화 했을 때 만들어지는 .git 디렉터리 안에 숨은 파일 형태로 존재하는 영역.
- 커밋 : 스테이지에 있는 파일을 버전으로 만들기 위해 내리는 명령
3. 브랜치
버전 관리 시스템에서 나무가지에서 새 줄기를 뻗듯이 여러 갈래로 펴지는 데이터 흐름. 기본적으로 git 저장소에는 master(|main) 브랜치가 생성되며, 각 브랜치가 가리키는 커밋을 확인해야 한다.
* 리모트 브랜치는 무엇일까?
- Remote Refs : 리모트 저장소에 있는 포인터인 레퍼런스. 리모트 저장소에 있는 브랜치, 태그 등등을 의미하며 git ls-remote [remote] 명령으로 모든 리모트 Refs 조회 가능. git remote show [remote] 명령은 모든 리모트 브랜치와 그 정보를 보여줌
- Remote tracking branch : 리모트 브랜치를 추적하는 레퍼런스이며 브랜치로 로컬에 있지만 임의로 움직일 수 없음. 리모트 서버에 연결할 때마다 리모트 브랜치 업데이트 내용에 따라 자동으로 갱신되는 일종의 북마크. 리모트 저장소에 마지막으로 연결했던 순간에 브랜치가 무슨 커밋을 가리키고 있는지 나타냄. <remote>/<branch> 형식으로 되어 있음 (ex. origin/master)
- 리모트 서버로부터 저장소 정보를 동기화하려면 git fetch origin 명령을 사용. 현재 로컬의 저장소가 갖고 있지 않은 새로운 정보가 있으면 모두 내려받고, 받은 데이터를 로컬 저장소에 업데이트하고 나서, origin/master 포인터의 위치를 최신 커밋으로 이동시킴
git checkout -b <branch> <remote>/<branch>
git checkout --track <remote>/<branch> # 로컬 브랜치 이름을 자동으로 생성
git checkout serverfix #(a) 리모트가 하나 있고 (b) 로컬에 없으면 옵션을 생략해도 트래킹 브랜치를 만듦
git checkout -b <다른브랜치명> <remote>/<branch> # 리모트 브랜치와 다른 이름으로 브랜치를 만들 때
git branch -u origin/serverfix # 이미 존재하는 브랜치가 리모트의 특정 브랜치를 추적하게 할 때 -u 나 --set-upstream-to 옵션을 붙여서 실행
git branch -vv # 추척 브랜치가 현재 어떻게 설정되어 있는지 확인
git push origin --delete <branch> # 리모트 브랜치 삭
'MLOps' 카테고리의 다른 글
[Docker] 도커 (1) | 2023.05.19 |
---|