- 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
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
'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 |