일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- network
- JPA
- mysql
- PostgreSQL
- docker
- 차이점
- analytics4
- 리눅스
- oracle
- 트랜잭션
- IntelliJ
- DBMS
- MongoDB
- group by
- java
- SQL
- Javascript
- git
- API
- 티스토리챌린지
- MariaDB
- top
- mssql
- 오블완
- 자바
- spring
- Python
- 명령어
- Linux
- rsync
- Today
- Total
hanker
GIT - 효율적인 협업과 워크플로우 최적화 본문
Git은 개발자들에게 필수 도구지만, 대부분은 기본적인 commit, push, pull 정도의 기능만 사용한다.
그러나 Git은 훨씬 더 강력한 기능을 제공하며, 이를 잘 활용하면 협업 효율과 코드 관리의 품질을 크게 향상시킬 수 있다.
Git Flow
Git Flow 전략은 협업 시 충돌을 줄이고 배포와 개발을 동시에 진행할 수 있다.
주요 브랜치
- main: 최종 배포 가능한 상태의 코드
- develop: 개발 중인 코드를 모아둔 브랜치
보조 브랜치
- feature: 새로운 기능 개발용
- release: 배포 준비 브랜치
- hotfix: 긴급 버그 수정 브랜치
왜 유용한가?
- 역할별 브랜치 구조로 협업 시 충돌을 줄일 수 있다.
- 배포와 기능 개발이 동시에 진행 가능
Tip: git-flow 플러그인을 사용하면 명령어로 쉽게 관리할 수 있다.
* Git Flow는 릴리즈가 비교적 덜 빈번한(예: 대규모 On-Premise 제품) 환경에서 매우 유용하지만,
지속적 배포(Continuous Deployment)가 강조되는 최신 SaaS 환경 등에서는 오히려 브랜치가 너무 많아져 관리가 복잡해질 수 있다.
* 요즘은 GitHub Flow, GitLab Flow, Trunk-Based Development 등 더 단순화된 전략을 쓰는 팀도 많다.
Git Rebase vs. Merge
Merge의 특징
- 두 브랜치를 합치면서 새로운 병합 커밋을 생성
- 작업 히스토리를 보존
- 협업 중 충돌 해결 시 유용
Rebase의 특징
- 커밋 히스토리를 다시 작성해 깔끔한 작업 이력을 유지
- 히스토리가 단순화되어 읽기 쉬움
언제 사용해야 할까?
- Merge: 팀 프로젝트에서 협업의 흔적을 남기고 싶을 때.
- Rebase: 개인 작업이나 깔끔한 커밋 히스토리가 필요한 경우.
* 이미 원격 저장소(remote)에 푸시된 히스토리를 Rebase로 “다시 쓰는” 것은 협업 충돌을 일으킬 가능성이 크다.
* "어떤 상황에서 Rebase가 이점을 가지는지(로컬에서 작업 후 원격에 반영하기 전)", "어떤 상황에서는 Merge가 안전한 선택인지(이미 팀원이 공유하는 브랜치)" 등을 구체적으로 구분해주면 더 좋다.
Git Stash
Git Stash란?
작업 도중 코드를 커밋하지 않고도 임시로 저장할 수 있는 기능
명령어: git stash
사용 사례
- 긴급히 다른 브랜치로 전환해야 할 때
- 테스트 도중 작업 상태를 저장하고 싶을 때
유용한 옵션
- git stash apply: 저장된 변경 사항을 다시 적용
- git stash list: 저장된 변경 사항 목록 확인
- git stash drop: 특정 stash 항목 삭제
Git Hooks
Git Hooks란?
Git에서 특정 이벤트(예: 커밋, 푸시)가 발생할 때 자동으로 실행되는 스크립트이다.
활용 사례
- Pre-commit Hook: 커밋 전에 코드 스타일 검사 및 테스트 실행
- 예: ESLint, Prettier 자동 실행
Post-merge Hook: 브랜치 병합 후 자동으로 의존성 설치
- 예: npm install 실행
Pre-push Hook: 푸시 전에 테스트를 실행해 오류 방지
설정 방법
: .git/hooks 디렉토리에 스크립트 파일 생성
: 파일에 실행 권한 부여: chmod +x <파일명>
Git Aliases
Git Alias란?
자주 사용하는 Git 명령어를 단축키로 설정하는 기능이다.
활용 사례
git lg: 히스토리를 그래프 형태로 출력
git config --global alias.lg "log --oneline --graph --decorate --all"
git co: git checkout 명령어를 단축
git config --global alias.co "checkout"
git save: Stash와 동일한 기능을 제공
git config --global alias.save "stash push"
Git의 협업 도구: Blame과 Bisect
Git Blame
- 파일의 각 줄이 누가 언제 작성했는지 확인 가능
- 명령어: git blame <파일명>
- 활용 사례 : 버그를 만든 커밋과 작성자를 추적
Git Bisect
- 버그를 추적하기 위해 특정 커밋을 탐색하는 이진 검색 도구
- 명령어
git bisect start
git bisect bad
git bisect good <커밋>
- 활용 사례 : 버그가 도입된 커밋을 빠르게 찾을 때.
GitHub Actions
GitHub Actions란?
GitHub에서 CI/CD 파이프라인을 자동으로 실행할 수 있는 도구이다.
활용 사례
- 코드 푸시 시 자동 빌드 및 테스트 실행
- 릴리즈 생성 및 배포 자동화
예시 워크플로우
.github/workflows/main.yml 파일 생성
name: CI Pipeline
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Dependencies
run: npm install
- name: Run Tests
run: npm test
정리
Git은 단순한 버전 관리 도구를 넘어, 개발자들이 협업과 워크플로우를 최적화할 수 있는 강력한 도구이다.
'CI, CD > GIT' 카테고리의 다른 글
Git - Git 환경설정(Git config) 3가지 레벨(Three Level)별 설정 방법 (0) | 2025.01.16 |
---|---|
Git - git remote branch 삭제 (로컬브랜치 / 원격브랜치) feat. linux (1) | 2024.11.15 |
Linux - Github 프로젝트 가져오기 (0) | 2024.11.14 |
Github - Repository Deploy Key 설정 (0) | 2024.11.06 |
Intellij에서 Github 소스 가져오기 (Clone Repository) (0) | 2024.10.26 |