강의자료 · 로봇기초실습

GitHub 협업

학습 목표

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

실행 조건

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

한 파일의 변경 추적

시작 조건

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과의 차이를 다시 확인하세요.

남길 결과

from pathlib import Path
import tempfile, subprocess
lab_tmp=tempfile.TemporaryDirectory(prefix='course-git-')
repo=Path(lab_tmp.name)
def git(*args):
    return subprocess.check_output(['git','-C',str(repo),*args],text=True).strip()
git('init','-b','main');git('config','user.name','Learner');git('config','user.email','learner@example.invalid')
(repo/'README.md').write_text('Robot experiment\nCondition: baseline\n')
git('add','README.md');git('commit','-m','Record baseline')
print(repo,git('log','--oneline'))

결과 기록·자가 점검

단계:

파일 내용:

작업 트리 상태:

Commit 메시지:

확인할 점

Branch에서 실험 조건 분리

시작 조건

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

진행 방법

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

남길 결과

# 앞 셀의 repo와 git 함수를 사용합니다.
print(git('branch','--show-current'))
# TODO: experiment Branch를 만들고 변경·Commit·Merge를 기록하세요.

결과 기록·자가 점검

Branch·단계:

README 내용:

HEAD Commit:

변경의 위치:

확인할 점

충돌을 재현하고 해결

시작 조건

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

진행 방법

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

남길 결과

print(git('status','--short'))
# TODO: 같은 줄의 충돌을 만들고 최종 변경을 기록하세요.

결과 기록·자가 점검

상황:

Merge 결과:

선택한 최종 문장:

선택 이유:

확인할 점