본문 바로가기

노력/웹 개발

[Git] 포크한 소스에서 원래 프로젝트의 소스를 가져오기, 충돌 상황 해결.

 

Chemsolution 프로젝트는 제가 친구의 소스를 포크(fork)해 와서 진행하고 있습니다.

 

프로젝트를 진행하다가 원래 프로젝트의 소스를 제 코드에 덮어씌울 일이 생겼습니다.

 

 

ultim@DESKTOP-A8CSKNH MINGW64 ~/git/chemsolution (master)

$ git remote -v

origin  https://github.com/ultimate1994/chemsolution.git (fetch)

origin  https://github.com/ultimate1994/chemsolution.git (push)

 

먼저 현재의 리모트를 확인해줍니다.

 

제가 포크해 온 리모트만 있는 상태입니다.

 

 

ultim@DESKTOP-A8CSKNH MINGW64 ~/git/chemsolution (master)

$ git remote add upstream https://github.com/jawonee/chemsolution.git

 

친구가 만들어 놓은 원래의 리포지토리를 upstream으로 등록합니다.

 

 

ultim@DESKTOP-A8CSKNH MINGW64 ~/git/chemsolution (master)

$ git remote -v

origin  https://github.com/ultimate1994/chemsolution.git (fetch)

origin  https://github.com/ultimate1994/chemsolution.git (push)

upstream        https://github.com/jawonee/chemsolution.git (fetch)

upstream        https://github.com/jawonee/chemsolution.git (push)

 

다시 제 깃에 있는 리모트를 확인해보면 origin과 upstream이 등록돼있는 것을 확인할 수 있습니다.

 

 

ultim@DESKTOP-A8CSKNH MINGW64 ~/git/chemsolution (master)

$ git fetch upstream

remote: Enumerating objects: 98, done.

remote: Counting objects: 100% (98/98), done.

remote: Compressing objects: 100% (20/20), done.

remote: Total 60 (delta 34), reused 54 (delta 30), pack-reused 0

Unpacking objects: 100% (60/60), 18.78 KiB | 79.00 KiB/s, done.

 

리모트에서 fetch가 완료된 것을 확인할 수 있습니다.

 

 

ultim@DESKTOP-A8CSKNH MINGW64 ~/git/chemsolution (master)

$ git merge upstream/master

CONFLICT (modify/delete): target/m2e-wtp/web-resources/META-INF/maven/net.chemsolution/website/pom.properties deleted in HEAD and modified in upstream/master. Version upstream/master of target/m2e-wtp/web-resources/META-INF/maven/net.chemsolution/website/pom.properties left in tree at target/m2e-wtp/web-resources/META-INF/maven/net.chemsolution/website/pom.properties~upstream_master.

Auto-merging src/main/webapp/assets/css/form.css

Auto-merging src/main/webapp/WEB-INF/views/join.jsp

CONFLICT (content): Merge conflict in src/main/webapp/WEB-INF/views/join.jsp

Automatic merge failed; fix conflicts and then commit the result.

 

그 과정에서 다시 오류가 발생했습니다. 제가 올린 풀 리퀘스트(pull request)를 머지(merge)하지 않고 올려놨기 때문에 제가 올린 코드와 다른 코드가 존재하는 상태입니다. 충돌이 발생한 것이죠.

 

충돌이 발생한 코드로 가보면 다음과 같이 친절하게 충돌이 발생한 지점을 설명해주고 있습니다.

 

저의 경우에는 master보다 제 코드인 HEAD가 더 최신의 코드이므로 master에 해당하는 코드들을 다 삭제하도록 하겠습니다.

 

 

ultim@DESKTOP-A8CSKNH MINGW64 ~/git/chemsolution (master|MERGING)

$ git rm target/m2e-wtp/web-resources/META-INF/maven/net.chemsolution/website/pom.properties

rm 'target/m2e-wtp/web-resources/META-INF/maven/net.chemsolution/website/pom.properties'

 

충돌이 발생한 코드를 쫓지않도록 만들어줍니다.

 

"git status"와 "git commit"을 반복하다 보면 충돌이 발생한 지점을 알 수 있게 됩니다.

 

 

ultim@DESKTOP-A8CSKNH MINGW64 ~/git/chemsolution (master|MERGING)

$ git commit -m "delete conflict status"

[master c7f58be] delete conflict status


충돌나는 상황을 모두 제거하고 커밋(commit)을 하고 나면 진행하던 머지를 완료하게 됩니다.