코드 스테이츠 4일차
Git 의 탄생배경
개발자의 코드를 효율적으로 관리하기 위해서 개발된 '분산형 버전 관리 시스템'이다.
Linux OS 제작자이자 Git제작자 리누스 토르발즈는 Git을 출시하면서 '지옥에서 온 문서 관리자' 라고 소개했다. 그는 Linux OS를 제작할 때 26년 동안 2천만줄이 넘는 소스코드를 1만명이 넘는 소프트웨엔지니어들과 함께 오픈소스 방식으로 작성하며 관리했다고한다. 체계가 없이 진행되는 과정들이 매우 비효율적인 환경이였고, 이 과정에서 경험했던 지옥을 해결하기 위해 버전관리, 백업, 그리고 협업과 관련된 기능을 담아 Git이 탄생한 것이다.
Git이란?
쉽게 말하면 파일을 관리해주는 프로그램이다. 여기서 말하는 파일관리란 아래의 3가지를 의미한다.
- 파일의 변경 사항을 추적하며, 사용자가 각 파일의 버전을 관리할 수 있게 도와줍니다.
- 파일을 백업할 수 있게 해줍니다.
- 협업자들과 함께 파일을 공유하고, 각자의 작업물을 취합할 수 있게 해줍니다.
Git 과 Github의 차이점
Git은 소스코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템이다.
Github은 Git Repository를 관리할 수 있는 클라우드 기반 서비스이다.
Git으로 버전을 관리하는 폴더에 대해서 Github을 통해 여러 사람들이 공유하고 접근할 수 있는것이다.
Github는 한마디로 개발자들의 SNS이다. Github에서 코드 리뷰등 협업이 가능하고, 수많은 오픈 소스 프로젝트들이 Github로부터 호스팅되고 있어서, 누구든지 자유롭게 기여가 가능하다.
Git 파일의 상태
Git 파일의 상태는 크게 Tracked와 Untracked로 나뉘며, Tracked는 다시 Unmodified, Modified, Staged로 나뉜다.
- Untracked - 파일의 상태가 추적되고 있지않은 상태
- 파일의 내용을 변경하여도 Git이 파일의 내용 변경을 감지하지 못한다.
- commit 과정을 거치면 Tracked 상태로 바뀐다.
- Tracked - 파일의 상태가 추적되고 있는 상태
- 파일을 수정하면 Git이 파일의 변경 내용을 감지한다.
- Tracked 파일은 다시 Unmodified, Modified, Staged 로 나누어 진다.
- Unmodified : 파일의 수정이 Git에 의해 감지되지 않은 상태
- Modified : 파일의 수정이 Git에 의해 감지된 상태
- Staged : 파일이 Staging area에 존재하는 상태
Staging area 란?
Local repository에 저장할 파일들이 임시로 대기하는 영역. 일반적으로 Git을 활용하여 작업을 할 때는 Work space에서 작업을 마친 파일을 Staging area로 옮겨서 모아두고, 추후 어느 정도의 단위 작업이 끝나면 Staging area에 모인 파일들을 한 번에 Local repository로 저장한다.
Git 협업 과정
1. 먼저 사용하고자 하는 디렉토리 및 파일을 생성한다
2. Git으로 파일 관리를 시작한다 (Git 초기화) : git init
3. 파일들의 상태를 확인한다 : git status
4. Staging area로 파일을 이동시키기 : git add
5. 파일을 Local repository에 저장하고 버전을 기록하기 : git commit
6. Commit 내역 확인 : git log
7. Remote repository 연결하기 : git remote add (원하는_이름) [복사한_원격_저장소 URL]
8. 작업물을 업로드하기 : git push (7에서 설정한 이름) (브랜치 이름 ex) main, master)
Remote Repository의 코드를 로컬로 복사해오기 : git clone [복사한 url]
'코드 스테이츠' 카테고리의 다른 글
코드 스테이츠 4/18 - Java 기초 2 (0) | 2023.04.18 |
---|---|
코드 스테이츠 04/17 - Java 기초 1 (0) | 2023.04.17 |
코드 스테이츠 4/13 - CLI (리눅스, Ubuntu) (0) | 2023.04.13 |
코드 스테이츠 4/12 - 웹 (0) | 2023.04.12 |
코드 스테이츠 4/12 - 컴퓨터와 프로그래밍의 이해 (1) | 2023.04.12 |