본문 바로가기
Git

[Git, github] Git 시작하기 (1)

by 아마도개발자 2023. 11. 25.

아마도 깃은 협업에 있어서 가장 중요한 개념이라고 생각한다. 하지만 사용하는데 분명히 난이도가 있고, 양 또한 많다.

깃을 처음 접하는 사람도 기본적인 협업이 가능한 정도로 깃을 다룰 수 있는 것을 목표로 깃 시리즈 포스팅을 시작한다.

 

Git 이란?

 

  • 깃(Git)은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 스냅샷 스트림 기반의 '분산 버전 관리 시스템'이다.

 

 

Git 장점

  • 오프라인 작업이 가능하다. Git은 저장소를 일단 로컬에 복제하고, 로컬 저장소에 있는 히스토리도 그대로 유지되므로, 서버에서 새 자료를 받아올 수 없을 뿐이지 이외에는 오프라인 상태에서도 대부분의 형상관리 기능을 이용할 수 있다. 
  • 속도가 빠르다. 각각의 개발자들이 모두 분산처리 서버의 주인이 되는 셈이므로 서버가 직접 해야 될 일들이 많이 줄어든다.
  • 일시적인 서버 장애가 있어도 개발을 계속할 수 있다. 로컬 저장소를 이용하면 되기 때문.
  • 가지치기(branch)가 비교적 가볍다. Git은 브랜칭이 매우 쉽고 가벼워 원하는 만큼 별 제약 없이 생성하고 삭제할 수가 있다. 
  • 병합(merge)에서 문제가 덜 발생한다. 서버의 자료를 가져와(fetch) 로컬에서 병합하고 이를 다시 올리는 형태이기 때문. 
  • 스테이징을 지원한다. 커밋하기 전에 사용해야 하는 스테이징 단계가 따로 있어 스테이징을 통해 파일을 선택적으로 커밋할 수 있다는 장점이 있다.

 

 

Git 구조

 

 

 

Git 용어 정리

    • Working Directory: 변경된 파일이 저장되는 영역. 작업 중인 파일이 위치하는 곳으로, 파일의 변경 내용이 실시간으로 반영된다. (작업 공간)
    • Staging Area: 커밋을 준비하는 영역. 워킹 디렉토리에서 변경된 파일 중 커밋하고 싶은 내용을 선택해 추가할 수 있다.(커밋 선별 공간)
    • Local Repository: Local. 즉 현재 사용하는 PC, 노트북 등의 장치에 존재하는 저장소입니다. 
    • Remote Repository: Local에 위치하지 않는 저장소. ex) Github Repository
    • Checkout: 특정 시점이나 Branch로의 이동을 의미, Checkout을 통해 과거 여러 시점으로 혹은 다른 branch로의 이동이 가능하다.
    • Add: Working Directory안의 변경내용이 있는 untracked 파일들을 Staging Area에 추가하기 위해 사용한다.
    • Commit: 프로젝트의 어느 한 상태(시점)을 Capture한 것이다. 그 시점의 프로젝트 파일들을 묶어 snapshot을 찍고 git에 변경 사항과 그 시간을 저장할 수 있다.
    • Push:  로컬 저장소의 변경 사항을 원격 저장소로 업로드하는 작업
    • Pull: 원격 저장소의 변경사항들을 로컬 저장소로 가져와 소스코드를 Merge하는 작업 (Fetch + Merge가 동시에 이루어진다)
    • Fetch: 원격 저장소에 있는 변경 내용들을 확인 하기위해 사용하는 명령어. 커밋, 파일, 참조등을 로컬 저장소에 다운로드한다.( 변경된 소스코드 내용을 가져오지 않는다. 즉, 현재 상태에 영향을 미치지 않음)
    • Merge: 두 개이상의 branch를 하나로 합치는 작업. 각각의 branch의 히스토리가 보존된다.

 

 

깃에서 필요한 가장 기본적인 개념을 알아보았다. 다음장에서는 Git을 사용하기 위해 로컬 레포지토리와 원격 레포지토리를 연동하는 방법을 알아보겠다.

 

2023.11.25 - [Git] - [Git, github] Git 시작하기 (2)