▶CodeStates Back-End/Section 1

TIL [0503] Git

휴학생감자 2022. 5. 3. 18:07

 

형상 관리

: 소프트웨어의 생명주기 동안 발생하는 변경 사항을 체계적으로 관리하여 소프트웨어의 품질 보증을 향상시키는 관리 활동

 

대표적인 형상 관리 도구에는 CVS, SVN, Git 등이 있으며,

소스 코드나 문서의 버전 관리, 이력 관리, 추적 등 변경 사항을 체계적으로 관리할 수 있는 기능을 제공한다.

 


 

Git

리누스 토발즈가 2005년 리눅스 커널의 개발을 위해 만든 형상 관리 시스템이자 버전 관리  시스템

분산 저장소 방식으로 각 PC 스스로가 완전한 저장소가 되며, 필요에 따라 중앙 집중형 방식으로도 운영 가능함

 

주요 기능

☆ 로컬/원격 형상 관리 : Commit, Check-out 등 로컬 환경에서의 기능과 Push, Pull 등 원격 환경에서의 기능을 제공함

☆ 이관 기능 : commit 실패 시 rollback을 할 수 있음

 

장점

☆ repository의 완전한 복사본을 로컬에 저장할 수 있음

☆ 로컬 저장을 통해 오프라인 작업이 가능함

☆ 일시적인 작업에 대한 이력 관리가 쉬움

 

단점

☆ 대용량의 코드 관리에는 상대적으로 부적절함

 

 

Github

Git repository를 관리할 수 있는 클라우드 기반 서비스

여러 사람들이 공유하고 접근 가능한 환경이라고 볼 수 있음

 

github에 공개된 오픈 소스에는 누구나 자유롭게 기능 추가 및 개선이 가능하며,

이 과정을 'contribute'라고 함. 

 


 

Git repository는 remote repository와 local repository 두 종류의 저장소를 제공한다.

 

Remote Repository

원격 온라인 서버 상의 저장소로 여러 사람이 함께 공유할 수 있다.

 

Local Repository

내 컴퓨터의 저장소로 개인 전용 저장소이다.

크게 Untracked area와 Tracked area의 2가지 영역으로 구분된다.

 

# Untracked area : git이 관리하지 않는 영역

 

# Tracked area : git의 관리를 받는 영역

       - Unmodified : 기존에 commit했던 파일을 수정하지 않은 상태

       - Modified : 기존에 commit했던 파일을 수정한 상태

       - Staged : commit이 가능한 상태

 

 

 

[작업 workflow]

[출처] 코드스테이츠 git 기초

 

 

① Fork

다른 remote repository에서 나의 remote repository로 가져오는 과정

github 사이트에서 작업을 수행하며, 이때 내 계정에 들어온 프로젝트가 나의 remote repository가 됨.

 

② Clone

코드를 수정하기 위해 remote repository에서 나의 local repository로 가져오는 과정

git clone [repository 주소]

 

③ Add

작업 중인 파일들을 git의 관리하에 두기 위해 staging area로 올려주는 과정

staging area에 있는 파일은 staged 된 파일이라고 함.

git add [파일명] / git add . (all)

 

④ Commit

변경 사항을 기록으로 남겨두기 위해 작업한 파일을 local repository로 올려주는 과정

git commit / git commit -m '관련 코멘트'

 

⑤ Push

나의 local repository에서 remote repository로 올려주는 과정

git push origin branch

(origin은 사용자가 설정한 이름이며, branch는 상황에 따라 main, master 등으로 사용됨.)

 

⑥ Pull Request

push한 변경 사항에 대해 함께 작업하는 다른 사람들에게 알리는 과정

github 사이트에서 작업을 수행함.

 

 


 

<명령어>

 

git status

staging area와 untracked files 목록을 확인할 수 있음.

 

git restore [파일명]

커밋되지 않은 local repository의 변경 사항을 폐기하며, 처음 clone 된 상태로 되돌아 감.

 

git reset HEAD^

커밋은 했으나 remote repository에 올라가지 않았을 때 작업을 취소함.

(여러 개의 커밋을 취소할 때는 ^의 개수를 해당 커밋만큼 작성)

 

git log

커밋 기록을 확인함.

 

git init

내 컴퓨터의 특정 디렉토리를 local repository로 변환하거나, 새로운 repository 초기화에 사용함.

 

git remote add origin [repository 주소]

나의 local repository와 remote repository를 연결함.

 

git remote add [상대방 이름] [상대 repository 주소]

같이 작업하는 상대를 remote repository에 연결함.

 

git remote -v

현재 repository에 연결된 모든 remote repository 목록을 확인할 수 있음.

 

git pull [상대방 이름] master

상대방의 remote repository에 있는 작업 내용을 받아와서 자동으로 병합함.

(master 대신 main, branch 이름 사용 가능)

 

git status

파일에 충돌이 일어난 부분을 확인할 수 있음.(주로 병합 시 발생하는 상황 확인)

Accept Current Change / Accept Incoming Change / Accept Both Changes / 직접 수정의 옵션 중 한가지를 선택하여 수정함.

 

 

 

 

 

 

 

'▶CodeStates Back-End > Section 1' 카테고리의 다른 글

TIL [0506] 제어문  (0) 2022.05.12
TIL [0504] Java  (2) 2022.05.10
TIL [0502] Linux  (0) 2022.05.03
TIL [0427] HTML, CSS  (4) 2022.04.28
TIL [0426] 컴퓨터의 정의  (2) 2022.04.27