많은 사람들과 협업, 많은 요청사항, 큰 규모 등 여러 상황이 발생할 수 있음
→ 제대로 관리가 안됨
그러기 위해서 버전관리 시스템!
버전 관리 시스템
파일의 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 읽어올 수 있는 시스템
- 각 파일을 이전 상태로 되돌릴 수 있어야함
- 프로젝트를 통째로 이전 상태로 되돌릴 수 있어야함
- 시간에 따라 수정 내용을 비교해 볼 수 있어야함
- 누가 문제를 일으켰는지 추적할 수 있어야함
- 누가 언제 만들어낸 이슈인지 알 수 있어야함
1.파일을 이전으로 돌리게 되는 경우
- 기능 변경 요청에 따라 수정했으나 요청이 철회된 경우
- 테스트 과정에서 수정된 사항에 문제가 발생하여 해당 내용을 일단 제외하기로 한 경우
- 수정이 잘못되어 재작업이 필요한 경우
- 특정 시점의 버전에서 문제를 확인하고 싶은 경우
2.특정 시점의 묶음이 필요한가?
Codeline: 특정 소스 코드 파일(ex: x.py)이 변하는 현상
Baseline: 특정 소프트웨어 시스템을 구성하는 소스 코드 파일들의 묶음
3.변경된 코드 현상
변경 사유에 대한 상세한 기록 필요!
4.거대한 규모는 소프트웨어 개발자만 ~~명!
문제가 발생한 코드를 변경한 개발자가 누구인지 알 수 있어야함
5.지속적인 변경 요청에 대한 관리 필요
이슈 트래킹 시스템과 연동하여 관리 (ex: slack, Jira, Trac, Bugzila)
이슈에 대한 피드백, 진행 상황 모니터링 등
Git
소스코드의 버전 사이를 오가는 기능을 제공하는 버전 관리 시스템
→ 버전 사이를 자유롭게 이동하며 새로운 소스코드를 추가, 삭제, 변경
전 세계적으로 수많은 개발자가 Git으로 협업하고 있음
Git으로 관리하는 프로젝트를 올려 둘 수 있는 저장소 & 사이트 존재
Github
Git 원격 저장소(호스팅 사이트) 중 하나
사용자 2,800만명으로 세계 최대 규모, 개인은 무료로 사용 가능
오픈소스 프로젝트
→ 누구든지 기여할 수 있는 공개 저장소 프로젝트. 이름,얼굴도 모르는 전 셰계 개발자와 협업 가능
→ Github에 소스코드를 공개 저장소로 올려두면 시간 공간의 제약 없이 현업 할 수 있음
Linux OS에 Git 설치하기
터미널에서 명령어를 통해 설치 & 버전 확인
# apt-get install git
# git --version
GUI 환경에서 Github
Git Cola 설치
# apt-get install git-cola
GitCola를 사용하여 GUI환경에서 Github 사용&활용
저장소 Repository
버전 관리를 하고 싶은 파일들과 이력을 모아둔 묶음 (폴더)
로컬 저장소: 내 PC에 있는 저장소
원격 저장소: 원격에 있는 서버에 만들어진 저장소
Step1. 원격 저장소 만들기
Github 사이트 로그인 후, 우측 상단 New 버튼을 통해 저장소 생성 (저장소 이름 변경)
- Public 저장소: 다른 사용자들이 볼 수 있음
- Private 저장소: 특정(권한이 있는) 사용자들만 볼 수 있음
- 라이선스: Public 저장소의 경우, 누구든 접근 할 수 있으므로 라이선스를 고려할 필요 있음 (향후 변경 가능)
Step2. 원격 저장소 확인
Step3. 저장소 복제 (원격→로컬)
원격 저장소를 내 컴퓨터에 저장할 디렉토리 선택 (username, password 인증 필요)
# mkdir [directory name]
Step4. 복제된 로컬 저장소 확인
저장소에 아무파일도 없어 비어있지만, 버전 관리를 위한 git 디렉토리가 숨김 상태로 존재
ls -al 로 확인 가능
Step5. 사용자 설정
Git Cola 메뉴: [File] → [Preferences]
Git은 누가 작업했느냐가 매우 중요! (Github User Name, Github 가입 이메일)
파일 추가
소스 코드만이 아니라 모든 종류의 파일 관리
ex) 설계 문서, 환경 설정 파일, 쉘 스크립트 등
로컬 저장소 디렉토리에 생성되는 파일 != 버전 관리 대상 파일
(그러나 대부분의 파일들이 버전 관리 대상)
버전 관리가 불필요한 파일
- 개발 툴에 의해서 생기는 설정 파일
- 컴파일 및 빌드 시 자동으로 생기는 파일
- 문서의 자동 저장 버전
- 빌드한 프로그램이 자동으로 만드는 파일
→ 이러한 파일들이 컴퓨터 환경 차이에 의해 지속적으로 변경될 수 있는데, 이 변경이 보관될 필요가 없음
Step1. 로컬 저장소에 파일 생성하기
터미널에서 README.md 파일 추가
파일 생성 후, 기본 상태는 Untracked
Step2. 파일 상태 변경하기
Untracked → Staged (파일 더블 클릭)
Stage (1단계: stage로 올리기)
디렉토리에 새로운 파일을 생성했을 때, 현재 변경된 내용 (파일 추가, 파일 변경 등) 중, 기록을 남길 대상을 선정
Step3. 커밋 Commit
commit Message 입력후, commit (2단계: commit)
커밋 메시지의 중요성
- 커밋 시, 남기는 메시지는 변경의 이유!
- 대충 남기게 되면, 결국 이전/이후 파일을 비교해서 변경의 이유를 유추해야함
- 각 조직마다 개발자의 개인 역량에 따른 차이를 보완하기 위해 메시지의 포맥을 지정해두기도 함
Step4. 커밋된 파일 확인
[View] → [File Browser]
file 오른쪽 마우스 클릭 → [View History]
Commit은 로컬 저장소에만 이력을 남긴 상태 → 푸쉬를 해야됨
Step5. 푸쉬 Push
[Actions] → [Push]
Github 가입시, Username, password 입력
Public repository 이므로 원격 저장소를 clone 할 때는 계정 정보가 필요하지 않음
원격 저장소에 변경을 하고자 할 때는 변경 권한이 있는 계정이 필요
CLI 환경에서 Github
CLI란?
Command Line Interface
CLI 환경을 사용하는 좋은 이유
- 여러 환경의 테스트 장비에서 가볍게 git 사용
- CLI 명령어는 다양한 옵션 제공
- CLI 명령어를 알면 Git의 동작 원리를 이해하고, 올바르게 활용
CLI 명령어의 구성
서브 명령어: GUI에서 보았던 메뉴
옵션: 메뉴 수행 시, 선택하거나 입력할 수 있었던 항목
- 다양한 옵션을 제공하고 있으며 이는 도움말을 통해 확인 가능
- git help <command>
부가 정보: 선택하거나 입력할 수 있었던 항목의 내용에 해당
'2023_국민대 > AI 개발 환경의 이해' 카테고리의 다른 글
[Docker] Docker 환경 웹서버 구축 (0) | 2023.06.05 |
---|---|
[Docker] Doker 개발 환경 (1) | 2023.06.05 |
[Linux] Docker 개발 환경 (0) | 2023.04.16 |
[Linux] Docker (0) | 2023.04.16 |
[Linux] 웹 서버 구축 Apache (0) | 2023.04.15 |