[TIL] 21.02.23.(Tue)

Ryan (Geonhee) Son·2021년 2월 23일
0
post-thumbnail

수행 내용

  • Git, GitHub 학습
  • Git 사용을 위한 초기 설정
  • GitHub Repository 생성
  • 모둠원 GitHub Repository fork, 로컬 저장소 clone, 충돌 유도 및 충돌 해결
  • Pull Request (PR)를 수행하는 일련의 과정 (저장소 fork, local repo로 clone, 수정/staging/commit/push)
  • 신규 프로젝트 fork 및 모둠원 Collaborator 초대

학습 내용

버전 관리 시스템 (VCS)

  • 파일의 변경이력을 기록하여 관리를 용이하게 해주는 것

Git

가장 잘 알려져 있고 널리 사용하는 VCS

Local / Remote Workflow


Source: Git Tower - Learn Version Control With Git (Online Book)

  • Working Directory: 실제 작업 공간, 실제 파일들로 이루어져 있음.
    • git add 명령을 통해 Staging Area로 이동
  • Staging Area (Index): Git이 변경 이력을 관리하는 부분
    • git commit 명령을 통해 Local Repository로 이동
  • Local Repository: 이번 변경에 대한 확정본 (commit) 저장
    • git push 명령을 통해 Remote Repository로 이동
  • Remote Repository: 외부 서버에 위치하여 변경 이력을 기록하는 부분
    • git clone 명령을 통해 내 Remote Repository에 있는 저장소 또는 다른 사람의 저장소의 자료 복제 가능
    • git pull 명령을 통해 이미 remote 설정이 되어있는 저장소의 업데이트 다운로드 가능
    • git clone은 아래 과정을 함께 수행하는 것으로 자동으로 remote 설정이 필요한 초기 다운로드에 활용
      • git init (git 프로젝트 시작)
      • git remote add origin {url} (url을 원격 저장소로 지정)
      • git pull origin master (원격 저장소 내용을 현재 master에 받아옴)

프로젝트 시 Git과 GitHub의 활용

문제점 / 고민한 점

다른 사람의 저장소에 대한 git push 명령 거부

  • git clone을 통해 다른 사람 저장소 자료를 내 작업 공간으로 가져온다고 해서 push까지 자유롭게 할 수 있는 것은 아니다 (당연한 사실이지만 처음 거부 당했을 때는 당황했음).

충돌 유도 및 충돌 해결

  • 처음 경험한 충돌은 서로 다른 브랜치에서 같은 파일을 수정하여 병합하는 과정에서 발생했다.
  • 두번째는 타인의 저장소에 Collaborator로 등록된 상태에서 main branch의 같은 파일을 서로 다른 내용으로 수정하여 push하는 과정에서 발생했다.

해결 방법

[해결] 다른 사람의 저장소에 대한 git push 명령 거부

  • Kio가 저장소 내 Collaborator 초대 기능을 알려주어 해결하였음.
  • Collaborator 설정은 저장소 Settings - Manage Access란에서 할 수 있다.
  • 이와 같이 직접적으로 타인의 저장소에 기여하는 방법(저장소 주인이 Collaborator를 완전히 신뢰하는 경우)이 있고 , fork를 통해 내 저장소로 복제해와서 직접 작업 후 Pull Request (PR)를 통해 기여하는 방법(제거 어때요..? 괜찮으시면 반영해보쉴..?)이 있다는 내용을 학습함.

[해결] 충돌 유도 및 충돌 해결

  • GitHub는 이처럼 서로 다른 작업 내용이 덮어씌워지려고 하는 경우 감지하여 충돌을 발생시키는 것으로 이해되며, push하고자 하는 사람의 작업물에 이전에 push한 내용을 함께 알려줌으로써 최종본을 만들 수 있게끔 도와준다.
  • 최종본을 확정하여 다시 push하면 정상적으로 Remote Repository에 등록된다.

참고링크

profile
합리적인 해법 찾기를 좋아합니다.

0개의 댓글