step2가 충돌이 일어났다. 뭐가 원인인지 전혀 알 수가 없다. PawnTest에서 충돌이 난다고해서 충돌이 난 이유를 생각해봤다. 충돌난 이유는 step1이 merged 되고 upstream/kyu-kim-kr 가 업데이트 되었는데 로컬에는 upstream의 변경사항이 적용되지 않아서이라고 생각했다.
제 계정의 리모트 저장소는 생략하고 그림 그리면서 생각해봤습니다.
그림1
추측하기전에 local의 step1은 더 이상 필요없으므로 삭제한다.
git pull
명령어로 변경사항을 가져온다.그림 2
그림 3
기본적으로 Pull Request는 내가 작업한 하나의 브랜치를 베이스 저장소의 하나의 브랜치로 pull (fetch & merge) 하는 것이다. 따라서, upstream의 줄기는 여러 갈래로 나뉘어지는게 아니 한줄기가 되어야 할 것이다. 그림들에서 그냥 upstream이라고 했지만 upstream/kyu-kim-kr 부분을 생략했던 것이다.
그래서 위에있는 그림 2에서 push하면 하나의 줄기가 아니라 C3부터 갈라져 나오는 여러 갈래의 줄기가 될것이다. 그래서 conflict 나는 것이다.
이 문제를 해결하려면 rebase를 통해 local의 커밋을 아래 그림 4와 같이 정리하고 push하면 문제가 해결될 것이라고 본다.
그림 4
step2가 충돌이 생기는 이유는 step1에 새로운 커밋들이 생겨서 그런 게 아니다. step1이 merge 되면서 merge 커밋이 새롭게 생겼는데 step2 브랜치에는 merge 커밋이 적용되지 않았기 때문이다.
이 문제를 해결하기 위해서는
그림 1
그림1 은 충돌이 일어났을 때 해결하기위한 그림이다. step2가 충돌이 일어났다. upstream/kyu와 step2가 동기화가 안되서이다.
그림 2
This is a static initialization block. Think of it like a static version of the constructor. Constructors are run when the class is instantiated; static initialization blocks get run when the class gets loaded.
체스만들기. 미션3
루카스에 있는 자바 공부할 거리 공부하기
생활코딩 객체지향 파트 (클래스 패스, 패키지, API, abstarct, final, 인터페이스, 다형성, 예외1 문법, 예외2 예외던지기, 예외3 만들기, Object 클래스, 상수와 enum, 참조, 제네릭) 링크
깃은 정말 어렵다. 계속 붙잡고 이해하려고 노력해야 이해할 수 있는 그런 거 같다. 팀원들과의 많은 대화가 가장 도움이 되었다. 디온이 답변해준 것도 정말 도움이 되었다
크 kyu 점점 잘해져가고 있으시네요.
다음에 kyu 만날때는 이것저것 많이 물어봐야겠어요 :)