-
Git) 버전관리 및 기본개념Git 2023. 3. 23. 01:09
버전관리 시스템(형상관리)
- Configuration Management Systems / Version Control Systems
- Source Data + History
- 협업, 작업추적, 복구 등이 가능
버전관리 시스템의 종류
중앙관리(CVCS) - CVS, SVN, ...
분산관리(DVCS) - Mercurial, Git, ...
Git 기본 용어
- Repository : 소스코드가 저장되어 있는 여러 개의 branch가 모요있는 디스크상의 물리적 공간(local, remote로 구분)
- Checkout : 특정 시점이나 branch의 소스코드로 이동 (checout 대상: branch, commit, tag)
- Stage : 작업할 내용이 올라가는 임시저장영역 (이 영역을 이용하여 작업한 내용 중 commit에 반영할 파일만 선별하여 commit 수행)
- commit : 버전을 관리하는 것, 작업할 내용을 local repository에 저장하는 과정
(각각의 commit은 의미있는 변경단위, 변경에 대한 설명을 commit log로 남김 / 빌드 서버를 사용하는 경우, commit 단위나 commit log format을 정해놓은 회사나 팀도 있음)
- tag : 임의의 commit 위치 쉽게 찾아갈 수 있도록 붙여놓은 이정표 (tag가 붙은 commit은 commit id(version) 대신 tag name 으로 쉽게 checkout 가능)
- push : local repository 중, remote repository에 반영되지 않은 commit을 보내는 과정
(검증되지 않은 코드는 push하지 않도록 함)
- pull: remote repository에 있는 내용 중, local repository에 반영되지 않은 내용을 가져와서 저장하는 과정
(push과정에서 충돌이 일어나서 push가 거절된 경우, pull을 통해 remote 변경내용을 local에 반영하여 충돌 해결한 후 다시 push 시도해야 함)
- branch: 특정 시점(commit 단위)에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것
(개발이 주축이 되는 branch를 master(main) branch라고 함 / 모든 branch는 최종적으로 다시 main으로 merge되는 형식)
- merge : 하나의 branch를 다른 branch와 합치는 과정, merge되는 두 branch 는 주종관계가 성립
(merge 되는 과정에서 충돌 발생할 경우, Diff를 수정하여 해결)
💥 참고 - Line ending
WindowCR(\r) + LF(\n) / Unix or Mac : LF(\n)
윈도우와 맥 사용자가 같은 git repository를 작업할 때 코드에서 변경된 내용 없어도 CRLF 차이로 인해 commit 발생할 수 있음
-> 가져올 때는 LF를 CRLF로 변경하고 보낼 때는 CRLF를 LF로 변경
git config --global core.autocrlf true에디터 설정
git config --global core.editor <editor>설정 확인
git config --list항목별 설정 확인
git config <key>'Git' 카테고리의 다른 글
Git) Tag (0) 2023.03.28 Git) Merge / Conflict (0) 2023.03.28 Git) Log / Diff (0) 2023.03.28 Git) Branch (1) 2023.03.28 Git) Repository (0) 2023.03.24