■ Git 이란
Git은 분산형 버전 관리 시스템(Version Control System)의 한 종류로서 파일들의 복사,저장,백업 등의 모든 작업을 버전 관리라고 부른다
● 버전 관리
파일 내 변화를 기록했다가 나중에 특정시점의 버전을 다시 꺼내올 수 있는 시스템을 버전관리 시스템이라고한다
- 시간에 따라 수정 내용을 비교해 볼 수 있다
- 파일을 잃어버리거나 잘못 고쳤을 경우에 쉽게 복구할 수 있다
- 누가, 언제, 어떤 문제가 일어났는지 등을 알 수 있다
- 각 파일을 이전 상태로 되돌릴 수 있다
● 필요성
- 다른 개발자들과 협업을 진행하면서 번거로운 과정 없이도 손 쉽게 코드를 주고 받는 병렬적인 작업을 할 수 있다
- 확인 하지 않고 동시에 작업 하거나 겹치는 상황이 나타나는 문제 발생을 사전에 방지해준다 (충돌 최소화)
● Git 작동구조
내가 작업한것들을(Working Directory)에서 원격저장소(Remote Repository)로 push
원격저장소(Remote Repository)에서 내가 작업하는(Working Directory)로 pull
● Git 기본용어
- Working Directory : 파일 수정, 저장 등의 작업을 하는 작업자의 시점
- Staging Area : 저장소에 커밋하기전에 준비하는 위치로서 로컬 스테이지에 올려둔 파일은 원격 저장소에 커밋할 수 있다
- checkout : 이전 버전의 작업을 불러오는 것을 말한다
- Commit : 현재 변경된 작업 상태를 점검 및 확정하여 저장소에 저장하는 작업
- Head : 현재 작업중인 Branch를 가르킨다
- Branch : 분기점을 의미하며 작업을 할때에 Branch에서 작업을 한 후 완전하다 싶을때 병합하여 작업한다
- Merge : 다른 Branch의 내용을 현재 Branch로 가져와 병합하는 작업을 말한다
■ Git과 Github
Git은 로컬에서 버전 관리 시스템을 운영하는 방식이고 Github는 Git을 사용하는 프로젝트를 지원하고 개발자들의 버전 제어 및 협업이 용이하고 오픈 소스를 공유할 수 있는 저장소이다
● Git 과 Remote Repository 연결
git remote -v | 현재 원격저장소의 목록 확인 |
git remote rename 기존이름 변경할이름 | 원격저장소 이름 변경 |
git remote remove 이름 | 해당 원격 저장소 제거 |
git remote --help | 옵션 종류 보기 |
git remote add 이름 url | 원격저장소와 연결 |
● git push
현재 branch에서 commit 할 것을 저장소에 업로드하는 명령어이며 origin은 원격주소이고 master는 push 할 브랜치이다
● git pull
원격 저장소의 내용을 가져와서 현재 브랜치와 merge 해주는 작업으로 pull을 하게 되면 원격저장소 커밋과 동기화를 하고 해당 커밋을 merge한다
● git fetch
원격 저장소의 branch와 commit들을 로컬 저장소와 동기화 하되 merge는 하지 않는다. 옵션을 생략하면 모든 원격 저장소에서 모든 branch를 가지고 온다
● 협업 시 주의사항
같이 팀원과 협업 작업을 할 경우에 먼저 git fetch와 git status를 통해 pull을 해야하는 내용이 있는지 먼저 확인하는 것이 중요하다 pull 할 내용이 있는 경우에, pull을 하지않고 로컬에서 작업을 하게되면 작업 후 push를 할 수 없다
Today short review
git에 대해 기본적인것들을 알아보았고 협업을 할때에 충돌방지를 위해 fetch와 status을 사용하여 먼저 확인을 해보는 습관을 가지면 좋을거 같다. 그외에 자주 쓰이는 git 명령어도 알아봐야겠다