You will be fine

<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 를 사용

  • 현재프로젝트를 복사할 필요없이 브랜치만 옮기는 것으로 다른 작업으로 가져갈 수 있다.

  • 브랜치는 이전의 작업, 파일에 영향을 주지 않으면서 새로운 작업을 할 수 있는 기능이다.

  • 순서

    1. 브랜치 생성
    2. 브랜치 체크아웃
    3. 작업 진행
    4. 브랜치에 작업내용 반영
    5. master 브랜치로 체크아웃
    6. 작업한 브랜치 병합
    목표 명령어
    브랜치 추가 git branch 이름
    브랜치 변경 git checkout 브랜치이름
    브랜치 병합 git merge 브랜치이름

3.9 .gitignore : 불필요한 파일 및 폴더 뭇시

  • 부수적인 다양한 파일들이 생기는데 추적할 필요가 없는 로그 파일 등까지 git을 사용할 필요가 없다.
  • 이때 불필요 파일을 무시할때 사용하는 것이 .gitignore 이다.
  • 운영체제나 IDE에 맞춰 자동으로 생성해주는 www.gitignore.com 사이트가 있다.
  • 윈도우는 .으로 생기는 폴더를 만들 수 없기 때문에 bash셀을 이용한다.

3.10 충돌해결

  • merge하는 브랜치끼리 충돌이 발생하면 commit이 이루어지지 않으며 (브렌치이름|MERGING)이런 식으로 상태가 변화한다.

  • merge 실패한 파일은 어디서 실패했는지 표시가 나타난다.

      <<<<<< HEAD 시작
      hello world
      =======
      helle world
      >>>>>> Branch이름
  • 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 : 로컬저장소와 원격저장소를 연결하기

  • cloneremote의 차이는 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

활동하기