주뇽's 저장소
Git 충돌, 두려워 말자! 초보자도 쉽게 해결하는 방법 본문
Git 충돌, 두려워 말자! 초보자도 쉽게 해결하는 방법
들어가며
Git을 사용하다 보면 언젠가는 마주치게 되는 그 무시무시한 단어, "충돌(Conflict)". 처음 이를 경험하는 순간, 많은 개발자들이 식은땀을 흘린다. 하지만 걱정 마라! 이 글을 읽고 나면, Git 충돌은 더 이상 두려운 대상이 아닌, 극복 가능한 작은 도전이 된다.
충돌이 발생하는 시나리오
멋진 맛집 리뷰 앱을 만드는 상황을 상상해보자
당신과 동료 개발자 철수는 최고의 맛집 리뷰 앱을 만들고 있다.
당신: "사용자 프로필" 기능 개발 담당
철수: "리뷰 작성" 기능 개발 담당
두 사람 모두 열심히 각자의 기능을 개발하고 있었다. 그런데 문제가 발생한다!
- 당신은
user_profile
브랜치에서auth.py
파일의 사용자 인증 로직을 수정했다. - 철수도
write_review
브랜치에서 같은auth.py
파일의 사용자 인증 로직을 건드렸다. - 철수가 먼저 자신의 변경사항을
main
브랜치에 병합했다. - 이제 당신이
user_profile
브랜치를main
에 병합하려고 하는데... 충돌 발생!
충돌 해결하기: 단계별 가이드
1. 당황하지 말고 심호흡을 한다
충돌은 Git이 "잠깐만, 여기 두 가지 다른 변경사항이 있어. 어떤 걸 선택해야 할지 모르겠어!"라고 말하는 것과 같다.
우리의 역할은 Git에게 "이렇게 하면 돼!"라고 친절히 알려주는 것이다.
2. 현재 상황을 파악한다
터미널에서 git status
명령어를 실행해 어떤 파일에서 충돌이 발생했는지 확인한다.
$ git status
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: src/app/api/service/auth.py
3. 충돌 파일을 연다
위 예시에서는 src/app/api/service/auth.py
파일이 충돌났다. 이 파일을 열어보자.
4. 충돌 부분을 찾는다
파일을 열면 다음과 같은 부분을 발견할 수 있다:
<<<<<<< HEAD
def authenticate_user(username, password):
# 철수의 코드
return check_credentials(username, password)
=======
def authenticate_user(username, password):
# 당신의 코드
return verify_user(username, password)
>>>>>>> user_profile
이것이 바로 충돌 부분이다! <<<<<<< HEAD
와 =======
사이가 현재 main
브랜치의 코드(철수의 코드)고,=======
와 >>>>>>> user_profile
사이가 당신의 user_profile
브랜치의 코드다.
5. 충돌을 해결한다
이제 두 코드를 비교하고, 최종적으로 어떤 코드를 남길지 결정해야 한다.
예를 들어, 두 기능을 모두 유지하고 싶다면 다음과 같이 수정할 수 있다:
def authenticate_user(username, password):
if check_credentials(username, password):
return verify_user(username, password)
return False
6. 충돌 해결 표시를 제거한다
<<<<<<< HEAD
, =======
, >>>>>>> user_profile
같은 표시들을 모두 제거한다.
7. 변경사항을 저장하고 Git에 알린다
파일을 저장하고 다음 명령어를 실행한다:
git add src/app/api/service/auth.py
8. 병합을 완료한다
git commit -m "Resolve merge conflict in auth.py"
9. 변경사항을 원격 저장소에 푸시한다
git push origin main
마치며
축하한다! 당신은 방금 Git 충돌을 성공적으로 해결했다. 처음에는 어려워 보였지만,
차근차근 단계를 따라가다 보면 그리 복잡한 일이 아니라는 것을 알게 된다.
Git 충돌은 마치 요리 재료를 고르는 것과 비슷하다. 여러 가지 맛있는 재료(코드) 중에서
우리 요리(프로젝트)에 가장 잘 어울리는 것을 선택하는 과정이다. 이제 당신은 Git이라는 주방에서
멋진 요리사가 된 것이다!
다음에 충돌이 발생하더라도 당황하지 말자. 이제 당신은 충돌 해결의 달인이니까!
'Git' 카테고리의 다른 글
풀 리퀘스트 승인을 위한 6가지 필수 코딩 패턴 (2) | 2024.09.05 |
---|---|
[Git Action] AWS-Lambda 배포 자동화 하기 (0) | 2024.08.02 |
[Git hub Action]Chat GPT AI를 이용한 GitHub 코드 리뷰어 사용 방법 (6) | 2024.07.24 |