Git은 분산형 버전 관리 시스템(VCS: Version Control System)으로, 소스 코드의 변경 이력을 관리하고 여러 개발자가 동시에 작업할 수 있도록 도와줍니다. Git을 사용하면 코드의 이전 버전으로 되돌리거나, 여러 기능을 동시에 개발한 후 이를 합치는 등의 작업이 용이해집니다.
왜 Git을 사용?
기본 개념
레포지토리(Repository) : 레포지토리는 프로젝트의 모든 파일과 변경 이력을 저장하는 장소.
로컬 레포지토리 : 개발자의 컴퓨터에 저장된 레포지토리
원격 레포지토리 : GitHub, GitLab과 같은 서버에 저장된 레포지토리
커밋(Commit) : 커밋은 코드의 변경 사항을 저장하는 단위
각 커밋은 고유한 해시값과 메시지를 가지며, 변경 내역을 추적할 수 있습니다.
브랜치(Branch) : 브랜치는 메인 코드(보통 main 또는 master)에서 분기된 독립적인 작업 공간입니다. 새로운 기능 개발이나 버그 수정을 위해 별도의 브랜치를 만들어 작업한 후, 완료되면 메인 브랜치에 병합합니다.
병합(Merge) : 병합은 하나의 브랜치에서 작업한 내용을 다른 브랜치로 통합하는 과정입니다. 충돌이 발생할 수 있으며, 이를 해결하는 과정이 필요.
git --version
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git init
git clone https://github.com/username/repository.git
git add 파일명
# 모든 변경 사항을 추가하려면
git add .
git commit -m "커밋 메시지"
git push origin 브랜치명
git pull origin 브랜치명
git branch 브랜치명
git checkout 브랜치명
# 또는 한 줄로
git checkout -b 브랜치명
git checkout main
git merge 브랜치명
GitHub나 GitLab 같은 플랫폼을 이용하면 팀원드로가 쉽게 협업할 수 있습니다.
주의사항
프로젝트에서 버전 관리가 필요 없는 파일이나 디렉토리를 .gitignore 파일에 추가하여 제외할 수 있습니다. 예를 들어, target/ 디렉토리나 IDE 설정 파일 등을 제외할 수 있습니다.
일관된 커밋 메시지 규칙을 사용하는 것이 좋습니다. 예를 들어, 다음과 같은 형식을 사용할 수 있습니다.
[타입] 간단한 설명
자세한 설명
타입 예시: feat(기능 추가), fix(버그 수정), docs(문서 수정), style(코드 스타일), refactor(코드 리팩토링), test(테스트 코드 추가), chore(빌드 작업 등)
취업 준비 중인 신입 Java/Spring 백엔드 개발자라면 Git을 실습하면서 동시에 백엔드 개발 역량을 키울 수 있는 다양한 프로젝트와 실습을 통해 실력을 향상시킬 수 있습니다. 아래에 제안하는 실습 활동들은 Git의 기본 기능을 익히고, 실제 개발 환경에서의 협업 경험을 쌓는 데 도움이 될 것입니다.
목표: 간단한 CRUD(Create, Read, Update, Delete) 기능을 가진 Spring Boot 애플리케이션을 개발하면서 Git의 기본 명령어를 실습합니다.
단계별 실습:
프로젝트 초기화 및 Git 설정
Spring Initializr 사용 권장).git init
git add .
git commit -m "Initial commit: Spring Boot 프로젝트 생성"git remote add origin https://github.com/username/repository.git
git push -u origin main기능 추가 및 브랜치 사용
기능 1: 사용자 관리 (User Entity, Repository, Service, Controller 추가)
git checkout -b feature/user-management
git add .
git commit -m "feat: 사용자 관리 기능 추가"
git push origin feature/user-management기능 2: 상품 관리 (Product Entity, Repository, Service, Controller 추가)
git checkout -b feature/product-management
버그 수정 및 히스토리 확인
git checkout -b bugfix/fix-api-errorgit log --oneline.gitignore 설정
target/, .idea/, *.class 등 불필요한 파일을 .gitignore에 추가.
# Java
*.class
*.jar
*.war
# Maven
target/
# IntelliJ IDEA
.idea/
*.iml
변경 사항 커밋:
git add .gitignore
git commit -m "chore: .gitignore 파일 추가 및 설정"
git push origin main
위 프로젝트를 진행하면서 다음 Git 명령어들을 적극 활용해보세요:
브랜치 관리:
git branch
git checkout -b new-branch
git checkout main
git merge feature-branch
충돌 해결:
태그 사용:
git tag -a v1.0 -m "Initial release"
git push origin v1.0리베이스 사용:
git checkout feature-branch
git fetch origin
git rebase origin/main목표: 가상의 팀을 구성하여 협업 환경에서 Git을 사용하는 경험을 쌓습니다.
방법:
팀 구성: 친구나 동료와 함께 소규모 팀을 구성하거나, GitHub의 오픈 소스 프로젝트에 기여합니다.
프로젝트 계획:
실제 협업:
코드 리뷰 경험:
목표: 실제 오픈 소스 프로젝트에 기여하여 협업 경험과 Git 사용 능력을 향상시킵니다.
단계별 실습:
프로젝트 선택:
기여 가이드 읽기:
CONTRIBUTING.md 파일을 읽고, 기여 방법을 숙지합니다.이슈 해결:
피드백 반영:
목표: RESTful API를 개발하면서 Git을 활용하여 프로젝트 관리 및 버전 관리를 실습합니다.
프로젝트 아이디어:
실습 단계:
프로젝트 설정 및 초기 커밋
.gitignore 설정 후 초기 커밋.기능별 브랜치 생성 및 개발
사용자 인증:
git checkout -b feature/user-authentication
할 일 관리:
git checkout -b feature/todo-management
태그 관리:
git checkout -b feature/tag-management
테스트 및 문서화
배포 및 버전 관리
git tag -a v1.0 -m "Initial API release"
git push origin v1.0목표: 프로젝트의 GitHub 레포지토리에 상세한 README를 작성하여 프로젝트 설명 및 사용 방법을 문서화합니다.
실습 내용:
목표: Git의 고급 기능을 사용하여 히스토리를 관리하고, 깔끔한 커밋 히스토리를 유지합니다.
실습 내용:
인터랙티브 리베이스:
git rebase -i HEAD~n
스태시 사용:
git stash
git stash pop
체리픽:
git cherry-pick <commit-hash>
목표: Git Hooks를 사용하여 커밋 전/후에 자동으로 스크립트를 실행합니다.
실습 내용:
.git/hooks/pre-commit 파일에 스크립트 추가.온라인 튜토리얼:
유튜브 강의:
실제 프로젝트 참여:
Git은 현대 소프트웨어 개발에서 필수적인 도구로, 이를 효과적으로 활용하는 능력은 백엔드 개발자로서의 경쟁력을 높여줍니다. 위에 제시한 다양한 실습 프로젝트와 활동들을 통해 Git의 기본부터 고급 기능까지 체계적으로 익히고, Java/Spring 백엔드 개발 역량을 함께 강화해보세요. 실습을 통해 얻은 경험은 포트폴리오에 추가할 수 있으며, 면접 시에도 유용한 사례로 활용할 수 있습니다. 성공적인 취업 준비를 응원하며, 추가 질문이나 도움이 필요하면 언제든지 문의해주세요!