본문 바로가기
TIL _Today I Learned/2024.08

[DAY 17] Git & Web

by gamdong2 2024. 8. 2.
[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.08.02

📕 학습 목록

  • Git
  • GitHub
  • Web 

 

📗 기억할 내용

 

1) Git

 

① Git 이란?

  • 파일의 버전 관리 / 백업 / 협업을 위한 s/w
  • 분산 버전관리 시스템; 개발 구성원 모두 현재 상태의 파일 & 프로젝트의 전체 이력을 가짐
[버전 관리 방식 2가지]

* 중앙 집중식 버전관리 시스템(CVCS) 
  - 중앙저장소를 팀원들이 공유하면서 같이 수정•관리
  - 추적이 안된다는 단점때문에 이전 버전을 되돌리거나 할 때 어려움이 있음
  - ex : SVN(Subversion)

* 분산 버전관리 시스템(DVCS)
  - CVCS의 추적 불가 단점을 해결
  - 중앙저장소를 팀원들이 공유 & 팀원 개개인의 로컬저장소를 따로 가짐
  - 팀원 개개인의 로컬저장소에 저장 → 다같이 검토•토론 → 최종적으로 중앙저장소에 업로드; 프로그램 작동   
  - ex : Git
  • Git의 커밋 흐름
작업물을 임시저장공간(staging area)에 등록 → local repository에 실제로 저장 → remote repository에 등록

  • Git 을 사용해야하는 이유
Git의 기능 설명
변경 취소 - 실수를 했을 경우, 구 버전의 작업 파일 복구 → 이전 단계로 돌아갈 수 O
모든 변경에 대한 history - 구 버전의 프로젝트 확인 → 그 당시 파일 상태를 확인
변경한 이유 기록 - Commit message를 통해 변경한 이유를 참조
변경에 대한 확신 - 언제든지 이전 버전으로 복귀 가능
여러 갈래의 history - 별도의 branch를 생성 → 다른 기능을 독립적으로 실험해 볼 수 O
- 성공시 변경 내용을 main branch로 병합(성공X 시, 삭제)
충돌 해결 능력 - 여러 사람들이 동시에 같은 파일 작업 → 자동으로 변경 사항 병합(충돌이 날 경우, 충돌이 무엇인지 알려줌. 해결하기 쉽게 함)
독립된 history - 여러 사람들이 다른 Branch에서 작업 → 기능을 독립적으로 개발. 완료시 기능 병합
기록 요구 - Issues를 사용 → 버그를 기록/개발하고 싶은 새로운 기능 구체화
독립된 history에 대한 협력 - Branch & Pull request를 사용 → 다른 Branch • 기능에 협력
진행중인 작업 검토 - Pull request 목록을 통해 현재 무슨 작업이 진행되고 있는지 확인
- 특정 Pull request를 클릭 → 최근 변경 내용 & 변경에 관한 논의 내용 확인
팀의 작업 진척 사항 확인 - Pulse • Commit history를 통해 팀의 진척 상황 확인
  • Git 용어 설명
Git 용어 설명
Commit - 파일에 대한 변경 내용을 저장할 때마다, 새로운 commit 생성
Commit message - commit을 생성할 때마다 변경 이유 작성
Branch - 따로 떨어진 독립적인 commit 
- 테스트 or 새로운 기능 개발을 위해 사용
Main branch - 작업이 최종적으로 마무리되는 branch
- 새로운 Git 프로젝트 만들 때 마다 생성됨
Feature(or Topic) branch - 새로운 기능을 개발할 때 마다 작업할 feature branch 생성
Release branch - QA 작업을 하거나, 구 버전의 s/w를 지원해야할 때 모든 수정 • 업데이트를 위한 release branch 가 필요
Merge - 한 branch에서 완성된 작업을 가져와 다른 branch에 병합
- 흔히, feature branch를 main branch로 병합
Tag - 특정 이력이 있는 commit에 대한 참조
- 제품 배포 기록에 자주 사용; 어떤 버전의 코드가 언제 배포(release) 되었는지 정확히 알 수 있도록
Check out - 프로젝트 history의 다른 버전으로 이동 → 해당 시점의 파일을 확인
- 흔히, branch에서 완료된 작업을 모두 보기 위해 check out (commit 도 check out 가능)
Pull request - branch에서 완료된 작업을 다른 사람이 리뷰 → main으로 병합하도록 요청
- 흔히, 개발 가능한 기능에 대한 논의를 시작하는 초기 작업 단계에서 사용
Issue - 기능에 대해 논의 • 버그 추적시 사용 (GitHub의 기능)
Wiki - 링크들을 서로 연결해 간단하게 웹 페이지를 만드는 방법
- GitHub : 문서작성에 Wiki를 자주 사용
Clone - repository를 사용자의 컴퓨터로 복사하는 과정
- 종종 local로 작업하기 위해 프로젝트 복사본을 GitHub에서 다운
Fork - 프로젝트를 직접 변경하는데 필요한 권한을 보유X 경우, 프로젝트 변경시 GitHub의 사용자 계정에 프로젝트 복사본을 만드는 과정
- 그 다음, 복제(clone) → 변경 → pull request; 원본 프로젝트에 변경 내용을 반영
  • 주요 Git 명령어
Git 명령 설명
-h –help - Git 명령어 리스트 출력
clone [git_url] - 현재 파일 위치에 원격 Git 프로젝트 복사
init - 현재 파일 위치에 로컬 저장소 생성
add [파일 위치] - 주어진 파일, 폴더들을 Git 변경사항 인덱스로 적재
status - 현재 Git 상태를 확인 (branch, 파일 상태, …)
branch [브랜치 이름] - 현재 브랜치에서 새로운 브랜치 생성
commit [-m 메시지] - add로 등록한 Git 데이터를 커밋

 

② Git 브랜치 전략

  • 여러 개발자가 하나의 저장소를 사용하는 환경에서, 저장소를 효과적으로 활용하기 위한 work-flow
  • 즉, 브랜치 생성 규칙을 만들어 협업을 유연하게 하는 방법론
  • git-flow 전략 

- 브랜치 이름 : feature > develop > release > main > hotfix
* feature : 추가 기능 개발 브랜치. develop 브랜치에 들어감
* develop : 다음 출시 버전을 대비하여 개발하는 브랜치. feature 들을 모으는 역할
* release : 다음 출시 버전을 대비하는 브랜치. develop 브랜치를 release 브랜치로 옮긴 후 QA, 테스트 진행. 테스트 서버에 올라가는 버전이 들어감(develop과 통합하여 사용하기도 함)
* main : 라이브 서버에 실제 제품•서비스로써 출시되는 브랜치
* hotfix : main 브랜치에서 발생한 버그를 수정하여 반영하는 브랜티
  • github-flow 전략 

- git-flow의 단점을 해결(브랜치 생성이 많고•복잡. 적용이 어려움)
- main 브랜치 하나로 진행됨
- main 브랜치에 모든 기능•오류 수정을 merge → main이 업데이트 됨

 

📙 내일 일정

  • 웹 개발 언어(HTML, CSS, Javascript) 학습

 

 

 

 

 

 

'TIL _Today I Learned > 2024.08' 카테고리의 다른 글

[DAY 21] Flask  (0) 2024.08.08
[DAY 20] SQL  (0) 2024.08.07
[DAY 19] API, DB, SQL  (0) 2024.08.06
[DAY 18] HTML, CSS, Javascript  (0) 2024.08.05
[DAY 16] Python 실습  (0) 2024.08.01