<Git> 1. Git GitHub 입문 - part1
by BFine반응형
Git Github 입문
공부하기전에…
프로젝트를 하면서 git 쓰긴 했지만 되게 할때마다 찾아보는 경향이 있어서 확실하게 정리 해야겠다는 생각이 들었다. Git Github 입문 이 책을 보면서 필요한 부분들을 정리해서 여기에 기록해본다.
Chapter 1 - 버전관리 시스템과 Git
1.0 개요
- 버전관리란 쉽게 말하면 데이터의 과거와 현재 상태를 관리 하는 것이다.
1.1 버전관리 이야기
- 특별한 도구없이 할 수 있는 버전관리란 매시간or작업 별로 파일의 사본을 만드는 것이다.
1.2 버전관리 시스템이란
- 영어로는 VCS라 하며 Version Control System의 약자이다.
- 우리가 직접 해야하는 사본, 보존, 복원을 도와주는 도구이다.
- 또한 다른 사람들과 함께 할때는 상태를 똑같게 유지 하는 기능을 한다.
1.3.1 클라이언트-서버 모델
- 하나의 중앙 저장소를 공유한 후 개발자는 원하는 부분이나 전체 를 로컬에 저장하여 작업하는 형태
- 중앙 저장소에서 프로젝트 관리의 모든 것을 처리한다.
- ex) SVN
1.3.2 분산모델
- 모든 개발자가 전체 저장소의 사본을 로컬에 저장소를 갖고 작업하는 형태
- ex) Git
1.4.1 Git
- 분산환경에서 빠르고 단순하게 동시 다발적인 브랜치 작업 을 수행하는 것을 목표로 함
1.4.2 Git의 특징
- master 저장소 서버와 클라이언트 저장소(master 사본)로 구성되어있다.
- 서버든 클라이언트든 완전한 저장소를 가지고 있음
1.5 Git으로 협업해야 할 이유
- 협업시 모두가 동일 버전의 프로젝트 리소스를 사용하기는 어렵다.(누구를 기준으로 맞추지…)
- 2명이상이 같은 파일을 작업할 경우 문제가 발생
Chapter 3 - 로컬 저장소 사용을 위한 Git 기본
3.1 기본명령어
프로젝트에 실험적으로 기능을 추가하거나 기능을 수정해야 할 때 branch 를 사용
현재프로젝트를 복사할 필요없이 브랜치만 옮기는 것으로 다른 작업으로 가져갈 수 있다.
브랜치는 이전의 작업, 파일에 영향을 주지 않으면서 새로운 작업을 할 수 있는 기능이다.
-
순서
- 브랜치 생성
- 브랜치 체크아웃
- 작업 진행
- 브랜치에 작업내용 반영
- master 브랜치로 체크아웃
- 작업한 브랜치 병합
목표 명령어 브랜치 추가 git branch 이름 브랜치 변경 git checkout 브랜치이름 브랜치 병합 git merge 브랜치이름
3.9 .gitignore : 불필요한 파일 및 폴더 뭇시
- 부수적인 다양한 파일들이 생기는데 추적할 필요가 없는 로그 파일 등까지 git을 사용할 필요가 없다.
- 이때 불필요 파일을 무시할때 사용하는 것이
.gitignore
이다. - 운영체제나 IDE에 맞춰 자동으로 생성해주는 www.gitignore.com 사이트가 있다.
- 윈도우는 .으로 생기는 폴더를 만들 수 없기 때문에 bash셀을 이용한다.
3.10 충돌해결
merge
하는 브랜치끼리 충돌이 발생하면commit
이 이루어지지 않으며 (브렌치이름|MERGING)이런 식으로 상태가 변화한다.-
merge
실패한 파일은 어디서 실패했는지 표시가 나타난다.
git이 어떻게 처리해야 하는지 모르기 때문에 어떻게 할 것인지 사용자에게 일임한다.
충돌을 해결후에 다시 commit을 하면 (브렌치이름|MERGING)가 다시 브랜치이름으로 돌아오게된다.
3.11 git log : 로그 기록보기
git log --graph
는 branch, merge의 내역을 아스키 그래프로 보여준다.git log --stat
각 commit에 대한 수정파일의 내역정보를 보여준다.
Chapter 4 - 원격 저장소와 Github
4.1 Github
- github는 여러가지 프로젝트 진행을 원할하게 하는 도구도 함께 제공하기 때문에 프로젝트 종합관리 서비스 에 가깝다.
- 개발뿐만 아니라 여러 활동에도 사용할 수 있는 협업 플랫폼 이다.
4.5 포크
- 포크는 다른 사람의 원격저장소를 내 계정으로 복사 하는 방법이다.
- 개발에서 현재 프로세스를 나눠 세로운 프로세스를 만드는 명칭인 포크와 의미상 비슷하다.
4.6 Github 원격저장소의 구조
- 저장소 정보의 releases는 원격저장소의 태그 수를 나타낸다. 주로 특정버전에 표식을 주고 싶을때 사용한다.
Chapter 5 - 원격 저장소와 Git
5.0 관리 시스템
분산 버전 관리 시스템은 원격저장소와 로컬저장소 사이를 얼마나 효율적으로 관리 할 것이냐가 주 목적이다.
-
이를 위해 두 저장소 사이에서 소통하는 기능을 제공한다.
명령어 기능 git remote 로컬저장소와 특정원격저장소를 연결 git fetch 원격저장소의 내용을 가져옴
5.1 git clone : 원격 저장소의 내용을 로컬 저장소로 가져오기
- Github 안에서 원격저장소를 복사하는 작업은 포크, 로컬 환경으로 복사하는 작업은
clone
5.2 git remote : 로컬저장소와 원격저장소를 연결하기
clone
과remote
의 차이는clone
은 독립적인 사본을 만들지만remote
은 연결된 사본을 만든다.remote
는 연결상태확인, 원격주소를 줄여주는 기능도 한다.
5.4 git fetch와 git pull : 원격저장소와 로컬 저장소의 간격 메꾸기
- 내가 로컬에서 작업하는 중에 협업자가 원격저장소를 먼저 변경할 수도 있다. 이경우는
push
가 되지않는다. push
하기 위해서는 로컬저장소의commit
들을 원격저장소와 맞추는 작업인 패치를 필요로한다.pull
명령은 저장소의 정보를 가져오는 동시에 로컬 브랜치에 병합까지 수행하는 것이다.(fetch
+merge
)- 이 방법의 단점은 어떤 내용이 바뀌게 되었는지 세세한 부분들을 알수가 없어진다.
fetch
는 원격 저장소의 커밋을 가져오지만 병합이 바로 수행되지는 않는다.diff
은 로컬저장소의 브랜치와 원격 저장소 브랜치 사이에 어떤 차이점이 있는지 알아보는 명령이다.
출처
반응형
'공부(2018~2019) - 스킨변경전 > Git' 카테고리의 다른 글
<Git> 2. Git GitHub 입문 - part3 (0) | 2019.05.03 |
---|
블로그의 정보
57개월 BackEnd
BFine