기존 폴더에서 파일을 직접 관리하는 방식은 시간과 용량이 많이 소요되며, 파일의 변경 이력을 추적하기 어렵습니다. 이러한 문제를 해결하기 위해 버전 관리 시스템(VCS)이 등장했습니다.
VCS는 파일의 변경 이력을 데이터베이스에 저장하며, 변경된 부분만 추적하여 업데이트합니다. 이를 통해 이전 버전으로 쉽게 돌아갈 수 있으며, 파일의 변경 사항을 효율적으로 관리할 수 있습니다.
■ 1. 로컬 버전 관리 시스템 (Local VCS)
- 로컬 버전 관리 시스템은 주로 한 사용자가 자신의 컴퓨터에서 파일의 버전을 관리할 때 사용됩니다.
- 장점
- 간단하고 로컬에서 모든 변경 사항을 쉽게 관리할 수 있다는 점입니다.
- 단점
- 로컬에서만 관리되기 때문에 협업이 어렵습니다.
■ 2. 중앙 집중형 버전 관리 시스템 (CVCS)
- 중앙 집중형 버전 관리 시스템(CVCS)은 SVN(Subversion)과 같은 도구가 대표적입니다.
- 중앙 컴퓨터(C)를 두고, 사용자 A와 B가 중앙 컴퓨터에서 파일을 업로드하고 다운로드합니다.
- 중앙 서버에 모든 데이터베이스를 저장하기 때문에 모든 변경 사항이 중앙 서버에 기록됩니다.
- 장점
- 여러 사용자가 중앙 서버를 통해 파일을 공유하고 협업할 수 있습니다.
- 단점
- 사용자 B가 파일을 수정하고 중앙 서버에 업로드했을 때, 사용자 A는 이를 알지 못할 수 있습니다. 이로 인해 버전 충돌이 발생할 수 있으며, 협업 시 의사소통이 매우 중요합니다.
- 중앙 서버가 고장 나거나 데이터가 손실되면 모든 파일이 사라질 위험이 있습니다.
- 파일의 최종 버전만 기록되며, 이전 버전이 덮어쓰기로 교체됩니다.
■ 3. 분산 버전 관리 시스템 (DVCS)
- 분산 버전 관리 시스템(DVCS)의 대표적인 예로 Git이 있습니다.
- 이 시스템에서는 각 사용자가 로컬에서 모든 파일의 히스토리를 관리하며,
- 중앙 저장소에도 동일한 히스토리가 기록됩니다.
- 장점
- 중앙 서버뿐만 아니라 각 사용자의 로컬 저장소에도 모든 히스토리가 저장되므로,
- 중앙 서버에 문제가 생겨도 로컬 저장소를 통해 복구가 가능합니다.
- 파일의 각 버전이 개별적으로 관리되며, 모든 버전이 로컬 및 중앙 서버에 저장됩니다.
- 단점
- 로컬과 중앙 서버 간의 동기화가 필요하며,
- 일부 사용자가 최신 버전을 갖고 있지 않을 수 있습니다.
■ 4. Git의 기본 원리와 작업 영역
- Git은 분산 버전 관리 시스템으로, 다음과 같은 세 가지 주요 영역이 있습니다:
- 작업 영역(Working Directory)
- Git이 관리하는 폴더로, 사용자가 작업하는 파일들이 위치합니다.
- 인덱스 영역(Index)
- 변경된 파일이 기록되는 영역으로, 트리(Tree) 구조로 파일의 목차를 관리합니다.
- 기존 파일을 변경하면 index영역에서 기존 tree가 변경되지않고
- 새로운 tree가 생성되는데 기존 파일도 포함되어있다.
- 헤더 영역(Head)
- 커밋(Commit)된 기록이 영구적으로 저장되는 영역으로,
- 각 커밋은 고유한 해시값을 갖습니다.


■ 5. Git의 작업 과정
- Git 초기화
- Git으로 관리할 폴더를 선택하고
git init
명령어를 사용해 Git 폴더로 선언합니다.
- 변경 감지
- 폴더에 파일을 생성하거나 수정하면 Git이 이를 감지합니다.
- 변경 기록 추가
git add
명령어를 사용해 변경된 파일을 인덱스 영역에 추가합니다.- 인덱스 영역에는 파일의 트리 구조가 기록됩니다.
- 커밋:
git commit
명령어를 사용해 변경된 내용을 영구적으로 저장합니다.- 각 커밋은 브랜치(branch)로 관리되며,
- 커밋은 이전 트리 구조를 포함하고 새로운 트리 구조를 생성합니다.
■ 6. Git의 형상 관리(SCM)
- Git은 형상 관리를 통해 기존 파일의 내용을 안전하게 관리하며,
- 수정된 내용이 기존 트리 구조를 대체하지 않고 새롭게 기록됩니다.
- 이를 통해 모든 변경 사항이 추적 가능하고,
- 필요한 경우 언제든지 이전 상태로 복구할 수 있습니다.
■ 7. 기본 명령어 정리
■ 1. git init : 작업영역 설정

■ 2. git status : 작업영역의 변화 감지

■ 3. git add . : 변경된 파일을 전부 기록한다.
. 대신 직접 파일 이름을 적어도 된다.(git v add v .) v는 띄어쓰기 표기

■ 4. git commit -m “내용” : head에 옮긴다.

■ 5. git config list : 설정한 모든 것을 보여주어 바로 확인할 수 있다.

■ 6. git log :

■ 7. git config <key> : 명령으로 Git이 특정 Key에 대해 어떤 값을 사용하는지 확인할 수 있다.

■ 8. 기존 디렉토리를 Git 저장소로 만들기
버전관리를 하지 아니하는 기존 프로젝트를 Git으로 관리하고 싶은 경우 우선 프로젝트의 디렉토리로 이동한다. 이러한 과정을 처음 해보는 것이라면 시스템마다 조금 다른 점을 주의하자.
- Linux:
$ cd /home/user/my_project
- Mac:
$ cd /Users/user/my_project
- Windows:
$ cd /c/user/my_project
■ 9. git clone <url> : 프로젝트에 참여하거나 Git 저장소를 복사하고 싶을 때

Share article