4주차 - Git & Github

김명관·2024년 1월 22일

ASAC 4기 

목록 보기
5/6

로컬 코드 관리 : Git & 협업 관리 : Github

  • 일반적인 버전 관리 : 파일 기반
  • Git 버전 관리 : Diff 기반 = 직전 버전 대비 변경 사항
  • Local Repository와 Remote Repository 차이
    • Local Repository : 로컬 코드 관리 -> Git
      • 다양한 버전 : 로컬에서 작업한 내용을 적용
      • 히스토리 추적 : 이전 적용내용 확인
      • 안전히 원격 저장 : 로컬 작업 내용들 모두 원격으로 백업
    • Remote Repository : 협업 관리 -> Github
      • 동료 개발자가 적용해놓은 최신 코드를 이어 받아 개발하기

Local Repository와 Remote Repository 사이

  • Push : Local Repository -> Remote Repository
  • Pull : Remote Repository -> Local Repository
  • Conflict : Push 혹은 Pull시 '직전' 기준 충돌

2개의 Conflict 해결책

  • Rebase : 현재 내 작업물의 Base를 다시 설정한 뒤, 다시 커밋을 쌓는다

    • 단점 : 내가 작업했던 커밋들이 다시 생성되기에, 히스토리가 리셋된다
  • Merge : 현재 내 작업물과 Remote에 업로드되어있는 상대 작업물 모두 존중하고, 머지 커밋을 만든다

    • 단점 : 머지 커밋이 덕지덕지 생성되어서 머지 수가 많아짐에 따라 커밋이 좀 더러워진다

Git 구조

  • (1). Remote

  • (2). Local

    • (3). Working Directory : 작업공간 : 지금 VSCode에 로드된 브랜치

      • Tracked : Git이 추적하는 파일들의 집합
        • (4). Staging Area : Commit되기위해 대기중인 파일들
          • Git Commit 명령어 시 여기에 있는 파일들이 스냅샷 찍힘
        • Unstaged : 수정된 파일들의 집합
          • 이 중에서 Commit 하고자 하는 것들을 Staging Area로 올린다
      • Untracked : Git이 추적하지 않는 파일들의 집합

Remote Repository에서 최신 브랜치 가져오기

Pull = Fetch + Merge

  • Fetch : FETCH_HEAD
  • Merge
    • fast-forward : Remote에 내 작업과 겹치는 어떠한 타인의 작업도 없을때, 그대로 이어 붙이기
    • 3-way merging : Remote에 있는 타인의 작업 그대로, 내 작업 그대로 보존하고 머지 커밋 생성
    • squash merging : Remote에 있는 타인의 작업 기준으로 다시 내가 작업하여 하나의 커밋으로 뭉쳐 생성

profile
신입 백엔드 개발자

0개의 댓글