0715
💡 개발문화 & Git Branch
❓ Later
- [ ] merge 종류
- [ ] merge comment 여부
- [ ] vi/vim 편집기
- [ ] Node.JS 예습
#커밋 삭제
git log
**git reset HEAD~1**
**git push -f origin main**
Agile
- Waterfall 모델장점
- 단순한 모델
- 단계별 정형화된 접근으로 문서화 용이
- 떨어지는 유연성
- 시스템 동작을 후반에 가야 확인가능
- 대형프로젝트에 부적합, 일정지연 가능성
- 고전적인 SW생명 주기, 순차적 수행
짧은 주기의 개발단위(설계, 개발, 테스트, 배포)를 반복하는 방법론
요구사항 단위로 쪼개 솔루션 구축
- 협력 + 피드백
- 유연성 + 대응성
Scrum(스크럼)
- 개발자-고객 지속적 커뮤니케이션
- 고객 요구사항 가장 우선적으로 시행
- 주기적인 미팅으로 프로젝트 점검
- 주기적 제품시현, 피드백 수용
Daily Scrum
10분정도 매일 점검
Sprint
- 주기: 1~2주
- 작은 기능에 대해 “계획, 개발, 테스트, 기능 완료" 주기적 시행
- 실패하면 다음 기능으로 전환.
Kanban(칸반)
단계별 작업 현황을 열 형식의 보드로 시각화하는 프로젝트 관리방법
장점
- 업무 흐름 시각화
- 진행 중 업무 제한
- 명시적 프로세스 정책 수립
Tools
- zira
- trello
- github - project
Git Branch
Git?
분산형 버전관리 시스템
- 소스코드 변경이력 쉽게 확인
- 특정 분기 버전 관리
Branch
작업 분기해서 처리, 독립 작업
Branch 명령어
#브랜치 목록 조회
git branch
git branch -r #remote
git branch -a
#브랜치 이동
git checkout "브랜치명"
git checkout -b "브랜치명" #생성&이동
#브랜치 생성
git branch "브랜치명" #local
git push origin "브랜치명" #remote
#브랜치 삭제
git branch -d "브랜치명"
git branch -D "브랜치명" (강제삭제)
git push origin --delete "브랜치명" #remote
Branch 종류
Master
제품 출시 브랜치
배포 이력 관리
develop
다음 출시버전 개발 브런치
기능개발 브랜치 병합
feature
기능개발 진행 브랜치
새로운 기능 개발 및 버그 수정을 할 때마다 develop에서 분기
로컬에서 진행 후 develop에 merge공유
이름: feature/~~
git checkout -b feature/이름 develop
#develop에서 복제
/* 개발~~ */
git checkout develop
git merge --no--ff feature/이름
git branch -d feature/이름
git push origin develop
release
출시버전 준비하는 브랜치
배포 전용 브랜치
이름: release-0.0
git checkout -b release-1.2 develop #develop에서 복제
/* 배포 사이클 */
git checkout master
git merge --no--ff release-1.2
git tag -a 1.2
git checkout develop
git merge --no--ff release-1.2
git branch -d release-1.2
hotfix
출시버전의 버그 수정 브랜치
배포버전 긴급 수정용
Master에서 분기
이름: hotfix-0.0.0
git checkout -b hotfix-1.2 master #master에서 복제
/* 문제 수정 */
git checkout master
git merge --no--ff hotfix-1.2
git tag -a 1.2
git checkout develop
git merge --no--ff hotfix-1.2
git branch -d hotfix-1.2
Merge(병합)
Merge 케이스
- 서로 다른 파일 수정
git checkout "현재 브랜치"
git merge "대상 브랜치명"
- 같은 파일 or 다른 부분
git checkout "first"
git merge "second"
- 같은 파일 같은 부분 → 병합충돌
<<<<<<<< HEAD (Current Change)
========
>>>>>>>> second (Incoming Change)
- 병합충돌 해결
- Accept Current Change
- Accept Incoming Change
- Accept Both Changes
- Compare Changes
- add - commit - push
Merge 종류 ??
- —ff
- —no-ff
- Fast-forward여부 상관X
- feature commit 무시
- —ff-only
- —squash
- feature commit 병합
#기존 commit 그대로
git merge
#feature commit 무시
git merge —no-ff
- [ ] Fast-forward
- [ ] Recursive(3 way-merge)
- merge
- rebase (기본)
- squash
- 커밋 합쳐서 새로 merge commit
git checkout main
git checkout -b 1
#생성수정
git add .
git commit -m "1"
git push origin 1
git checkout main
git checkout -b 2
#생성수정
git add .
git commit -m "2"
git push origin 2
git checkout 1
git **merge** 2
git log #merge commit 확인 가능
--no-f
git checkout main
git checkout -b 3
git commit -am "3"
git checkout main
git **merge** --no-f 3
git 명령어
git commit -am "커밋메세지" #파일새로생성시 사용X
git fetch —all #remote -> local
git reset HEAD^ #최근커밋 취소
git reset --hard "커밋로그" #특정커밋 취소
fetch
- 원격저장소에 변경내용 확인하고싶을 때
.gitignore
- git 버전관리에서 제외할 파일
- 파일이름 적기
- key파일, module 등