Git 이란
Git은 SVN 이후로 가장 많이 사용되는 형상관리 툴이다. (Git과 SVN 차이)
깃(Git /ɡɪt/)은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다. 기하학적 불변 이론을 바탕으로 설계됐고, 분산 버전 관리 시스템으로서 빠른 수행 속도에 중점을 두고 있는 것이 특징이며 데이터 무결성, 분산, 비선형 워크플로를 지원한다.
Git을 활용하여, 로컬에서 자신의 개발 소스에 대한 섬세한 관리가 가능하고, Remote Repository (원격 저장소)에 영구적인 백업과, 다양한 협업이 가능하도록 지원하는 기능을 가리킨다.
Git의 대표적인 서비스를 지원하는 회사로 GitHub와 GitLab이 있다.
Git hub 와 Git Lab
GitHub는 Git 저장소로 무료 서버저장소를 지원하기 때문에 많은 사람들이 이용하는 서비스이다.
GitHub는 무료로 이용하는 대신 자신의 소스코드가 오픈되어 수많은 사람들이 보며 활용 가능하고, 익명의 개발자와 함께 작업할 수 있도록 하여 프로그래밍을 더욱 확산시켜주는 환경으로 자리하고 있다.
반면, GitLab은 수많은 기업에서 보안성을 중시하는 프로그램 코드를 올려 함께 협업하는 툴로, 자신의 서버에 설치하여 서버 내 프라이빗한 Git 원격 저장소를 만들 수 있는 서비스이다.
Git 구조
출처 : UX공작소
출처 : velog
자신의 로컬PC에서 소스파일을 작업하는 공간을 Working Directory 또는 Local Repository 라고한다.
여기서 GitHub, GitLab는 원격 저장소(Remote Repository)이다.
Git 용어
용어 | 내용 |
Repository (저장소) |
|
git clone |
|
git add |
|
git status |
|
git commit |
|
git push |
|
git merge |
|
get checkout |
|
Git 작업 순서
Git을 운영하는 순서 중 가장 많이 사용되는 순서인 원격저장소의 파일을 로컬로 다운로드 받아서 작업 후 다시 업로드 하는 예시를 살펴보자.
1. 서버에서 Clone해오기
원격저장소에서 Clone하는 것과 그냥 다운로드 하는 것은 다릅니다.
- Download ZIP : 그냥 순수하게 파일들만 압축해서 다운로드 되어 집니다.
- Clone 주소복사 : Clone은 순수파일들과 이 프로젝트의 커밋되었던 히스토리 정보까지 모두 다운로드가 되어 로컬저장소(Local Repository)를 만들어 줍니다.
git clone
서버에서 파일을 Clone 하게 되면 내 컴퓨터의 지정된 폴더에 .git
이라는 숨겨진 폴더가 생성되고 이 .git
폴더를 가지고 있는 폴더가 작업 폴더(Working Directory)가 됩니다. 이 작업 폴더는 자동으로 서버와 링크가 맺어지게 됩니다.
이 .git폴더가 사실 로컬저장소의 역활을 하는 중요한 폴더로서 서버와의 링크 정보와 변경된 히스토리 정보를 모두 가지고 있는 폴더 입니다. 이 폴더를 사람이 수정하거나 추가/삭제를 할 필요가 없습니다. Git에서 알아서 운영합니다.
git clone <저장소 url>
2. 작업 폴더(Working Directory) 구성
작업폴더는 관리(추척)가 되는 파일과 관리(추적)되지 않는 파일로 나누어져 있습니다. 관리(추적)가 된다는 것은 이 파일의 생성, 수정, 삭제 등의 히스토리 정보를 모두 가지고 있다는 뜻입니다.
파일관리(추적)의 상태
추적은 바로 이전의 커밋을 깃점으로 아래의 4가지 상태로 관리됩니다.
- 추적안함 (Untracked) : 관리대상이 아님
- 추적함(Tracked)
- 수정없음 (Unmodified) : 변경이 없는 파일
- 수정함 (Modified) : 변경된 파일
- 스테이지됨 (Staged) : 스태이지에 올라간 파일
git add
작업 폴더에 처음 파일을 생성한다면 이것은 아직 관리(추적)대상이 아닙니다. 관리대상이 아닐 경우는 아무런 히스토리 정보를 가지고 있지 않습니다. 이제 이 파일을 관리대상으로 삼기 위해서는 git add
명령어를 실행해 줘야 합니다. git add 명령어를 실행하면 이 파일이 스테이지(Staging Area) 로 올라가게 됩니다. 이제부터 이 파일의 수정, 삭제 등의 모든 정보는 Git에 기록이 되어집니다.
파일의 상태는 추적안함 (Untracked), 수정함 (Modified) 이 스테이지됨 (Staged) 으로 변경됩니다.
git add <파일 이름> // 특정 파일만 추가하기
git add . // 모든 파일을 추가하기
git commit
이제 스테이징된 파일들을 로컬 저장소(Local Repository)로 등록을 해야 합니다. 그러게 위해서는 git commit
을 해야 합니다. git commit
을 하면 현재 스태이징된 파일들을 그대로 스냅샷으로 찍어서 로컬 저장소(Local Repository)에 보관하게 됩니다. 이 스냅샷이 하나의 히스토리 기록이 되는 것입니다. 이 기록을 기준으로 과거로 되돌아갈 수도 있고 미래로 갈 수도 있고 다른 브랜치로도 이동할 수 있는 기준점이 됩니다.
파일의 상태는 스테이지됨 (Staged) 이 수정없음 (Unmodified) 으로 변경됩니다.
copy bashgit commit -m "참고할 설명 작성"
git push
git commit
으로 로컬 저장소(Local Repository)에 스냅샷을 찍어 이용하는 것은 내 컴퓨터에서만 가능한 상태입니다. 이것을 서버에 올려서 다른 사람들과 공유를 하기 위해서는 원격 저장소(Remote Repository)에 업로드를 해야 합니다.
그 명령어가 git push
입니다. git push
를 하면 로컬 저장소의 커밋(git commit)된 모든 내용이 그대로 원격 저장소로 올라갑니다.
git pull
원격 저장소에 올라온 최신 수정본 파일을 내 로컬 저장소로 업데이트를 해야 할 필요가 있습니다. 그때 필요한 명령어가 git pull
입니다. 일단 한번은 서버와 링크가 맺어있어야 실행이 됩니다. 또는 git fetch
명령어를 사용할 수도 있습니다.
이렇게 가장 기초적인 git의 구조와 명령어를 설명했습니다
출처
'SCM > Git + Github' 카테고리의 다른 글
[Git] 자주 사용하는 Git 터미널 명령어 모음 (0) | 2023.10.08 |
---|---|
[Git/GitHub] Git Merge 와 GitHub Merge (0) | 2023.05.17 |
Git과 SVN 특징 및 명령어 비교 (0) | 2022.05.29 |
[Git] Git GUI Fork 다운로드 및 시작하기 (0) | 2022.05.28 |
[Git] Git GUI 소스트리(Soure Tree) 다운로드 및 설치하기 - ① Setup (0) | 2022.05.04 |
댓글