강의자료 · 마이크로프로세서응용설계

GitHub 협업 · 학습

실행 조건

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

이번에 배울 내용

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

전체 흐름

파일 수정 → diff·Commit → Branch·Merge → 최종 내용 검증

Commit은 비교 가능한 지점

파일을 저장하는 것과 Git Commit은 다릅니다. 작은 의미 단위로 변경을 기록하고 diff로 무엇이 바뀌었는지 읽습니다. Branch는 실험을 따로 진행할 이력의 이름입니다.

충돌은 의도를 결정하는 문제

같은 줄이 다르게 바뀌면 Git이 올바른 최종 내용을 정할 수 없습니다. 두 변경의 목적을 읽고 원하는 내용을 남긴 뒤 다시 실행해 확인합니다. 단순히 충돌 표시만 지우는 것으로 검증이 끝나지 않습니다.

풀이 예제

코드가 만든 임시 저장소의 README.md에서 Condition: baseline을 Condition: test로 바꿉니다.

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'))
/var/folders/w7/d9v_mh_s5gbgqlr6pvxd72t40000gn/T/course-git-ecbsztiq e629da2 Record baseline

참고 예제

추가 예제 보기

참고 자료