[내일배움캠프 Day7] Git

2024. 12. 24. 12:06·내일배움캠프/TIL

7일차 Git 특강과 관련된 전공 시간에 배웠던 내용을 추가로 정리하였습니다.

 

Git

https://git-scm.com/

 

Git

 

git-scm.com

  • fast version control system
  • 분산 VCS - 팀 공유 작업에 최적화된 도구
  • 누가 언제 무엇을 수정하였는지 tracking - content (not file) oriented
  • 수정된 내용을 되돌릴 수 있음
  • Local / Remote Repository

 

Git은 어떤 점에서 분산 시스템이라고 하는가?

중앙 버전 제어 시스템은 하나의 중앙 repository를 가지고 있으며, 각 사용자는 중앙 repository로부터 파일을 check out 하고 수정 후에 중앙 repo로 변경 사항을 제출합니다.

반면에 Git에서는 각 사용자는 repository를 clone 하여 자신의 지역 repo에서 수정 작업을 수행한 다음에 원격 repo로 수정 사항을 올림으로써 각 사용자들의 각 수정 사항이 서로 다른 commit ID를 가지고 버전 제어가 되도록 합니다. 즉, 각 사용자가 로컬에 독립적인 Repository를 가지고, 중앙 Repository와 상호작용 없이도 작업이 가능하기 때문에 분산 버전 제어 시스템이라고 합니다.

 

Git structure

 

주요 명령어

  • 로컬 저장소 생성
git init
  • add: 변경 내용을 스테이징 영역에 추가
git add <파일명>
  • commit: 변경 내용을 저장소에 기록
git commit -m "커밋 메시지"
  • push: 로컬 변경 사항을 원격 저장소에 업로드
git push origin main
  • pull: 원격 저장소의 변경 사항을 로컬로 가져오기
git pull
  • clone: 원격 저장소 복제
git clone <저장소 URL>
  • branch: 새로운 브랜치 생성
git branch <브랜치명>
  • merge: 현재 브랜치에 다른 브랜치의 변경 사항을 병합
git merge
  • checkout: 특정 브랜치로 이동
git checkout <브랜치명>

 

merge vs rebase

  • Merge : 기존 브랜치 히스토리를 유지하고 병합 커밋 생성
  • Rebase : 직선형 히스토리를 생성하며 기존 히스토리를 재작성

 

Git vs Github

  • Git과 Github는 version control 소프트웨어(git)와 remote repository 웹서비스(github)
  • Github를 사용하면 사용자의 클라이언트 기계(PC)에서 직접 사용자의 github 계정 안의 repository에 파일을 올려 놓거나 다운 받을 수 있으며 사용법은 매우 직관적이고 쉬움

  • clone : remote repo에서 자신의 local repo로 복제
  • fork : 다른 github 계정의 repo를 자신의 github 계정으로 복사(github의 편의 기능)

 

git fetch origin - 동기화

  • fetch는 commit point 오브젝트와 실제 data를 local repo로 가져오되 아직 local working directory의 파일 시스템에는 반영시키지 않음
  • 사용자가 필요에 따라 merge 명령을 사용해서 local working directory에 반영
  • pull 명령어를 사용해 fetch+merge를 동시에 할 수 있으나 fetch 한 다음에 확인 후 merge하는 것을 권장

 

 

'내일배움캠프 > TIL' 카테고리의 다른 글

[내일배움캠프 Day9] 포인터  (0) 2024.12.27
[내일배움캠프 Day8] C++ 과제 진행  (2) 2024.12.26
[내일배움캠프 Day6] C++ 프로그래밍 기초  (0) 2024.12.23
[내일배움캠프 Day5] 콜리전 수정하기  (3) 2024.12.20
[내일배움캠프 Day4] 플레이어 이동하기  (3) 2024.12.19
'내일배움캠프/TIL' 카테고리의 다른 글
  • [내일배움캠프 Day9] 포인터
  • [내일배움캠프 Day8] C++ 과제 진행
  • [내일배움캠프 Day6] C++ 프로그래밍 기초
  • [내일배움캠프 Day5] 콜리전 수정하기
개발자 밍
개발자 밍
dev0404 님의 블로그 입니다.
  • 개발자 밍
    Developer
    개발자 밍
  • 전체
    오늘
    어제
    • 분류 전체보기 (88)
      • 강의 (8)
        • UE Climbing System (3)
        • UE Dungeon (1)
        • HCI (4)
      • 책 (18)
        • 객체지향의 사실과 오해 (5)
        • Effective C++ (3)
        • 이득우의 게임 수학 (4)
        • 이것이 취업을 위한 컴퓨터 과학이다 (4)
        • 리뷰 (2)
      • C++ (2)
      • 알고리즘 (2)
      • 자료구조 (1)
      • Unreal (4)
      • 내일배움캠프 (52)
        • TIL (52)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    객체지향
    컴퓨터구조
    c++
    언리얼
    게임수학
    내일배움캠프
    자료구조
    Effective
    컴퓨터 구조
    알고리즘
    그래픽스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
개발자 밍
[내일배움캠프 Day7] Git
상단으로

티스토리툴바