SMALL
Git이 뭐야?
- 리눅스의 아버지, 리누스 토발즈가 개발한 분산형 버전 관리 시스템.
- 쉽게 설명하면 코드의 다양한 버전을 관리할 수 있는 시스템임.
- 코드뿐만 아니라 그래픽리소스 등 파일의 버전관리도 가능함.
왜 쓰는건데?
협업이 용이하다.
- 작업자의 작업 공간이 분리되고, 작업 내역을 하나로 합치는 병합 작업이 쉽게 이뤄진다.
변경사항이 기록되어 버전 관리가 용이하다.
- 개발을 하다보면 이전 버전으로 되돌아가야 하는 경우가 빈번히 생긴다.
- 어젯밤에 코드를 수정하고 잠에 들었는데 아침에 실행해보니 동작하지 않는다면?
- 새 기능을 추가했는데 QA에서는 잡히지 않은 치명적인 예외사항(결제오류 등)이 생겼다면?
테스트 코드를 확인하기 쉽다.
- 테스트 서버에만 적용하고 라이브 서버에는 적용하면 안되는 경우에 사용할 수 있다.
- 기존 코드를 리팩토링 하거나, 새로운 기능을 구현하는 경우 기존 코드에 영향을 주지 않는다.
누가, 언제, 어떻게 코드를 수정했는지 추적이 가능하다.
- 물론 그런 일이 있어선 안되겠지만, 누군가 컨펌되지 않은 작업을 했을 때 책임소재를 명확히 따질 수 있다.
- QA에서 잡히지 않은 예외사항이 발생했을 때 수정/추가된 코드를 비교 분석해 원인을 파악하기 용이하다.
시스템을 빠르게 복구할 수 있다.
- Git은 버전관리 뿐만 아니라 코드 백업의 역할도 해주기 때문에 서비스가 중단되었을 경우 대체 시스템 구성을 빠르게 진행할 수 있다.
- PC를 맘 편히 초기화 할 수 있다!
기본개념/용어
Repository
- 말 그대로 코드 파일 집합들을 모아놓은
저장소
이다. 로컬 저장소 (Local Repository)
와원격 저장소 (Remote Repository)
로 구분된다.로컬 저장소
는 각 작업자의 독립적인 작업 공간이다.로컬 저장소
에서 코드를 수정하더라도원격 저장소
에는 영향을 미치지 않는다.
Working Tree
작업 중인 파일
의 집합이다.- 기존 코드를 수정하거나 새 파일을 생성, 또는 기존 파일을 삭제할 경우
작업 트리
로 들어간다.- 기본적으로 아래와 같이 구성된다.
구분 표기 비고 수정됨 Modified 파일 내용이 git이 갖고있는 버전과 상이한 상태. 커밋할 준비는 되어있지 않음. 준비 Staged 해당 파일을 커밋할 준비가 되어있는 상태. 커밋됨 Commited 로컬 저장소
에 변경사항을 확정하고 저장한 상태. - 새 파일을 추가하거나 기존 저장소의 파일을 추적 목록에서 제외하면
Untracked
상태가 된다. Untracked
상태의 파일들은git add
명령어로작업 트리
에 추가할 수 있다.
- 기본적으로 아래와 같이 구성된다.
Add / Commit / Push / Pull / Fetch
Add
:작업 트리
에 파일 삭제, 수정 등의 변경사항을 등록하여Staged
상태로 만든다.Commit
:작업 트리
에Stage
된 파일들을 적용하겠노라고확정
한다.Push
:로컬 저장소
의 변경사항을원격 저장소
에 적용한다.Pull
:원격 저장소
의 변경사항을 확인하고 변경 내역이 있는 경우로컬 저장소
로 가져와 적용한다.Fetch
:원격 저장소
의 변경사항을 확인하지만, 실제 파일을 가져와 적용하지는 않는다.
HEAD
저장소
에 최신 버전으로확정
된 상태.- 코드를 수정하다가 수정한 파일을 전부 되돌려야 할 경우 별도의 매개변수가 없으면
HEAD
로 되돌려준다. 로컬 저장소
의HEAD
와원격 저장소
의HEAD
는 다름.로컬 저장소
에서 수정한 내역을Commit
후Push
하지 않은 경우원격 저장소
에는 반영되지 않았기 때문임.- 반대로
원격 저장소
의 내용을Pull
하지 않았을 경우에도 다름
BIG
'ETC > Git' 카테고리의 다른 글
Git 입문자 안내서 - 02 : Github에서 받아오기 (0) | 2024.01.05 |
---|---|
Git 입문자 안내서 - 01 : 설치하기 (0) | 2024.01.04 |
[Docker] Gitea로 나만의 Git 구축하기 (2) | 2022.03.03 |
[Synology] Git Server / Gogs로 나만의 Git 구축하기 (0) | 2021.07.23 |
[Discord] 웹훅으로 GitHub 로그 받기 (0) | 2020.09.16 |