Udacity: How to use Git and Github
Jake와 Rachel 두 사람이 작업하던 프로젝트를 어느 한 시점에 합친다고 가정하자.
Jake는 그 와중에 B,D,E라는 코드를 작성했고,
Rachel은 A,B,C,D라는 코드 부분을 작성했다고 할때, 두 시점에서 두 파일을 합쳐 하나의 파일을 만든다면 어느 코드 부분이 포함되어야 하는가?
공통된 부분인 B,D는 포함되어야 할 것이고,
한 쪽에만 있는 부분은 원래 있었던 것이 삭제된 것인지 임의로 추가된 것인지 알수 없다.
그렇다면 원래 둘이 어떤 공통의 파일에서 시작했는지를 안다면?
공통인 B,D는 당연히 포함이고, Jake는 A를 어떤 이유로 삭제했다. 그렇다면 합쳐진 파일에서도 A는 존재해서는 안 될 것이다. C와 E는 원래에서는 존재하지 않았던 부분이므로 포함되어야 할 것이다.
이제 실제의 예를 보자.
개발이 완료된 coins 브랜치와 master 브랜치를 하나로 merging 하는 원리도 위와 같다.
분지되기 전의 revert controls라는 commit이 original, 또는 parent로 작용하여 merging 한다.
이제 실제로 merge하는 명령어를 입력해 본다.
git branch하여 현재의 branch들을 확인하고,
git merge <Br1> <Br2>를 입력한다.
그러면 commit message비슷하게 Merge Message창이 뜨고 필요시에는 메세지를 변경한다(대부분 그냥 둔다).
merge 이후에는 두 브랜치의 커밋들이 합쳐져서 시간순서로 정렬되어 나타나므로 서로 다른 브랜티에서 온 두 커밋들을 git diff 하면 다른 부분이 많아 비교하기가 어렵다.
이 경우에는
git show <commit ID> 하면 commit과 parent를 비교하여 주므로 다른 부분을 줄여서 볼 수 있다.
댓글 없음:
댓글 쓰기