반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- Eclipse
- javascript
- string
- Java
- math
- IntelliJ
- ArrayList
- 인텔리제이
- java테스트
- junit5
- 자바스크립트
- html
- 배열
- 자바
- 자바문법
- junit
- CSS
- 테스트자동화
- 단위테스트
- 정규식
- js
- 문자열
- input
- 이클립스
- Array
- list
- json
- vscode
- Visual Studio Code
- HashMap
Archives
- Today
- Total
어제 오늘 내일
[Git] 작업 합치기: Merge와 공포의 Conflict 해결법 본문
Branch에서 멋지게 기능을 만들었다면, 이제 메인 코드(main)와 합칠 시간입니다.
순조롭게 합쳐지면 좋겠지만, 때로는 Git이 "어디를 선택해야 할지 모르겠어!"라며 SOS를 보냅니다.
이것이 바로 Conflict(충돌)입니다. 당황하지 않고 해결하는 방법을 알아봅시다.
1. Branch 합치기: Merge
작업이 끝난 feature 브랜치를 main 브랜치에 합치는 과정입니다.
✅ 반드시 합치려는 '대상' 브랜치로 이동해야 한다는 점을 잊지 마세요!
# 1. 메인 브랜치로 이동
git switch main
# 2. 메인 브랜치를 최신 상태로 업데이트 (협업 중이라면 필수)
git pull origin main
# 3. 기능 브랜치를 메인으로 합치기
git merge feature-login
2. Conflict(충돌)는 왜 발생하나요?
Git은 똑똑해서 서로 다른 파일을 수정했거나, 같은 파일이라도 수정 위치가 다르면 알아서 잘 합쳐줍니다. 하지만 "같은 파일의 같은 줄"을 서로 다르게 수정했을 때는 판단을 내리지 못하고 멈춰버립니다.
- 상황: A 개발자가
index.html10행을 수정해서 먼저main에 합쳤는데, 나도 내 브랜치에서index.html10행을 수정하고 합치려고 할 때 발생합니다.
3. Conflict 해결하기 (실전)
Conflict가 발생하면 터미널에 CONFLICT (content): Merge conflict in...이라는 메시지가 뜹니다. 해당 파일을 열어보면 아래와 같은 기괴한(?) 표시가 보일 거예요.
<<<<<<< HEAD
<p>메인 브랜치에서 수정한 내용입니다.</p>
=======
<p>내 브랜치에서 수정한 내용입니다.</p>
>>>>>>> feature-login
<<<<<<< HEAD: 현재 내가 위치한 브랜치(main)의 내용입니다.=======: 경계선입니다.>>>>>>> 브랜치명: 합치려고 가져온 브랜치의 내용입니다.
해결 방법
- 두 코드 중 남길 코드를 선택하거나, 두 코드를 적절히 직접 수정합니다.
<<<<,====,>>>>같은 특수 기호들을 모두 지워줍니다.- 수정이 끝났다면 다시 Git에게 알려줍니다.
git add . git commit -m "Conflict 해결: index.html 수정"
```
4. 충돌을 줄이는 작은 습관
- 자주 Pull 받기:
main의 변화를 수시로 내 브랜치에 반영하세요. 나중에 한꺼번에 해결하는 것보다 조금씩 해결하는 게 쉽습니다. - 작은 단위로 Commit 하기: 기능 단위로 쪼개서 작업하면 충돌 범위가 좁아집니다.
- 소통하기: 같은 파일을 만져야 한다면 동료와 미리 이야기를 나누세요.
📝 요약
- Merge는 기준이 되는 브랜치(main)로 이동한 뒤 실행한다.
- Conflict는 같은 파일의 같은 위치를 동시에 수정했을 때 발생한다.
- 충돌이 나면 코드를 직접 수정하고 다시 Add & Commit 하면 해결된다.
반응형
'IT > Git' 카테고리의 다른 글
| [Git] 이미 커밋한 걸 취소하고 싶다면? Reset vs Revert 완벽 정리 (0) | 2026.02.04 |
|---|---|
| [Git] 과거를 추적하는 법: git log로 커밋 기록 조회하고 검색하기 (0) | 2026.02.03 |
| [Git] 현재 브랜치 확인하기 (0) | 2026.02.02 |
| [Git] 협업의 핵심, Branch 완벽 이해하기 (0) | 2026.02.02 |
| [Git] 내 소중한 코드 백업하기: GitHub 연결과 Push (0) | 2026.02.01 |
Comments
