[Git] git pull 시 remote 내용과 충돌 나는 경우

2023. 1. 11. 22:39Developers 공간 [Shorts]/Software Basic

728x90
반응형
A. 수단(Linux)
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew, 
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter
- Module Bundler  : React, Webpack, Parcel

B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS

C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight

1. What? (현상)

 

git pull
error : The following untracked working tree files would be overwritten by merge

 

 

 


2. Why? (원인)

  • push하려고 하는 remote repository의 내용 중 같은 파일이, 가장 최근에 pull했을 때의 내용 이후로 바뀌어있는 경우 발생합니다.
  • remote repository의 내용과 현재 push하려는 local repository의 head의 내용이 conflict 나기 때문입니다.

3. How? (해결책)

  • 강제로 remote의 정보로 업데이트 하는 방법이 있습니다.
    1. remote로부터 최신정보가 업데이트 되었는지를 확인한 후
    2. origin으로 설정된 remote의 master branch를 강제로 가져와 head로 설정합니다.
    3. git pull을 진행합니다.
git fetch --all
git reset --hard origin/master
git pull
  • merge하는 방법이 있습니다
    1. 현재 내가 작업했던 내용을 저장해둡니다. (패치 형태로)
    2. git pull을 진행합니다.
    3. 저장해둔 작업내용을 다시 불러와 merge합니다.
      (the lesser than[<], equals[=], greater than[>] 형태로 merge conflict 될 수 있습니다.) 
      <<<<<<< HEAD
      =======
      >>>>>>> FEATURE
git stash
git pull
git stash pop

** git stash는 현재 branch에 대한 commit을 merge할 때 임시 저장하기도 하지만, git checkout 으로 branch 를 변경할 때도 임시저장하기 위해 사용합니다


 

728x90
반응형