GitHub 협업

여러 사람이 같은 파일을 바꿀 때, 변경 내용을 잃지 않고 합치는 과정을 안전한 로컬 예제로 익힙니다.

실습 전에

01 Commit과 Branch는 무엇을 보관할까요?

설명

Commit은 변경 이력의 한 지점, Branch는 그 이력을 가리키는 이름입니다.

02 같은 줄을 다르게 수정하면 왜 자동 Merge가 어려울까요?

설명

서로 다른 의도를 Git이 결정할 수 없으므로 사람이 원하는 최종 내용을 정해야 합니다.

실행 조건

기준 실습은 임시 Local Git 저장소를 사용합니다. GitHub 계정이나 원격 저장소 연결 없이 변경·Branch·Merge를 확인할 수 있습니다.

실습

실습용 노트북 미리보기실습용 노트북 다운로드

1. 한 파일의 변경 추적

시작 조건

repo는 Notebook 커널이 실행되는 컴퓨터의 임시 저장소입니다. 그 안의 README.md에서 Condition: baseline을 Condition: test로 바꿉니다.

진행 방법

  1. 기준 Commit을 확인한 뒤 같은 Notebook의 새 코드 셀에서 repo/'README.md'를 읽고 해당 문장 한 줄만 바꾸어 저장하세요. 파일 경로는 repo를 기준으로 사용합니다.
  2. 제공된 git(*args) 함수를 코드 셀에서 호출해 diff와 status를 기록하세요. 예를 들어 print(git('diff'))로 변경 내용을 표시할 수 있습니다.
  3. 변경을 Commit한 뒤 직전 Commit과의 차이를 다시 확인하세요.

남길 결과

기록 항목과 확인할 점
단계
파일 내용
작업 트리 상태
Commit 메시지

확인할 점

  • 파일의 변경과 Commit된 이력이 구분되는가?
  • 기록에 비밀번호나 토큰이 없는가?

2. Branch에서 실험 조건 분리

시작 조건

같은 저장소에 experiment Branch를 만들고 README.md에 Rate: 10 Hz를 추가합니다.

진행 방법

  1. experiment에서 Commit한 뒤 main으로 돌아가 파일 내용을 비교하세요.
  2. 두 Branch의 이력을 log --oneline --all --graph로 확인하세요.
  3. main에 Merge한 후 파일과 이력에 무엇이 남는지 적으세요.

남길 결과

기록 항목과 확인할 점
Branch·단계
README 내용
HEAD Commit
변경의 위치

확인할 점

  • Branch를 바꾸기 전 작업 트리가 깨끗한가?
  • Merge 전 main 파일과 Merge 후 main 파일을 실제로 읽었는가?

3. 충돌을 재현하고 해결

시작 조건

main과 experiment에서 같은 Condition 줄을 서로 다른 값으로 수정해 각각 Commit합니다.

진행 방법

  1. Merge를 시도하고 충돌 표시가 생긴 파일을 보관하세요.
  2. 선택한 최종 조건을 한 줄로 정리해 충돌을 해결하고 Commit하세요.
  3. 서로 다른 줄을 수정했을 때와 같은 줄을 수정했을 때의 차이를 설명하세요.

남길 결과

기록 항목과 확인할 점
상황
Merge 결과
선택한 최종 문장
선택 이유

확인할 점

  • 충돌 표식 <<<<<<<, =======, >>>>>>>이 최종 파일에 남지 않았는가?
  • 해결 후 git status가 깨끗한가?