Nonamed Develog
[TIL][240816] Git & Github 복습 본문
어떤 문제가 있었나?
지난 프로젝트에서 팀 프로젝트에서 Git을 사용해 협업해봤지만 git push, git pull 같은 간단한 명령어만 사용했었다. 여러 명이 동시에 작업하면 코드 충돌이 발생할 수 있어 팀 프로젝트에 어려움을 느꼈다. 브랜치 사용이나 충돌 해결에 대한 지식이 부족해 프로젝트 관리가 비효율적이었다.
무엇을 시도했나?
이번과 지난 Git & Github 특강을 통해 팀 프로젝트에 필요한 다양한 Git 명령어와 Github 활용법을 배우고 실제로 시도해봤다.
- 브랜치 생성
git checkout {branch name} # 브랜치 생성
# 브랜치 생성 및 이동
git checkout -b {branch name}
git switch -c {branch name} # MZ 명령어
# 브랜치 이동
git checkout {branch name}
git swtitch {branch name} # MZ 명령어
- 커밋 작성
git add . or {file name}
git commit -m "commit message"
git commit # Vim 에디터에서 커밋 메시지 작성
- push & pull: 로컬에서 작업한 내용을 원격 저장소에 반영하기 위해, 원격 저장소에서 반영한 내용을 내 로컬 저장소로 가져오기 위해 아래와 같은 명령어가 필요했다.
push origin {branch name}
git pull origin {branch name}
- Merge와 병합 전략
- Fast-Forward Merge: 브랜치에서 작업 후 merge할 때 Fast-Forward Merge가 발생할 수 있다. 두 브랜치 사이에 다른 변경 사항이 없을 때, 브랜치의 HEAD가 앞으로 전진하면서 병합이 이루어지는 방식이다.
- Merge Commit: 만약 두 브랜치에 각각 다른 작업이 이뤄졌다면, 병합 시 Merge Commit이 생성된다. 이때는 병합 기록을 위해 별도의 커밋이 생성되며, 이 커밋을 통해 어떤 브랜치가 병합되었는지 확인할 수 있다.
- Pull Request: Pull Request를 생성하여 브랜치를 main 브랜치로 병합하기 전에 코드 리뷰를 요청할 수 있다.
- Fast-Forward Merge: 브랜치에서 작업 후 merge할 때 Fast-Forward Merge가 발생할 수 있다. 두 브랜치 사이에 다른 변경 사항이 없을 때, 브랜치의 HEAD가 앞으로 전진하면서 병합이 이루어지는 방식이다.
- 충돌 해결
- 충돌 확인: 병합 중 충돌이 발생하면 git status 명령어로 충돌된 파일을 확인한다.
- 충돌 해결: 충돌된 파일을 열어 Git이 표시한(<<<<<<<<< 같은) 충돌 부분을 수동으로 수정하고, 수정된 파일을 git add와 git commit을 사용하여 수정을 완료한다.
새로 알게 된 점은 무엇인가?
브랜치 관리의 중요성: 브랜치를 잘 관리하면 여러 명이 동시에 작업해도 충돌을 최소화 할 수 있다는 것을 배웠다. 특히 브랜치 생성은 많이 할 수록 좋다는 튜터님의 말씀이 기억에 남았다.
커밋 메시지 컨벤션: 체계적인 커밋 메시지 작성을 위해 컨벤션을 따르는 것이 협업에서 중요한 역할을 한다는 것을 알게 되었다.
type: subject
body
footer
feature or feat - 새로운 기능 추가
bugfix or fix - 버그 수정
docs - 문서 수정
style - 코드 포맷팅, 콜론 누락 …
refactor or refac - 코드 리펙토링 (로직 수정 없음)
test - 테스트 코드
comment - 주석 수정
remove - 파일/디렉토리 삭제
rename - 파일/디레토리 이름 수정
충돌 해결 과정: 충돌이 발생하면 git status 명령어로 충돌된 파일을 확인하고, 충돌된 부분을 직접 수정하는 방법을 익혔다. 충돌이 발생하는 것을 두려워하지 않고, 오히려 코드 품질을 개선할 수 있는 기회로 여기게 되었다.
PR을 통한 협업: Pull Request는 팀원 간의 코드 리뷰와 피브백을 통해 코드 품질을 향상시키는 중요한 협업 도구였다. PR을 통해 코드 병합 전에 이슈를 사전에 방지하고, 팀원 간 소통도 활발해질 수 있을 것이다.
무엇을 느꼈고 내일은 무엇을 할까?
요즘 장고 기초 강의를 듣느냐 다른 공부는 뒷전이었다. 하루 빨리 장고 기초 강의를 완강하고 원래 루틴으로 돌아가고자 한다.
'WHAT I LEARN > TIL' 카테고리의 다른 글
[TIL][240820] Bootstrap - Grid system (0) | 2024.08.20 |
---|---|
[TIL][240819] Overriding (0) | 2024.08.19 |
[TIL][240814] ERD(Entity Relationship Diagram) 복습 (0) | 2024.08.15 |
[TIL][240813] 웹 심화 이해 복습 (0) | 2024.08.13 |
[TIL][240812] 웹 기본 이해 복습 (0) | 2024.08.12 |