7일차 Git 특강과 관련된 전공 시간에 배웠던 내용을 추가로 정리하였습니다.
Git
Git
git-scm.com
- fast version control system
- 분산 VCS - 팀 공유 작업에 최적화된 도구
- 누가 언제 무엇을 수정하였는지 tracking - content (not file) oriented
- 수정된 내용을 되돌릴 수 있음
- Local / Remote Repository
Git은 어떤 점에서 분산 시스템이라고 하는가?
중앙 버전 제어 시스템은 하나의 중앙 repository를 가지고 있으며, 각 사용자는 중앙 repository로부터 파일을 check out 하고 수정 후에 중앙 repo로 변경 사항을 제출합니다.
반면에 Git에서는 각 사용자는 repository를 clone 하여 자신의 지역 repo에서 수정 작업을 수행한 다음에 원격 repo로 수정 사항을 올림으로써 각 사용자들의 각 수정 사항이 서로 다른 commit ID를 가지고 버전 제어가 되도록 합니다. 즉, 각 사용자가 로컬에 독립적인 Repository를 가지고, 중앙 Repository와 상호작용 없이도 작업이 가능하기 때문에 분산 버전 제어 시스템이라고 합니다.
Git structure
주요 명령어
- 로컬 저장소 생성
git init
- add: 변경 내용을 스테이징 영역에 추가
git add <파일명>
- commit: 변경 내용을 저장소에 기록
git commit -m "커밋 메시지"
- push: 로컬 변경 사항을 원격 저장소에 업로드
git push origin main
- pull: 원격 저장소의 변경 사항을 로컬로 가져오기
git pull
- clone: 원격 저장소 복제
git clone <저장소 URL>
- branch: 새로운 브랜치 생성
git branch <브랜치명>
- merge: 현재 브랜치에 다른 브랜치의 변경 사항을 병합
git merge
- checkout: 특정 브랜치로 이동
git checkout <브랜치명>
merge vs rebase
- Merge : 기존 브랜치 히스토리를 유지하고 병합 커밋 생성
- Rebase : 직선형 히스토리를 생성하며 기존 히스토리를 재작성
Git vs Github
- Git과 Github는 version control 소프트웨어(git)와 remote repository 웹서비스(github)
- Github를 사용하면 사용자의 클라이언트 기계(PC)에서 직접 사용자의 github 계정 안의 repository에 파일을 올려 놓거나 다운 받을 수 있으며 사용법은 매우 직관적이고 쉬움
- clone : remote repo에서 자신의 local repo로 복제
- fork : 다른 github 계정의 repo를 자신의 github 계정으로 복사(github의 편의 기능)
git fetch origin - 동기화
- fetch는 commit point 오브젝트와 실제 data를 local repo로 가져오되 아직 local working directory의 파일 시스템에는 반영시키지 않음
- 사용자가 필요에 따라 merge 명령을 사용해서 local working directory에 반영
- pull 명령어를 사용해 fetch+merge를 동시에 할 수 있으나 fetch 한 다음에 확인 후 merge하는 것을 권장
'내일배움캠프 > TIL' 카테고리의 다른 글
[내일배움캠프 Day9] 포인터 (0) | 2024.12.27 |
---|---|
[내일배움캠프 Day8] C++ 과제 진행 (1) | 2024.12.26 |
[내일배움캠프 Day6] C++ 프로그래밍 기초 (0) | 2024.12.23 |
[내일배움캠프 Day5] 콜리전 수정하기 (2) | 2024.12.20 |
[내일배움캠프 Day4] 플레이어 이동하기 (2) | 2024.12.19 |