소프트웨어 개발과 프로젝트 관리

Git에서 두 개발자가 같은 파일의 같은 행을 각각 다른 브랜치에서 고쳐 쓰고, 한쪽 브랜치를 다른 쪽에 병합했다. 이때 일어나는 일로 적절한 것은?

  1. A커밋 일시가 새로운 쪽의 변경이 자동으로 채택되고, 오래된 쪽의 변경은 버려진다
  2. B받아들이는 쪽 브랜치의 변경이 항상 우선되고, 상대의 변경은 자동으로 버려진다
  3. C충돌(conflict)로서 병합이 멈추고, 개발자가 내용을 확인하여 어느 쪽을 남길지(또는 둘을 조합할지)를 정해 해소한다
정답과 해설 보기

정답: C. 충돌(conflict)로서 병합이 멈추고, 개발자가 내용을 확인하여 어느 쪽을 남길지(또는 둘을 조합할지)를 정해 해소한다

Git의 병합은 공통 조상으로부터의 변경을 두 브랜치에 대해 비교하고, 서로 다른 곳의 변경이면 자동으로 조합합니다. 같은 부분이 양쪽에서 변경되어 있으면 어느 쪽이 올바른지 기계적으로 정할 수 없으므로, 충돌로서 병합을 멈추고 파일 안에 양쪽의 내용을 표시합니다. 개발자는 그것을 편집하여 해소하고, 테스트한 뒤에 커밋합니다. 충돌을 줄이려면 브랜치를 오래 나눈 채로 두지 말고 자주 통합하는 것이 효과적입니다.

이 분야 연습하기 분야로 돌아가기

소프트웨어 개발과 프로젝트 관리의 다른 문제

  1. 설계서나 소스 코드의 리뷰 방법 중, 모더레이터(진행자)가 주도하고 참가자의 역할을 정하며, 체크리스트 등을 사용해 공식적으로 수행하고, 발견한 결함을 기록하여 수정까지 확인하는 것은?
  2. 올바르게 동작하는 것으로 알려진 펌웨어 버전 뒤에 1,000개의 커밋이 있고, 최신 커밋에서는 결함이 일어난다. 결함은 어느 한 커밋에서 들어왔고, 그 이후의 커밋에서는 모두 일어난다고 한다. git bisect처럼 이진 탐색으로 원인 커밋을 특정할 때, 빌드하여 테스트하는 횟수의 최댓값은?
  3. 프로젝트의 산출물과 작업을 계층적으로 분해한 WBS에서, 가장 아래 계층에 있으며 소요 기간이나 비용을 추정하고 담당자를 할당하는 단위는?
  4. 결합점을 ①~⑥으로 하고 작업을 '이름: 시작점→끝점, 소요 일수'로 나타내면, A: ①→②, 6일, B: ①→③, 4일, C: ②→④, 4일, D: ③→⑤, 4일, E: ④→⑥, 2일, F: ⑤→⑥, 3일, 더미 작업: ②→③(소요 일수 0)이 되는 화살표 다이어그램이 있다. 프로젝트 전체의 최단 소요 일수는?
  5. 작업과 소요 일수, 선행 작업이 A: 4일(선행 작업 없음), B: 2일(없음), C: 3일(A), D: 2일(B), E: 5일(C), F: 4일(C와 D), G: 2일(F)인 프로젝트가 있다. 다른 작업은 가능한 한 일찍 시작할 때, 작업 B의 시작을 늦춰도 전체 소요 일수가 늘어나지 않는 최대 일수는?