기존에 

git fetch origin branch

를 사용하였으나, 결국 pull 동작이 필요하기에 정신 건강을 위해서 

     git pull origin branch
충돌이 없는 경우 충돌이 발생한 경우
       git pull --rebase origin branch
     git commit -m "message"
     git push origin branch
  충돌이 발생한 경우
  원인:
1 git pull 시 원격 레파지토리의 내용을 로컬에 반영하지 못한 경우
1.1 원격 레파지토리의 변경 파일이 stated changes 항목에 없고, changes에만 있어도 발생
1.2 이 경우에도 로컬에 수정된 내용으로 다른 파일인 commit&push에 영향을 받는다
1.3 이로 인하여 병합시 로컬 변경 사항으로 원격의 변경 사항과 충돌이 발생

2 병합 중단(Aborting)으로 현재 작업 상태는 병합이 완료되지 않은 상태로 남는다

3 병합이 완료되지 않은 상태에 comit을 진행하면, 병합 관련 충돌 문제로 인하여 오류가 발생한다
  해결 방안:
1 현재 변경 내용 확인
1.1 git status
1.1.1 충돌인 파일이 unstaged changes인지 staged changes인지 확인
1.1.2 unstaged changes 상태이면 로컬에서 수정된 내용을 먼저 처리

2 로컬 변경 사항 백업 (변경 사항 stash)
2.1 git stash -u
2.1.1  모든 변경 사항들을 stash로 저장하여 병합이 깨끗한 상태로 진행
2.1.2 -u 옵션은untracked 파일도 stash에 포함한다

3 pull 재시도
3.1 git pull origin develop
3.1.1 병합 충돌없이 원격 브랜치와 병합이 이루어 진다

4 stash 적용
4.1 git stash apply
4.1.1 stash에 저장된 변경 사항을 다시 불러오고, 필요하면 병합된 변경 사항과 비교하여 수정한다
       git add <conflicted-file>
     git rebase --continue
  리베이스는 커밋 히스토리를 변경하므로, 강제 푸시가 필요
       git push origin branch --force-with-lease

 

'개발 > Git' 카테고리의 다른 글

lib/ 파일 Git 추적 정지  (0) 2025.03.14
특정 파일만 remote의 변경 사항을 로컬에 merge  (0) 2025.02.03
commit & push 이후 오류 발생시 rollback 방법  (0) 2025.01.08
git bash 사용법  (0) 2024.12.24
GitHub 토큰 발급 방  (0) 2022.10.25
Posted by 테리
: