
이 과제는 두 명의 개발자가 서로 다른 컴퓨터에서 협력하는 상황을 시뮬레이션한 Git 및 GitHub 실습입니다.
목표: 로컬 저장소에서 새로운 프로젝트를 만들고, 이를 GitHub의 원격 저장소에 업데이트하는 절차입니다.
로컬에서 새로운 프로젝트 생성:
mkdir MyRepository
cd MyRepository
git init
MyRepository라는 디렉토리를 생성하고, 그 디렉토리에서 Git을 초기화합니다.새로운 파일 생성:
echo "first project" > first.txt
first.txt 파일을 생성하고, 그 안에 "first project"라는 내용을 추가합니다.커밋하기:
git add first.txt
git commit -m "first"
first.txt 파일을 스테이징하고, "first"라는 메시지로 커밋합니다.커밋 이력 확인:
git log --oneline
GitHub에 새로운 원격 저장소 생성:
RemoteMyRepository라는 이름으로 새로운 원격 저장소를 생성합니다.원격 저장소를 로컬에 추가:
git remote add origin https://github.com/사용자이름/RemoteMyRepository.git
origin이라는 이름으로 원격 저장소를 로컬 저장소에 연결합니다.원격 저장소로 푸시:
git push -u origin main
main 브랜치에 푸시합니다. -u 옵션은 추후 푸시할 때 브랜치 정보를 생략할 수 있게 합니다.GitHub에서 원격 저장소 확인:
목표: 2번 개발자가 GitHub에 있는 원격 저장소를 로컬로 복제하고, 내용을 수정하여 다시 업데이트하는 절차입니다.
원격 저장소 복제:
git clone https://github.com/사용자이름/RemoteMyRepository.git
cd RemoteMyRepository
파일 수정:
echo "new project" >> first.txt
first.txt 파일에 "new project"라는 내용을 추가합니다.커밋하기:
git add first.txt
git commit -m "new project"
커밋 이력 확인:
git log --oneline
원격 저장소로 푸시:
git push origin main
GitHub에서 확인:
목표: 1번 개발자가 2번 개발자가 수정한 내용을 원격 저장소로부터 가져와서 업데이트하는 절차입니다.
원격 저장소로부터 pull:
git pull origin main
main 브랜치 내용을 로컬로 가져옵니다.파일 확인:
cat first.txt
first.txt 파일을 확인하여 2번 개발자의 수정 내용이 반영되었는지 확인합니다.커밋 이력 확인:
git log --oneline
목표: 1번과 2번 개발자가 각자 로컬에서 파일을 수정한 후, 이를 원격 저장소에 업데이트하는 과정에서 충돌이 발생할 수 있으며, 이를 해결하는 방법입니다.
1번 개발자가 내용 추가 및 커밋:
echo "1번 개발자가 내용 추가" >> first.txt
git add first.txt
git commit -m "1번 개발자가 내용 추가"
2번 개발자가 내용 추가 및 커밋:
echo "2번 개발자가 내용 추가" >> first.txt
git add first.txt
git commit -m "2번 개발자가 내용 추가"
2번 개발자가 원격 저장소로 푸시:
git push origin main
1번 개발자가 원격 저장소로 푸시하려고 할 때 충돌 발생:
git push origin main
충돌 해결:
git pull origin main
first.txt 파일을 열어 수동으로 두 개발자의 변경 사항을 조정합니다.충돌 해결 후 커밋:
git add first.txt
git commit -m "충돌 해결"
원격 저장소로 다시 푸시:
git push origin main
GitHub에서 확인:
이렇게 모든 과제를 해결할 수 있습니다! 각 단계마다 주어진 명령어를 순서대로 실행하면 문제를 해결할 수 있으며, 충돌이 발생했을 경우에는 수동으로 수정한 후 다시 커밋하는 과정을 통해 해결할 수 있습니다.

master 브랜치로 전환:
git checkout master
left 브랜치를 master 브랜치에 머지:
git merge left
머지 확인: 아래 명령어로 커밋 이력을 확인하여 머지가 정상적으로 되었는지 확인하세요.
git log --oneline --graph --all
이 명령어로 머지 커밋이 생성되고, project_file이 제공된 예시와 같은 내용으로 변경되었는지 확인할 수 있습니다.
left 브랜치 삭제:
git branch -d left
삭제 확인: 모든 브랜치를 나열해서 left 브랜치가 삭제되었는지 확인하세요.
git branch
또는 커밋 이력을 확인해 left 브랜치가 더 이상 존재하지 않는 것을 확인할 수 있습니다:
git log --oneline --graph --all
master 브랜치의 첫 번째 커밋으로 이동:
git checkout <첫 번째 커밋의 해시값>
첫 번째 커밋의 project_file 상태로 복구:
git checkout <첫 번째 커밋의 해시값> -- project_file
변경 사항 스테이징 및 커밋:
git add project_file
git commit -m "project_file을 첫 번째 커밋 상태로 복구"
right 브랜치를 master 브랜치에 머지 (프로젝트 설정에 따라 right 브랜치가 존재한다고 가정):
git merge right
머지 확인:
git log --oneline --graph --all
project_file이 master와 right 브랜치의 변경 사항을 모두 포함하는지 확인합니다.
마지막 머지 작업 취소:
git revert -m 1 <머지 커밋의 해시값>
이 명령어는 마지막 머지 작업을 되돌리는 새로운 커밋을 생성합니다.
취소 확인: 커밋 이력을 확인하여 머지가 취소되었는지 확인합니다.
git log --oneline --graph --all
HEAD 포인터를 master 브랜치의 두 번째 커밋으로 이동:
git checkout <두 번째 커밋의 해시값>
index와 작업 디렉터리 모두 두 번째 커밋 상태로 리셋:
git reset --hard <두 번째 커밋의 해시값>
이 명령어는 작업 디렉터리와 스테이징 영역을 두 번째 커밋 상태로 되돌립니다.
right 브랜치 삭제:
git branch -d right
삭제 확인:
git branch
삭제된 후에도 커밋 이력에는 right 브랜치의 변경 사항이 남아있을 것입니다.
위 단계를 차근차근 따라하면 2번부터 8번까지의 작업을 성공적으로 완료할 수 있습니다. 각 단계에 대해 더 자세한 설명이 필요하면 언제든지 질문해 주세요!