깃, 깃허브를 활용하여 커밋 & 푸시 하는 법 그리고 기본적인 충돌상황에서 해결하는 법 정리하기
📌 (선행) 프로젝트 소스 최신 상태로 만들기
일반적으로 Git 커밋(Commit) & 푸시(Push) 를 하기 전엔 GUI, CLI 상관 없이 무조건 프로젝트를 최신 상태로 만들어 줘야 함. 안그럼 충돌이 남.
💻 IntelliJ GUI 버전
💻 터미널 버전
git pull origin main
📌 일반적인 Git 커밋(Commit) & 푸시(Push) 방법
💻 IntelliJ GUI 버전
1. 소스를 수정함
2. 인텔리제이 좌측에 [Commit] 아이콘을 클릭해주고, 커밋 & 푸시할 소스를 선택한 후
아래에 반드시 커밋 메시지를 작성한 후 하단에[ Commit and Push] 버튼을 클릭해줌
※ 여기에 보여진다고 이 소스들이 git add가 된게 아님. 스테이징에 올라온 게 아님. 걍 수정된 사항만 보여지는것임.
3. 팝업이 하나 뜨는데 내가 커밋 & 푸시할 소스가 맞는지 한 번 더 확인 후, 하단에 [Push]버튼을 클릭해주면 커밋 & 푸시 끝!
4. 깃 로그 화면을 확인하면 내가 방금 커밋 & 푸시한 커밋 로그가 생김!
💻 터미널 버전
# 모든 변경 사항 스테이징
git add .
# 커밋
git commit -m "커밋 메시지"
# 푸시
git push origin 브랜치명
# 예: git push origin main
📌 Git 커밋(Commit) & 푸시(Push) 충돌이 발생했을 때 (누군가 먼저 push한 경우)
엄밀히 따지면 다른 사람이 a소스를 수정하고 푸시함 그리고 내가 b 소스를 수정하고 푸시했을 때 생기는 충돌임.
즉, 각자 수정하는 코드가 겹치지 않을 때 해당됨.
💻 IntelliJ GUI 버전
1. 커밋 & 푸시 하려고 하면 위와 같은 경고창이 뜸
(원격 저장소의 변경 사항을 먼저 반영하지 않으면 push할 수 없다는 뜻)
CANCEL : 아무 작업도 하지 않음
REBASE : 원격 변경사항을 먼저 가져오고 내 커밋을 위에 덧붙임→ 커밋 로그 깔끔함
MERGE : 원격 변경사항과 내 커밋을 자동으로 병합함 → 불필요한 merge 커밋 생김
✅ REBASE를 누른다면?
다른 사람이 먼저 푸시한 코드(깃 테스트2)를 먼저 반영하고, 그다음에 내 코드(깃 테스트3)를 반영함. 커밋로그 일직선으로 깔끔하게 됨.
✅ MERGE를 누른다면?
다른 사람이 먼저 푸시한 코드(깃 테스트2)를 먼저 반영하고, 그다음에 내 코드(깃 테스트3)를 반영되긴 하지만 커밋로그 지저분해짐.
💻 터미널 버전
✅ REBASE 방법
1. 변경된 소스를 커밋 푸시하려고하면 위와 같은 에러가 뜸.
git pull --rebase origin main
2. 위의 명령어를 원격 변경사항을 먼저 가져오고 내 커밋을 위에 덧붙임 = REBASE 기능.
git push origin main
3. 그 다음에 다시 푸시하면 해결 완료.
4. 깔끔하게 커밋로그 생성됨
📌 Git 커밋(Commit) & 푸시(Push) 충돌이 발생했을 때 (누군가 먼저 push한 경우)
똑같이 충돌이 나지만 위와 다른 케이스인게 같은 소스를 수정했을 때 충돌 해결 방법임 .
💻 IntelliJ GUI 버전
여기까진 똑같음
✅ REBASE를 누른다면?
위와 같은 메시지가 뜬다.
ACCEPT YOURS : 내 변경사항(로컬)을 그대로 적용함 → 원격 변경은 무시됨
ACCEPT THEIRS : 원격 변경사항만 반영하고 내 로컬 변경은 버림
MERGE : 3-way 병합 도구를 열어 직접 줄별로 수정
MERGE 선택하면
복잡해보이는 창이 뜨는데
왼쪽이 내가 수정한 것 / 가운데가 그래서 최종으로 반영할 것 / 오른쪽이 원격 저장소에 저장된 것임.
소스 확인해서 가운데 화면에 최종 소스를 만들어 준담에 아래 [APPLY] 눌러주면 됨.
아직 충돌이 해결 안된거 같은데 걍 해결했따고해? 라고 묻는 창
확인해서 화면상으로는 충돌이 해결 안된것처럼 보여도 소스상으로 문제 없다면
APPLY CHANGES AND MARK RESOLVED를 클릭하면
병합완료.
근데 여기서 끝이 아니라 강제 푸시를 한번 더 해줘야 함.
다른 소스가 충돌난 것과 다르게 같은 소스로 충돌나서 병합한 후에는 강제 푸시가 필요함!
'💻 하나씩 차곡차곡 > Back-end' 카테고리의 다른 글
모놀리식 아키텍처 VS MSA 아키텍처 (0) | 2025.05.08 |
---|---|
[JPA/QueryDSL] 엔티티가 올바른 경로에 있음에도 자꾸 컴파일 에러가 뜹니다. (0) | 2025.05.01 |
[Git/Github] 혼자서 북 치고 장구치는 Git Flow 연습하기 (0) | 2025.04.28 |
[Git/Github] 혼자서 북 치고 장구치는 PR(Pull Request) 연습하기 (0) | 2025.04.28 |
[Git/Github] 혼자서 북 치고 장구치는 Branch, Merge 연습하기 (0) | 2025.04.28 |