만약 서버에 있는 내용을 받아와서
나의 로컬버전도 서버와 함께 동일하게 만들고 싶다면 git pull 사용
내 로컬에 있는 HEAD와 서버에 있는 HEAD들이
동일한 commit을 가리키고 있기 때문에
내 로컬과 서버는 동기화가 잘 된 것을 확인할 수 있다.
로컬과 서버에서 각각 동일한 파일을 수정했을 떄
서로 새로운 commit이 있는 경우라면 어떻게 될까.
로컬에서 add.txt 수정하고 local change라는 이름으로 commit하기
서버에서 add.txt 수정하고 Remote라는 이름으로 commit하기
현재 상황
Update add.txt commit 다음에
로컬에서는 local change라는 새로운 commit이 있고
서버에는 remote라는 commit이 있는 상황
그리고 이 2가지의 commit 모두 add파일을 수정했다.
동일한 파일을 수정했디때문에 conflict가 발생된다.
이 상태로
git pull을 하면 merge conflict이 발생한다.
이 상태로
git pull --rebase를 하면 conflict이 발생한다.
rebase 이용
서버에 있는 commit을 가지고 와서
그 상태에서 로컬에서 만든 이 commit을 위에다가 적용하기 위함
git mergetool를 열어서 수정을 하고 저장한다.
git mergetool
rebase를 계속한다.
git rebase --continue
깔끔하게 정리된 것을 확인할 수 있다.
서버에 있는 commit들을 그대로 가지고와서
나의 기존의 로컬에서 commit이 되었던 local change만
rebase를 했기 때문에 이 commit만 새로운 commit이 된다.
서버에서 받아온 commit은 그대로 유지되는 것을 확인할 수 있다.
push해서 서버에 업로드한다.
git push
서버에서 확인하면 local change commit이 업로드된 것을 확인할 수 있다.