[오픈소스설계] reset과 checkout

밥슌·2024년 10월 2일

🐈‍⬛github

목록 보기
10/12
post-thumbnail

[실습1]

이 과제는 두 명의 개발자가 서로 다른 컴퓨터에서 협력하는 상황을 시뮬레이션한 Git 및 GitHub 실습입니다.

1. 새로운 프로젝트를 로컬 저장소에 생성하고 Github에 업데이트하기 (1번 개발자)

목표: 로컬 저장소에서 새로운 프로젝트를 만들고, 이를 GitHub의 원격 저장소에 업데이트하는 절차입니다.

  1. 로컬에서 새로운 프로젝트 생성:

    mkdir MyRepository
    cd MyRepository
    git init
    • MyRepository라는 디렉토리를 생성하고, 그 디렉토리에서 Git을 초기화합니다.
  2. 새로운 파일 생성:

    echo "first project" > first.txt
    • first.txt 파일을 생성하고, 그 안에 "first project"라는 내용을 추가합니다.
  3. 커밋하기:

    git add first.txt
    git commit -m "first"
    • first.txt 파일을 스테이징하고, "first"라는 메시지로 커밋합니다.
  4. 커밋 이력 확인:

    git log --oneline
    • 현재까지의 커밋 이력을 한 줄로 요약하여 확인할 수 있습니다.
  5. GitHub에 새로운 원격 저장소 생성:

    • GitHub 웹사이트에서 RemoteMyRepository라는 이름으로 새로운 원격 저장소를 생성합니다.
  6. 원격 저장소를 로컬에 추가:

    git remote add origin https://github.com/사용자이름/RemoteMyRepository.git
    • origin이라는 이름으로 원격 저장소를 로컬 저장소에 연결합니다.
  7. 원격 저장소로 푸시:

    git push -u origin main
    • main 브랜치에 푸시합니다. -u 옵션은 추후 푸시할 때 브랜치 정보를 생략할 수 있게 합니다.
  8. GitHub에서 원격 저장소 확인:

    • GitHub 웹사이트에서 푸시한 내용이 업데이트된 것을 확인합니다.

2. Github의 프로젝트를 복제하고 내용을 수정하여 원격저장소에 업데이트 하기 (2번 개발자)

목표: 2번 개발자가 GitHub에 있는 원격 저장소를 로컬로 복제하고, 내용을 수정하여 다시 업데이트하는 절차입니다.

  1. 원격 저장소 복제:

    git clone https://github.com/사용자이름/RemoteMyRepository.git
    cd RemoteMyRepository
    • 원격 저장소를 복제한 후, 해당 디렉토리로 이동합니다.
  2. 파일 수정:

    echo "new project" >> first.txt
    • first.txt 파일에 "new project"라는 내용을 추가합니다.
  3. 커밋하기:

    git add first.txt
    git commit -m "new project"
    • 수정한 파일을 스테이징하고 "new project"라는 메시지로 커밋합니다.
  4. 커밋 이력 확인:

    git log --oneline
    • 커밋 이력을 확인합니다.
  5. 원격 저장소로 푸시:

    git push origin main
    • 수정된 내용을 원격 저장소에 푸시합니다.
  6. GitHub에서 확인:

    • GitHub 웹사이트에서 수정된 내용이 반영되었는지 확인합니다.

3. 2번 개발자가 업데이트한 내용을 로컬 저장소로 업데이트하기 (1번 개발자)

목표: 1번 개발자가 2번 개발자가 수정한 내용을 원격 저장소로부터 가져와서 업데이트하는 절차입니다.

  1. 원격 저장소로부터 pull:

    git pull origin main
    • 원격 저장소의 main 브랜치 내용을 로컬로 가져옵니다.
  2. 파일 확인:

    cat first.txt
    • first.txt 파일을 확인하여 2번 개발자의 수정 내용이 반영되었는지 확인합니다.
  3. 커밋 이력 확인:

    git log --oneline
    • 커밋 이력을 확인합니다.

4. 1, 2번 개발자가 작업을 하고 원격 저장소로 업데이트하기 (1, 2번 개발자)

