Git 이란?
형상 관리 도구
Git은 형상 관리 도구 (Configuration Management Tool) 중에 하나입니다. 형상 관리 도구는 다른 말로 버전 관리 도구라고도 합니다. 형상 관리 도구는 기본적으로 과거 작업 내역과 현재 작업 내역, 그리고 변경점을 확인할 수 있도록 만들어진 도구입니다. 소프트웨어 개발에 필요한 소스코드를 효과적으로 관리할 수 있게 해주는 Free Software 중 하나입니다. Linux를 만들었던 리누스 토발즈(Linus Torvlads)에 의해 만들어졌습니다.
SVN와 Git의 차이점
SVN은 Git 이전까지 소스코드를 관리하는 대표적인 형상관리툴이었습니다. SVN 과 Git의 대표적인 차이점은 SVN은 중앙 서버 저장소에서 소스코드와 히스토리를 저장하는 형태이며, Git은 여러 서버 저장소와 여러 로컬 저장소에 분산해서 저장할 수 있다는 점입니다. 이를 다른 말로 분산형 관리 시스템이라고 합니다. 서버가 고장이 나더라도 로컬 저장소를 통해 중앙 저장소를 복구할 수 있습니다. Git은 소스코드 사본을 로컬에서 관리할 수 있기 때문에 로그를 파악할 때마다 인터넷을 통해 저장소에 접근해야하는 SVN 과는 달리 시간 효율측면에서 이득이 됩니다.
Git 사용 전에 알아야 할 것
local, remote 및 origin, upstream 의 이해
Git을 쓰기 전에 local, remote 를 모르면 Git을 쓸 수가 없습니다. 우선, local은 쉽게 말해 내 컴퓨터 안의 폴더입니다. Local Repository로 불리며, 저장소(Repository)로 인식되는 폴더(Directory)는 .git 이라는 숨김 폴더를 가지고 있습니다. local 환경만으로는 네트워크 통신이 필요하지 않은 상태입니다. 다음으로, remote는 쉽게 말해 원격 서버에 있는 저장소입니다. Remote Repository로 불리며, 소스코드를 저장하고 공유할 수 있는 원격 저장소를 제공하는 대표적인 서비스로 Github, GitLab, Bitbucket 등이 있습니다. remote 내에서도 내가 저장하고 관리하는 원격 저장소(origin) 과 여러 명이 관리하는 원격 저장소(upstream) 가 있습니다. 다시 말해, remote(upstream) 는 소스코드 원형이 기록된 서버 저장소, remote(origin) 는 원형을 복제해다가 만든 내 서버 저장소, local 은 remote(origin)을 토대로 내 PC에 저장해 놓은 저장소로 이해하시면 됩니다.
.git 폴더는 git init
명령어로 생성이 되며, remote 에 생성된 저장소(Repository)를 git clone
명령어를 통해 Local에 내려받았을 때에도 생성됩니다.
Git Status (파일 상태)
작업 중인 파일은 local에서 4가지의 상태를 나타냅니다. 위에 표기된 상태로는 Untracked, Unmodified, Modified, Staged 로 나누지만, 디테일한 설명을 위해서 각각 Untracked - New Files, Tracked - Unmodifed, Tracked - Modified, Tracked - Staged 하도록 하겠습니다.
폴더에 파일이 새로 생성되는 경우 Untracked - New Files 상태를 의미하며, Commit을 한 번이라도 실행하여 추적이 가능한 상태를 Tracked - Unmodified 상태라고 합니다. Working Directory 에서 파일을 수정이나 제거하는 경우 Tracked - Modified 상태로 변경이 됩니다. Untracked - New Files 및 Tracked - Modified 상태에서는 git add
명령어를 통해 Git에 반영 대기중인 Tracked - Staged 상태로 만들 수 있습니다. 이 상태에서 git commit
명령어를 통해 Git 저장소에 히스토리인 Commit 으로 반영되며, 반영된 파일들은 다시 Tracked - Unmodifed 상태가 됩니다.
Git Branch (브랜치)
A라는 작업과 B라는 작업을 동시에 작업하려 할 때, 어느 것을 먼저 작업하고 백업하고 다시 불러오고 할 것이 아닌 Branch 를 이용하면 여러 작업이 가능합니다. 독립적인 작업 공간을 만들 수 있다는 얘기입니다. 마지막 작업 지점인 HEAD 에서 A라는 Branch를 생성 및 작업을 하고 Commit을 한 이후(HEAD는 A 마지막 작업 지점으로 변경됨)에 작업 이전인 원래의 HEAD 위치로 돌아와서 B라는 Branch를 생성 및 작업을 하면 A 작업 내역과 B 작업 내역을 동시에 확인할 수 있습니다. 두 개의 작업한 Branch A와 Branch B를 하나의 Branch로 합치는 과정을 Merge라고 합니다. 필요에 따라 Branch A 에서 B를 가져와서 Merge를 할 수 있고, Branch B 에서 A를 가져와서 Merge 할 수도 있습니다.
Git 명령어에 대한 자세한 설명과 헷갈릴만한 내용들은 추가 포스트로 작성 예정입니다.
위 내용 중 어려운 부분은 코멘트 남겨주시면 답변드리겠습니다.
'Git' 카테고리의 다른 글
Git 기본 명령어 모음 (기초) (0) | 2022.08.18 |
---|---|
Git 팁 - Hook commit-msg 한글 문자열 길이 적용하기 (0) | 2020.07.31 |