Git 이 뭐야?? 🧐
Git 은 소스 코드를 관리하기 위한 분산 버전 제어 시스템이다. 버전 제어 시스템은 사용자가 파일을 수정할 때 변경 사항을 기록하고 저장하므로 언제든 이전 버전의 작업을 복원할 수 있다.
개발자들은 기능을 추가하거나 수정하는 작업이 많기 때문에 Git을 활용하여 편리하게 버전을 관리한다. Git을 사용하면 팀 프로젝트로 여러 팀원들이 동시에 작업을 하여도 누가, 언제, 무엇을 했는지 확인할 수 있기 때문에 문제가 발생하여도 쉽게 파악하여 해결할 수 있다.
Git의 버전 관리
이에 대한 내용은 아래 링크에서 그림에 빗대어 너무 잘 설명되어 있어서 참고하면 좋을 것 같다.
[GIT] ⚡️ git 개념 & 원리 (그림으로 알기 쉽게 비유 😃)
Git 기본 동작
Working Directory
로컬(Local), Working Copy 라고도 불린다.
현재 프로젝트 폴더에 존재하는 파일들 그 자체를 의미한다.
Staging Area
인덱스(Index), Cache 라고도 불린다.
커밋(Commit) 하기 전, git add
명령어로 추가한 파일들이 임시로 저장되는 공간이다.
Stating Area 에 추가된 파일들의 변경 이력이 추적이 된다.
커밋행 버스라고 생각하면 편하다. git commit
을 할 파일들이 탑승(임시 저장)하는 공간이다.
Local Repository
본인의 컴퓨터에 저장된 로컬 버전의 프로젝트 저장소.
커밋된 변경 이력들이 저장되는 로컬 저장소이다. 변경 사항들은 브랜치(Branch)와 같은 구조로 저장된다.
Remote Repository
로컬 repository와는 반대로 내 컴퓨터가 아닌 (일반적으로 원격 서버) 버전의 프로젝트 저장소.
로컬 저장소의 변경 이력들을 공유하기 위한 원격 저장소로 Github 등의 서비스를 통한 온라인상의 저장소를 말한다. git push
를 통해 로컬 저장소 내용을 원격 저장소로 보낼 수 있으며, git pull
로 원격 저장소에 있는 내용을 로컬 저장소로 가져올 수도 있다. Remote Repository를 통해 다수의 사용자와 함께 작업할 수 있는 협업 환경을 제공한다.
단순히 Repository 라고 말하고 사용하는 경우가 많은데 Repository 가 Local Repsoitory와 Remote Repository로 나뉜다.
Fork vs Clone
Fork 란?
fork 는 다른 사람의 Github Repository에서 내가 어떠한 기능을 수정하거나 추가하고 싶을 때 해당 Repository를 내 Gitgub Respository에 그대로 복제하는 기능이다. fork 한 저장소는 원본(원래 Repository 주인)과 연결되어 있다. 여기서 연결되어 있다는 의미는 원래 Repository에 변화가 생기면(원래 주인이 새롭게 commit, push 한 경우) 이는 그대로 fork 된 내 Repository로 반영할 수 있다(이때 fetch, pull의 과정이 필요함).
fork 한 Repository 를 변경하고 원본 레포지토리에 적용하고 싶으면 원본 저장소에 pull request(PR)를 보내야 한다. pull request 가 original repository의 관리자로부터 승인되었으면 내가 수정한 코드가 commit, merge 되어 원본 레포지토리에 반영된다. pull request 하지 전까지는 내 github에 있는 fork 한 repository 에만 변경사항이 적용된다.
Clone 이란?
- clone 이란 원격 Repository 와 나의 로컬 PC를 연결해 데이터를 가져오는 기능이다.
- 내가 생성한 원격 저장소를 내 컴퓨터와 연결해서 데이터를 복사하는 작업
- 원격 저장소를 내 컴퓨터와 연결해서 데이터를 복사하는 작업
앞서 설명한 Fork 는 원본 Repository를 내 Repository에 복재하는 기능이고 clone 은 이러한 Repository를 내 로컬 PC와 연결하는 기능이다.
clone 한 프로젝트는 원본 repository 의 로그를 볼 수 없다. 권한이 없는 경우 내 로컬에서의 변경 사항을 원본 repository로 push 또한 할 수 없다.
🌐 Reference
'개발 스토리' 카테고리의 다른 글
MVC 패턴에 대해, 그리고 이를 지키는 규칙 (2) | 2023.10.21 |
---|---|
레코드(record) 누구냐 넌? (2) | 2023.10.20 |
JAVA 8 버전으로 변경 (MAC M1, intelij) (0) | 2023.09.08 |
Spring Boot 기본 클래스 " "을(를) 찾거나 로드할 수 없습니다. (0) | 2023.08.29 |
[GITHUB] 디폴트 브랜치 변경(바뀐 방법) (0) | 2023.08.24 |