목표: 1번과 2번 개발자가 각자 로컬에서 파일을 수정한 후, 이를 원격 저장소에 업데이트하는 과정에서 충돌이 발생할 수 있으며, 이를 해결하는 방법입니다.

  1. 1번 개발자가 내용 추가 및 커밋:

    echo "1번 개발자가 내용 추가" >> first.txt
    git add first.txt
    git commit -m "1번 개발자가 내용 추가"
  2. 2번 개발자가 내용 추가 및 커밋:

    echo "2번 개발자가 내용 추가" >> first.txt
    git add first.txt
    git commit -m "2번 개발자가 내용 추가"
  3. 2번 개발자가 원격 저장소로 푸시:

    git push origin main
  4. 1번 개발자가 원격 저장소로 푸시하려고 할 때 충돌 발생:

    git push origin main
    • 이 단계에서 충돌이 발생할 수 있습니다. 충돌이 발생하면 Git이 자동으로 이를 알려줍니다.
  5. 충돌 해결:

    git pull origin main
    • 1번 개발자는 먼저 원격 저장소의 내용을 가져와 충돌을 해결해야 합니다. first.txt 파일을 열어 수동으로 두 개발자의 변경 사항을 조정합니다.
  6. 충돌 해결 후 커밋:

    git add first.txt
    git commit -m "충돌 해결"
  7. 원격 저장소로 다시 푸시:

    git push origin main
  8. GitHub에서 확인:

    • GitHub에서 모든 변경 사항이 성공적으로 반영되었는지 확인합니다.

이렇게 모든 과제를 해결할 수 있습니다! 각 단계마다 주어진 명령어를 순서대로 실행하면 문제를 해결할 수 있으며, 충돌이 발생했을 경우에는 수동으로 수정한 후 다시 커밋하는 과정을 통해 해결할 수 있습니다.


[실습2]

2. left 브랜치와 master 브랜치 머지

  1. master 브랜치로 전환:

    git checkout master
  2. left 브랜치를 master 브랜치에 머지:

    git merge left
  3. 머지 확인: 아래 명령어로 커밋 이력을 확인하여 머지가 정상적으로 되었는지 확인하세요.

    git log --oneline --graph --all

    이 명령어로 머지 커밋이 생성되고, project_file이 제공된 예시와 같은 내용으로 변경되었는지 확인할 수 있습니다.


3. left 브랜치 삭제

  1. left 브랜치 삭제:

    git branch -d left
  2. 삭제 확인: 모든 브랜치를 나열해서 left 브랜치가 삭제되었는지 확인하세요.

    git branch

    또는 커밋 이력을 확인해 left 브랜치가 더 이상 존재하지 않는 것을 확인할 수 있습니다:

    git log --oneline --graph --all

4. master 브랜치에서 project_file 복구

  1. master 브랜치의 첫 번째 커밋으로 이동:

    git checkout <첫 번째 커밋의 해시값>
  2. 첫 번째 커밋의 project_file 상태로 복구:

    git checkout <첫 번째 커밋의 해시값> -- project_file
  3. 변경 사항 스테이징 및 커밋:

    git add project_file
    git commit -m "project_file을 첫 번째 커밋 상태로 복구"

5. left 브랜치와 master 브랜치 다시 머지

  1. right 브랜치를 master 브랜치에 머지 (프로젝트 설정에 따라 right 브랜치가 존재한다고 가정):

    git merge right
  2. 머지 확인:

    git log --oneline --graph --all

    project_filemasterright 브랜치의 변경 사항을 모두 포함하는지 확인합니다.


6. 머지 취소

  1. 마지막 머지 작업 취소:

    git revert -m 1 <머지 커밋의 해시값>

    이 명령어는 마지막 머지 작업을 되돌리는 새로운 커밋을 생성합니다.

  2. 취소 확인: 커밋 이력을 확인하여 머지가 취소되었는지 확인합니다.

    git log --oneline --graph --all

7. HEAD 포인터를 master 브랜치의 두 번째 커밋으로 이동

  1. HEAD 포인터를 master 브랜치의 두 번째 커밋으로 이동:

    git checkout <두 번째 커밋의 해시값>
  2. index와 작업 디렉터리 모두 두 번째 커밋 상태로 리셋:

    git reset --hard <두 번째 커밋의 해시값>

    이 명령어는 작업 디렉터리와 스테이징 영역을 두 번째 커밋 상태로 되돌립니다.


8. right 브랜치 삭제

  1. right 브랜치 삭제:

    git branch -d right
  2. 삭제 확인:

    git branch

    삭제된 후에도 커밋 이력에는 right 브랜치의 변경 사항이 남아있을 것입니다.


위 단계를 차근차근 따라하면 2번부터 8번까지의 작업을 성공적으로 완료할 수 있습니다. 각 단계에 대해 더 자세한 설명이 필요하면 언제든지 질문해 주세요!

profile
마트 시식코너같은 저의 벨로그에 어서오세요.

0개의 댓글