본문 바로가기
CS(Computer Science)/소프트웨어공학

2.Git/Github

by 동욷 2023. 2. 6.

#git #github

  • fast version control system
  • open source
  • github는 매우 유용한 서비스지만 git의 일부는 아님
  • github는 remote repository (git server) 중 하나
  • 2005년 Linux
  • 분산 VCS ( all version control activites are local, no connection required)
  • 팀 공유 작업에 최적화된 도구
  • 다수 개발자 사이에 협력을 용이하게 하는 도구
  • 가장 기본적이고 필수적인 DevOps 도구
  • 누가 언제 무엇을 수정하였는지 tracking
  • 수정된 내용을 되돌릴 수 있음
  • Local / Remote Repository

Git distributed architecture

Server Repository

repository

Working Copy

3단계로 구성

장점 : 빠름 / Internet 없어도 작업 가능 / Main repository에 영향을 미치기 전에 개발자간 상의 가능

Crash Safe

Git Structure

Working Directory -> Staging Area : Stage Fixes

Staging Area -> .git directory ( Repository) : Commit

.git directory(Repository) -> Working Directory : Checkout the project

Git's view = snap shot stream

Git on ubuntu

: $sudo apt-get install git // git-all

Git vs Github

Git : version control 소프트웨어

Github : remote repository 웹서비스

Github를 통해 사용자의 클라이언트 기계(PC)에서 직접 사용자의 github 계정안의 repository에

파일을 올려놓거나 다운 받을 수 있다.

Git set up

Git (home) directory - 여러 directory에서 git을 실행 가능

각각의 directory는 독립적인 git 소프트웨어의 홈

sudo apt-get install git // git-all

Git init git-home

mkdir git-home

cd git-home

git init // git 초기화

.git/config 파일

git --local <verb> // --local이 default

Git commands

$ git --help : 도움말

$ git init // local git repository를 초기화, .git 폴더 생성

$ git add <file> // staging, Index에 file들을 추가

$ git status // working tree의 상태를 확인

$ git commit // index에서 local repository로 commit 변경

// git commit -m

$ git config --global user.name "Lee-Dongwook"

$ git config --global user.email "abcdef@abcdef"

branch 와 merge

$ git branch <branch name>

// 옆 가지를 만들어 기존 문서를 수정하여 저장

// commit한 그 어떤것도 복구는 할 수 있으나 branch를 사용한 수정을 습관할 것

$ git merge

// 수정본을 원본으로

//commit object = 현재 commit의 메타 데이터 + pointer to previous commit object

// git branch : commit들 사이에 이동할 수 있는 포인터

// 최초로 commit하면 default로 master branch 생성, 이후 git branch 명령으로 새로운 수정본을 가리키는

브랜치 이름으로 브랜치 생성

// git은 HEAD라는 이름의 포인터를 사용하며 현재 작업중인 local branch를 가리킴

$git checkout <branch name> //HEAD 포인터를 이동

Git branch - fast forward / 3 way merge

commit / Merge / Rebase

Git Integration to Vs Code

  • VS code에서는 terminal 에서 git 명령어를 사용하여 접근이 가능하다.
  • MS가 github를 인수, VS code는 MS의 freeware

 


#github #git

Remote git server (repository)

  • Git은 open source project로 remote git server도 설치하여 운영 가능
  • 최근에는 repository외에 CI/CD 기능까지 Github에 합쳐진 유료 DevOps 도구로 발전

Github = one of Git remote repo services

Git clone

  • Remote repository에는 변경 없이 local repository로 복제해 가져오는것

Git fetch origin

  • 동기화 (merge는 동기화의 요건이 아님)
  • Fetch는 commit point 오브젝트와 실제 data를 local repositroy로 가져옴
  • 그러나 아직 local working directory에는 반영 X
  • Merge 명령을 통하여 local working dirctory에 반영
  • Pull = Fetch + Merge

Github

- Clone : remote repo에서 자신의 local repo로 복제

- Fork : 다른 github 계정의 repo를 자신의 계정으로 복사 ( git 명령이 아님)

다른 사람 끼리 : Fork , Pull

본인 : push , pull , clone

 

728x90

'CS(Computer Science) > 소프트웨어공학' 카테고리의 다른 글

6. Network Virtualization  (0) 2023.02.06
5. Docker3  (4) 2023.02.06
4. Docker2  (0) 2023.02.06
3. Docker  (0) 2023.02.06
1.SW development models  (0) 2023.02.06