▷ 오늘 학습 계획: Git 강의(1~2)
Configuration Management Systems
Version Control Systems
- Source Data + History
- 협업, 작업추적, 복구 등이 가능
- Source Folder, 실행파일을 버전별로 카피하여 관리
- Local Version Control Systems
내 컴퓨터에서 버전 관리, 협업은 어려움- Centralized Version Control Systems
협업 가능, commit 하는 순간 배포, 인터넷이 안되면 작업 불가
자신만의 version history를 가질 수 없음- Distributed Version Control Systems
commit 하더라도 개인저장소 내에 적용됨(자신만의 version history)
원하는 순간에 배포(Push) 가능, 오프라인에서도 작업 가능
CVCS → CVS, SVN 등
- CVS
1980년대 만들어진 형상관리 시스템
commit 중 오류 발생 시 Rollback 이 되지 않는 등의 문제
SVN 으로 대체됨- SVN
2000년대 만들어짐DVCS → Mercurial, Git 등
- Git
SVN 보다 빠른 속도와 많은 기능
- Git 설치 확인
Git Bash 실행, git --version 입력해서 버전 정보 나오는지 확인
git config --global user.name <username> git config --global user.email <email> git config --global core.autocrlf true git config --global core.editor <editor> git config --list # 전체 설정 확인 git config user.name # username으로 설정한 내용 확인
- CRLF: 가져올 때는 LF를 CRLF로 변경, 보낼때는 CRLF를 LF로 변경
Repository (Local Repository, Remote Repository)
소스코드가 저장된 Branch가 모여있는 디스크상의 물리적인 공간
Checkout
특정 시점이나 Branch의 소스코드로 이동하는 것(Branch, Commit, Tag)
과거 여러 시점의 코드로 이동 가능Stage
작업할 내용이 올라가는 임시 저장 영역
작업한 내용중 commit에 반영할 파일만 선별할 수 있음Commit
작업할 내용을 Local Repository에 저장하는 과정
각각의 commit은 의미 있는 변경단위
변경에 대한 설명을 commit log로 남긴다.Tag
임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표
Tag가 붙은 commit은 tag name으로 쉽게 checkout 가능Push
local repository 내용 중에 remote repository에 반영되지 않은 commit을 remote repository로 보내는 과정(Push하는 순간 다른 개발자들에게도 영향을 준다)
Pull
Remote repository 내용 중에 local repository에 반영되지 않은 내용을 가져와서 local repository에 저장하는 과정
다른 팀원이 변경하고 push한 내용을 가져올 수 있음
- push 과정에서 conflict → pull을 통해 remote repository의 변경 내용을 local repository에 반영하여 conflict를 먼저 해결하고 push 재시도
Branch
특정 시점(commit 단위)에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것
개발의 주축이 되는 branch를 master branch 또는 main branch라고 함
모든 branch는 최종적으로 다시 master branch에 merge되는 형식으로 진행Merge
Branch의 반대 개념으로 하나의 Branch를 다른 Branch와 합치는 과정
Merge 되는 두 Branch는 주종관계 성립
- Merge 과정에서 conflict → Diff를 수정하여 conflict 해결 뒤에 merge
▷ 내일 학습 계획: Git 강의(3~4)