오픈소스 프로젝트의 특징
- 여러 사람이 동시에 개발을 진행
- 개발 기능 및 코드의 양이 방대
- 파일/기능이 변경될 가능성이 높음
오픈소스 프로젝트의 문제점
- 하나의 코드/파일을 동시에 편집한다면?
- So, 버전 관리가 필요
Git
컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템
- Git은 리누즈 토발즈에 의해 개발됨.
( 아닛..? 이분은 리눅스를 개발하신분이 아니시던가.. )
분산 버전 관리
-
중앙 버전 관리(Subversion) vs 분산 버전 관리(git)
-
원격 저장소(Remote Repository) : 다수가 공유하고 있는 원격의 공용 저장소
-
로컬 저장소(Local Repository) : 개인만 사용하는 단독 저장소
-
로컬 저장소에서 개발하고 평가가 완료된 내용에 대해서 원격 저장소 저장
Git vs Github
Github
분산 버전 관리 툴인 깃(Git) 프로젝트를 지원하는 Internet hosting 서비스
사용자 이름 및 email 등록
- git config --global user.name NAME
- git config --global user.email EMAIL
터미널 색상 출력
- git config --global color.ui.auto
설정 확인
SSH key 생성 및 확인
- ssh-keygen -t rsa -C EMAIL
- cat ~/.ssh/id_rsa.pub
Github 설정
- Setting -> SSH and GPG Keys -> New SSH Key -> Key
- Title 입력
- Key 입력 (Copy & Paste)
Repository
- 생성한다음에
- Code 버튼 눌러서 SSH
- 복사
- git clone git@github.com:...
- cd ...
Git Status
Local Repository의 상태
- 2단계의 상태 정보를 가짐
- Working Directory : 저장소에 신규 파일 또는 업데이트 파일들이 있는 디렉토리
- Staging Area : 로컬 저장소에 저장하기 위한 임시 공간
( 선별적으로 로컬 저장소에 저장하기 위함 )
Working dir -> Staging Area
- git add [filename]
- git add --all / git add .
- 스토리지 상태 확인 : git status
Statging Area -> Working dir
Staging Area -> Local Storage
Commit 이력(log) 확인
Commit 했던 것을 수정하고 싶은 경우
누락된 파일을 새로 추가하거나 기존의 commit된 파일(직전의 commit에 한함)을 수정하고 싶은 경우
- git log
- git add printf.c
- git command --amend -m "메시지"
Local -> Remote Repository