GIT(47)
-
[GIT] 브랜치 병합 여부 확인
다수의 브랜치가 있을 때는 어느 브랜치가 병합을 완료한 것인지 알기 어렵다. 브랜치를 병합하고 바로 병합된 브랜치를 삭제하면 이런 혼동을 줄일 수 있다. 깃은 병합한 브랜치와 병합하지 않은 브랜치를 구분하는 옵션을 제공한다. $ git branch --merged 병합한 브랜치를 보여준다. 병합을 완료한 브랜치는 -d 옵션을 사용하여 삭제할 수 있다. $ git branch --no-merged 병합하지 않은 브랜치를 보여준다. 병합하지 않은 브랜치는 -d 옵션 말고 -D 옵션을 사용하여 삭제할 수 있다.
2022.08.10 -
[GIT] 충돌
보통 충돌은 3-way 병합이 실패한 경우이다. 충돌이 생기는 상황 대부분의 충돌 원인은 같은 위치의 코드를 동시에 수정했기 때문이다. 파일을 수정할 때 여러 개발자가 서로 다른 위치를 수정했다면 깃에서 서로 다른 위치의 소스를 자동으로 병합하기 때문에 문제가 없다. 같은 위치를 동시에 수정하면 두 수정 중 어떤 것이 맞는지 깃에서 알 수 없기 때문에 충돌이 일어난다. 깃은 충돌 오류를 알려주고 개발자가 직접 수정하여 해결해야 한다. 충돌 만들기 footer 브랜치와 master 브랜치에서 동일한 파일의 동일한 코드 위치를 수정하였다. 그리고 병합 명령어를 실행하였더니 충돌이 발생했다. 두 브랜치의 index.html 파일에서 같은 위치의 내용을 다르게 수정해서 충돌이 발생했다. 소스트리에서 충돌이 발생..
2022.08.10 -
[GIT] 브랜치 삭제
브랜치를 병합한 후에는 병합한 브랜치를 어떻게 관리할지 결정해야 한다. 일반적으로 병합한 이후 병합된 브랜치를 삭제한다. 지속적인 통합과 개발을 해야 하는 브랜치라면 병합 후에도 계속 남겨둔다. ※ 깃 플로 브랜치 관리 기법으로 깃 블로에는 기본적으로 master, feature, develop, release, hotfix 브랜치가 있다. 이 중에서 develop 브랜치는 master 브랜치에 병합한 후에도 삭제하지 않고 계속 유지한다. 이렇게 오랫동안 유지하는 브랜치를 long-running 브랜치라 한다. 병합 후 삭제 병합된 브랜치의 커밋은 모두 원본 브랜치에 적용된다. 불필요한 브랜치라면 삭제하는게 맞다. $ git branch -d 브랜치명 hotfix 브랜치를 삭제해도 소스트리에는 붉은색 경..
2022.08.10 -
[GIT] 3 - way 병합
여러 개발자와 협업으로 작업하는 경우 대부분 3-way 병합을 사용한다. 브랜치 생성과 수정 작업 새 브랜치 hotfix에서 index.html 코드를 두 번 수정하여 각각 커밋을 진행하였다. 마스터 변경 master 브랜치에도 새로운 커밋 두 번 추가하였다. 브랜치 경로에서 커밋을 한 시점을 순차적으로 표시한 것을 볼 수 있다. 공통 조상 두 브랜치를 병합하려면 분할 기준인 공통 커밋을 찾아야한다. 공통 조상 커밋이라 하는데 공통 조상 커밋까지 포함하는 브랜치와 분기된 새로운 두 브랜치, 이렇게 3개를 하나로 병합해야 한다. 깃은 공통 조상 커밋을 자동으로 찾아준다. 병합 커밋 공통 조상 커밋을 기준으로 브랜치를 병합한다. 병합을 성공적으로 완료하면 새로운 커밋을 추가로 하나 생성한다. 새로 생성된 커..
2022.08.10 -
[GIT] Fast-Forward 병합
깃의 가장 간단한 브랜치 병합은 Fast-Forward 방식이다. 일반적으로 이 방식은 혼자 개발할 때 사용한다. 혼자 개발할 때는 브랜치가 생성된 커밋에 따라 순차적으로 분기되고 코드 수정도 순차적으로 할 때가 많기 때문이다. 로컬 저장소에 index.html 파일 하나가 커밋된 상태이다. 브랜치 생성과 수정 작업 master 브랜치 외 새 브랜치 feature를 생성하였다. 브랜치 생성할 때 분기 기준은 master 최종 커밋 포인터이다. rev-parse 명령어를 사용하면 최종 커밋 아이디를 알 수 있다. $ git rev-parse 브랜치명 해당 브랜치에서의 최종 커밋 아이디 출력 master와 feature 브랜치는 최종 커밋이 동일한 상태이다. feature 브랜치에서 태그를 추가하였다. 이어..
2022.08.10 -
[GIT] 병합
브랜치를 생성하는 목적은 원본 코드에 영향을 주지 않고 분리하여 개발하기 위해서다. 독립된 브랜치에서 개발 작업이 끝나면 다시 원본 브랜치에 작업한 결과를 반영해야 한다. 분리도니 브랜치를 한 브랜치로 합치는 작업을 병합이라 한다. 두 코드를 하나씩 직접 비교하여 수동으로 병합하거나 깃 같은 도구를 사용하여 자동으로 병합할 수 있다. 수동 병합 원본 소스 코드에 수정된 내역을 반영하는데 작업한 내용을 옮겨 적는 것은 많은 노동력을 요하는 일이다. 소스 코드가 많다면 수동 병합은 매우 복잡하다. 깃으로 자동 병합 깃의 자동 병합은 원본을 기준으로 두 파일의 변경 이력을 비교하고 변경된 파일 내용이 발견되면 자동으로 수정된 코드 내용을 병합하는 것이다. 깃의 병합은 브랜치를 기준으로 한다. 병합하고자 하는 ..
2022.08.10